API Reference

RESTful API for MatterFirst: legal practice management. All endpoints require Bearer token authentication via API key. Responses follow JSON:API-like conventions.


Authentication

All API endpoints require a Bearer token passed in the Authorization header. You can generate API keys from your organization settings.

Include the token as a Bearer authorization header on all requests. Requests without valid authentication will return a 401 status code.

Example request
curl -H "Authorization: Bearer {YOUR_API_KEY}" \
     https://app.matterfirst.com.au/api/v1/matters

Errors

The API returns standard HTTP status codes. Error responses include a JSON body with an errors key describing what went wrong.

  • Status
    400
    Description
    Bad Request: the request was malformed
  • Status
    401
    Description
    Unauthorized: invalid or missing API key
  • Status
    403
    Description
    Forbidden: insufficient permissions
  • Status
    404
    Description
    Not Found: resource does not exist
  • Status
    422
    Description
    Unprocessable Entity: validation errors
  • Status
    429
    Description
    Rate Limited: too many requests
  • Status
    500
    Description
    Internal Server Error
Error response
{
  "errors": {
    "detail": "Resource not found"
  }
}

Pagination

List endpoints support pagination via page[number] and page[size] query parameters.

  • Name
    total
    Type
    integer
    Description
    Total number of records.
  • Name
    page
    Type
    integer
    Description
    Current page number.
  • Name
    page_size
    Type
    integer
    Description
    Number of records per page.
  • Name
    total_pages
    Type
    integer
    Description
    Total number of pages.
Paginated response
{
  "data": [],
  "meta": {
    "total": 100,
    "page": 1,
    "page_size": 20,
    "total_pages": 5
  }
}

Audit Log

GET /api/v1/audit-log

List audit log entries

Parameters

  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    resource_type
    Type
    string
    In
    in query
    Description
  • Name
    action
    Type
    string
    In
    in query
    Description
  • Name
    user_id
    Type
    string (uuid)
    In
    in query
    Description
200 Audit log entries
{
  "data": [
    {
      "attributes": {
        "action": "create",
        "changed_fields": [
          "string"
        ],
        "inserted_at": "2026-01-01T00:00:00Z",
        "metadata": {},
        "resource_id": "00000000-0000-0000-0000-000000000000",
        "resource_type": "string",
        "user_id": "00000000-0000-0000-0000-000000000000"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "audit_logs"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
GET /api/v1/audit-log/{resource_type}/{resource_id}

Get audit log entries for a specific resource

Parameters

  • Name
    resource_type
    Type
    string
    required
    In
    in path
    Description
  • Name
    resource_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
200 Audit log entries for resource
{
  "data": [
    {
      "attributes": {
        "action": "create",
        "changed_fields": [
          "string"
        ],
        "inserted_at": "2026-01-01T00:00:00Z",
        "metadata": {},
        "resource_id": "00000000-0000-0000-0000-000000000000",
        "resource_type": "string",
        "user_id": "00000000-0000-0000-0000-000000000000"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "audit_logs"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}

Automation Actions

GET /api/v1/automations/{automation_id}/actions

List actions for an automation

Parameters

  • Name
    automation_id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Automation action list
{
  "data": [
    {
      "attributes": {
        "action_type": "string",
        "automation_id": "00000000-0000-0000-0000-000000000000",
        "conditions": [
          {
            "field": "string",
            "operator": "equals",
            "type": "field",
            "value": {}
          }
        ],
        "configuration": {},
        "continue_on_error": false,
        "delay_seconds": 0,
        "inserted_at": "2026-01-01T00:00:00Z",
        "position": 0,
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "automation_actions"
    }
  ],
  "meta": {
    "count": 0,
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
POST /api/v1/automations/{automation_id}/actions

Create an automation action

Parameters

  • Name
    automation_id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/automations/{automation_id}/actions
{
  "data": {
    "attributes": {
      "action_type": "string",
      "configuration": {},
      "continue_on_error": false,
      "delay_seconds": 0,
      "position": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created action
{
  "data": {
    "attributes": {
      "action_type": "string",
      "automation_id": "00000000-0000-0000-0000-000000000000",
      "conditions": [
        {
          "field": "string",
          "operator": "equals",
          "type": "field",
          "value": {}
        }
      ],
      "configuration": {},
      "continue_on_error": false,
      "delay_seconds": 0,
      "inserted_at": "2026-01-01T00:00:00Z",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "automation_actions"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PUT /api/v1/automations/{automation_id}/actions/{id}

Update an automation action

Parameters

  • Name
    automation_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/automations/{automation_id}/actions/{id}
{
  "data": {
    "attributes": {
      "action_type": "string",
      "configuration": {},
      "continue_on_error": false,
      "delay_seconds": 0,
      "position": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated action
{
  "data": {
    "attributes": {
      "action_type": "string",
      "automation_id": "00000000-0000-0000-0000-000000000000",
      "conditions": [
        {
          "field": "string",
          "operator": "equals",
          "type": "field",
          "value": {}
        }
      ],
      "configuration": {},
      "continue_on_error": false,
      "delay_seconds": 0,
      "inserted_at": "2026-01-01T00:00:00Z",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "automation_actions"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/automations/{automation_id}/actions/{id}

Update an automation action

Parameters

  • Name
    automation_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/automations/{automation_id}/actions/{id}
{
  "data": {
    "attributes": {
      "action_type": "string",
      "configuration": {},
      "continue_on_error": false,
      "delay_seconds": 0,
      "position": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated action
{
  "data": {
    "attributes": {
      "action_type": "string",
      "automation_id": "00000000-0000-0000-0000-000000000000",
      "conditions": [
        {
          "field": "string",
          "operator": "equals",
          "type": "field",
          "value": {}
        }
      ],
      "configuration": {},
      "continue_on_error": false,
      "delay_seconds": 0,
      "inserted_at": "2026-01-01T00:00:00Z",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "automation_actions"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/automations/{automation_id}/actions/{id}

Delete an automation action

Parameters

  • Name
    automation_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/automations/{automation_id}/actions/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/automations/{automation_id}/actions/{id}

Automations

GET /api/v1/automations

List automations

200 Automation list
{
  "data": [
    {
      "attributes": {
        "actions": [
          {
            "action_type": "string",
            "automation_id": "00000000-0000-0000-0000-000000000000",
            "conditions": [
              {
                "field": "string",
                "operator": "equals",
                "type": "field",
                "value": {}
              }
            ],
            "configuration": {},
            "continue_on_error": false,
            "delay_seconds": 0,
            "inserted_at": "2026-01-01T00:00:00Z",
            "position": 0,
            "updated_at": "2026-01-01T00:00:00Z"
          }
        ],
        "conditions": [
          {
            "field": "string",
            "operator": "equals",
            "type": "field",
            "value": {}
          }
        ],
        "description": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_active": false,
        "matter_type_id": "00000000-0000-0000-0000-000000000000",
        "name": "string",
        "position": 0,
        "trigger_config": {},
        "trigger_type": "string",
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "automations"
    }
  ],
  "meta": {
    "count": 0,
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
POST /api/v1/automations

Create an automation

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/automations
{
  "data": {
    "attributes": {
      "conditions": [
        {
          "field": "string",
          "operator": "equals",
          "type": "field",
          "value": {}
        }
      ],
      "description": "string",
      "is_active": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "position": 0,
      "trigger_config": {},
      "trigger_type": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created automation
{
  "data": {
    "attributes": {
      "actions": [
        {
          "action_type": "string",
          "automation_id": "00000000-0000-0000-0000-000000000000",
          "conditions": [
            {
              "field": "string",
              "operator": "equals",
              "type": "field",
              "value": {}
            }
          ],
          "configuration": {},
          "continue_on_error": false,
          "delay_seconds": 0,
          "inserted_at": "2026-01-01T00:00:00Z",
          "position": 0,
          "updated_at": "2026-01-01T00:00:00Z"
        }
      ],
      "conditions": [
        {
          "field": "string",
          "operator": "equals",
          "type": "field",
          "value": {}
        }
      ],
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "position": 0,
      "trigger_config": {},
      "trigger_type": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "automations"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/automations/{id}

Get an automation

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Automation
{
  "data": {
    "attributes": {
      "actions": [
        {
          "action_type": "string",
          "automation_id": "00000000-0000-0000-0000-000000000000",
          "conditions": [
            {
              "field": "string",
              "operator": "equals",
              "type": "field",
              "value": {}
            }
          ],
          "configuration": {},
          "continue_on_error": false,
          "delay_seconds": 0,
          "inserted_at": "2026-01-01T00:00:00Z",
          "position": 0,
          "updated_at": "2026-01-01T00:00:00Z"
        }
      ],
      "conditions": [
        {
          "field": "string",
          "operator": "equals",
          "type": "field",
          "value": {}
        }
      ],
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "position": 0,
      "trigger_config": {},
      "trigger_type": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "automations"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/automations/{id}

Update an automation

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/automations/{id}
{
  "data": {
    "attributes": {
      "conditions": [
        {
          "field": "string",
          "operator": "equals",
          "type": "field",
          "value": {}
        }
      ],
      "description": "string",
      "is_active": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "position": 0,
      "trigger_config": {},
      "trigger_type": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated automation
{
  "data": {
    "attributes": {
      "actions": [
        {
          "action_type": "string",
          "automation_id": "00000000-0000-0000-0000-000000000000",
          "conditions": [
            {
              "field": "string",
              "operator": "equals",
              "type": "field",
              "value": {}
            }
          ],
          "configuration": {},
          "continue_on_error": false,
          "delay_seconds": 0,
          "inserted_at": "2026-01-01T00:00:00Z",
          "position": 0,
          "updated_at": "2026-01-01T00:00:00Z"
        }
      ],
      "conditions": [
        {
          "field": "string",
          "operator": "equals",
          "type": "field",
          "value": {}
        }
      ],
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "position": 0,
      "trigger_config": {},
      "trigger_type": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "automations"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/automations/{id}

Update an automation

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/automations/{id}
{
  "data": {
    "attributes": {
      "conditions": [
        {
          "field": "string",
          "operator": "equals",
          "type": "field",
          "value": {}
        }
      ],
      "description": "string",
      "is_active": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "position": 0,
      "trigger_config": {},
      "trigger_type": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated automation
{
  "data": {
    "attributes": {
      "actions": [
        {
          "action_type": "string",
          "automation_id": "00000000-0000-0000-0000-000000000000",
          "conditions": [
            {
              "field": "string",
              "operator": "equals",
              "type": "field",
              "value": {}
            }
          ],
          "configuration": {},
          "continue_on_error": false,
          "delay_seconds": 0,
          "inserted_at": "2026-01-01T00:00:00Z",
          "position": 0,
          "updated_at": "2026-01-01T00:00:00Z"
        }
      ],
      "conditions": [
        {
          "field": "string",
          "operator": "equals",
          "type": "field",
          "value": {}
        }
      ],
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "position": 0,
      "trigger_config": {},
      "trigger_type": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "automations"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/automations/{id}

Delete an automation

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/automations/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/automations/{id}

Calendar Events

GET /api/v1/calendar-events

List calendar events

Parameters

  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
  • Name
    start_date
    Type
    string (date)
    In
    in query
    Description
  • Name
    end_date
    Type
    string (date)
    In
    in query
    Description
200 Calendar event list
{
  "data": [
    {
      "attributes": {
        "attendee_ids": [
          "00000000-0000-0000-0000-000000000000"
        ],
        "color": "string",
        "contact_ids": [
          "00000000-0000-0000-0000-000000000000"
        ],
        "created_by_id": "00000000-0000-0000-0000-000000000000",
        "description": "string",
        "end_at": "2026-01-01T00:00:00Z",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_all_day": false,
        "location": "string",
        "matter_id": "00000000-0000-0000-0000-000000000000",
        "start_at": "2026-01-01T00:00:00Z",
        "title": "string",
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "calendar_events"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/calendar-events

Create a calendar event

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/calendar-events
{
  "data": {
    "attributes": {
      "attendee_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "color": "string",
      "contact_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "description": "string",
      "end_at": "2026-01-01T00:00:00Z",
      "is_all_day": false,
      "location": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "start_at": "2026-01-01T00:00:00Z",
      "title": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created
{
  "data": {
    "attributes": {
      "attendee_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "color": "string",
      "contact_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "end_at": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_all_day": false,
      "location": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "start_at": "2026-01-01T00:00:00Z",
      "title": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "calendar_events"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/calendar-events/{id}

Get a calendar event

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Calendar event
{
  "data": {
    "attributes": {
      "attendee_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "color": "string",
      "contact_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "end_at": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_all_day": false,
      "location": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "start_at": "2026-01-01T00:00:00Z",
      "title": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "calendar_events"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/calendar-events/{id}

Update a calendar event

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/calendar-events/{id}
{
  "data": {
    "attributes": {
      "attendee_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "color": "string",
      "contact_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "description": "string",
      "end_at": "2026-01-01T00:00:00Z",
      "is_all_day": false,
      "location": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "start_at": "2026-01-01T00:00:00Z",
      "title": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "attendee_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "color": "string",
      "contact_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "end_at": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_all_day": false,
      "location": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "start_at": "2026-01-01T00:00:00Z",
      "title": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "calendar_events"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/calendar-events/{id}

Update a calendar event

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/calendar-events/{id}
{
  "data": {
    "attributes": {
      "attendee_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "color": "string",
      "contact_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "description": "string",
      "end_at": "2026-01-01T00:00:00Z",
      "is_all_day": false,
      "location": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "start_at": "2026-01-01T00:00:00Z",
      "title": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "attendee_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "color": "string",
      "contact_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "end_at": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_all_day": false,
      "location": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "start_at": "2026-01-01T00:00:00Z",
      "title": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "calendar_events"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/calendar-events/{id}

Delete a calendar event

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/calendar-events/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/calendar-events/{id}

Contact Types

GET /api/v1/contact-types

List contact types

200 Contact type list
{
  "data": [
    {
      "attributes": {
        "code": "string",
        "color": "string",
        "icon": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_active": false,
        "is_system": false,
        "name": "string",
        "position": 0,
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "contact_types"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/contact-types

Create a contact type

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/contact-types
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "icon": "string",
      "is_active": false,
      "name": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "contact_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/contact-types/{id}

Get a contact type

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Contact type
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "contact_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/contact-types/{id}

Update a contact type

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/contact-types/{id}
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "icon": "string",
      "is_active": false,
      "name": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "contact_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/contact-types/{id}

Update a contact type

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/contact-types/{id}
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "icon": "string",
      "is_active": false,
      "name": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "contact_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
POST /api/v1/contact-types/{id}/deactivate

Deactivate a contact type

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Deactivated
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "contact_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}

Contacts

GET /api/v1/contacts

List contacts

Parameters

  • Name
    filter
    Type
    object
    In
    in query
    Description
    Field filters, e.g. `filter[email]=*@acme.com`. Also supports `filter[lead_id]=<uuid>` to return only the contacts linked to that lead.
  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
200 Contact list
{
  "data": [
    {
      "attributes": {
        "abn": "string",
        "acn": "string",
        "address_line_1": "string",
        "address_line_2": "string",
        "avatar_url": "string",
        "company_name": "string",
        "contact_type_id": "00000000-0000-0000-0000-000000000000",
        "country": "string",
        "custom_fields": {},
        "date_of_birth": "2026-01-01",
        "email": "string",
        "first_name": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_archived": false,
        "is_company": false,
        "last_name": "string",
        "mobile": "string",
        "notes": "string",
        "phone": "string",
        "position": "string",
        "postcode": "string",
        "preferred_name": "string",
        "source": "string",
        "state": "string",
        "suburb": "string",
        "tags": [
          "string"
        ],
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "contacts"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/contacts

Create a contact

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/contacts
{
  "data": {
    "attributes": {
      "abn": "string",
      "acn": "string",
      "address_line_1": "string",
      "address_line_2": "string",
      "company_name": "string",
      "contact_type_id": "00000000-0000-0000-0000-000000000000",
      "country": "string",
      "date_of_birth": "2026-01-01",
      "email": "string",
      "first_name": "string",
      "is_company": false,
      "last_name": "string",
      "mobile": "string",
      "notes": "string",
      "phone": "string",
      "postcode": "string",
      "preferred_name": "string",
      "state": "string",
      "suburb": "string",
      "tags": [
        "string"
      ]
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created contact
{
  "data": {
    "attributes": {
      "abn": "string",
      "acn": "string",
      "address_line_1": "string",
      "address_line_2": "string",
      "avatar_url": "string",
      "company_name": "string",
      "contact_type_id": "00000000-0000-0000-0000-000000000000",
      "country": "string",
      "custom_fields": {},
      "date_of_birth": "2026-01-01",
      "email": "string",
      "first_name": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_archived": false,
      "is_company": false,
      "last_name": "string",
      "mobile": "string",
      "notes": "string",
      "phone": "string",
      "position": "string",
      "postcode": "string",
      "preferred_name": "string",
      "source": "string",
      "state": "string",
      "suburb": "string",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "contacts"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/contacts/{id}

Get a contact

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Contact
{
  "data": {
    "attributes": {
      "abn": "string",
      "acn": "string",
      "address_line_1": "string",
      "address_line_2": "string",
      "avatar_url": "string",
      "company_name": "string",
      "contact_type_id": "00000000-0000-0000-0000-000000000000",
      "country": "string",
      "custom_fields": {},
      "date_of_birth": "2026-01-01",
      "email": "string",
      "first_name": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_archived": false,
      "is_company": false,
      "last_name": "string",
      "mobile": "string",
      "notes": "string",
      "phone": "string",
      "position": "string",
      "postcode": "string",
      "preferred_name": "string",
      "source": "string",
      "state": "string",
      "suburb": "string",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "contacts"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/contacts/{id}

Update a contact

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/contacts/{id}
{
  "data": {
    "attributes": {
      "abn": "string",
      "acn": "string",
      "address_line_1": "string",
      "address_line_2": "string",
      "company_name": "string",
      "contact_type_id": "00000000-0000-0000-0000-000000000000",
      "country": "string",
      "date_of_birth": "2026-01-01",
      "email": "string",
      "first_name": "string",
      "is_company": false,
      "last_name": "string",
      "mobile": "string",
      "notes": "string",
      "phone": "string",
      "postcode": "string",
      "preferred_name": "string",
      "state": "string",
      "suburb": "string",
      "tags": [
        "string"
      ]
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated contact
{
  "data": {
    "attributes": {
      "abn": "string",
      "acn": "string",
      "address_line_1": "string",
      "address_line_2": "string",
      "avatar_url": "string",
      "company_name": "string",
      "contact_type_id": "00000000-0000-0000-0000-000000000000",
      "country": "string",
      "custom_fields": {},
      "date_of_birth": "2026-01-01",
      "email": "string",
      "first_name": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_archived": false,
      "is_company": false,
      "last_name": "string",
      "mobile": "string",
      "notes": "string",
      "phone": "string",
      "position": "string",
      "postcode": "string",
      "preferred_name": "string",
      "source": "string",
      "state": "string",
      "suburb": "string",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "contacts"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/contacts/{id}

Update a contact

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/contacts/{id}
{
  "data": {
    "attributes": {
      "abn": "string",
      "acn": "string",
      "address_line_1": "string",
      "address_line_2": "string",
      "company_name": "string",
      "contact_type_id": "00000000-0000-0000-0000-000000000000",
      "country": "string",
      "date_of_birth": "2026-01-01",
      "email": "string",
      "first_name": "string",
      "is_company": false,
      "last_name": "string",
      "mobile": "string",
      "notes": "string",
      "phone": "string",
      "postcode": "string",
      "preferred_name": "string",
      "state": "string",
      "suburb": "string",
      "tags": [
        "string"
      ]
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated contact
{
  "data": {
    "attributes": {
      "abn": "string",
      "acn": "string",
      "address_line_1": "string",
      "address_line_2": "string",
      "avatar_url": "string",
      "company_name": "string",
      "contact_type_id": "00000000-0000-0000-0000-000000000000",
      "country": "string",
      "custom_fields": {},
      "date_of_birth": "2026-01-01",
      "email": "string",
      "first_name": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_archived": false,
      "is_company": false,
      "last_name": "string",
      "mobile": "string",
      "notes": "string",
      "phone": "string",
      "position": "string",
      "postcode": "string",
      "preferred_name": "string",
      "source": "string",
      "state": "string",
      "suburb": "string",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "contacts"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/contacts/{id}

Delete a contact

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
422 Still referenced
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
POST /api/v1/contacts/{id}/merge

Merge two contacts

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
    Primary contact ID

Request body

  • Name
    field_selections
    Type
    object
    Description
  • Name
    secondary_id
    Type
    string (uuid)
    required
    Description
POST /api/v1/contacts/{id}/merge
{
  "field_selections": {},
  "secondary_id": "00000000-0000-0000-0000-000000000000"
}
200 Merged contact
{
  "data": {
    "attributes": {
      "abn": "string",
      "acn": "string",
      "address_line_1": "string",
      "address_line_2": "string",
      "avatar_url": "string",
      "company_name": "string",
      "contact_type_id": "00000000-0000-0000-0000-000000000000",
      "country": "string",
      "custom_fields": {},
      "date_of_birth": "2026-01-01",
      "email": "string",
      "first_name": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_archived": false,
      "is_company": false,
      "last_name": "string",
      "mobile": "string",
      "notes": "string",
      "phone": "string",
      "position": "string",
      "postcode": "string",
      "preferred_name": "string",
      "source": "string",
      "state": "string",
      "suburb": "string",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "contacts"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Merge error
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Disbursements

GET /api/v1/disbursements

List disbursements

Parameters

  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
200 Disbursement list
{
  "data": [
    {
      "attributes": {
        "amount_cents": 0,
        "category": "string",
        "date": "2026-01-01",
        "description": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "invoice_id": "00000000-0000-0000-0000-000000000000",
        "is_billable": false,
        "matter_id": "00000000-0000-0000-0000-000000000000",
        "receipt_document_id": "00000000-0000-0000-0000-000000000000",
        "status": "string",
        "updated_at": "2026-01-01T00:00:00Z",
        "user_id": "00000000-0000-0000-0000-000000000000"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "disbursements"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/disbursements

Create a disbursement

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/disbursements
{
  "data": {
    "attributes": {
      "amount_cents": 0,
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created
{
  "data": {
    "attributes": {
      "amount_cents": 0,
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_id": "00000000-0000-0000-0000-000000000000",
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "receipt_document_id": "00000000-0000-0000-0000-000000000000",
      "status": "string",
      "updated_at": "2026-01-01T00:00:00Z",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "disbursements"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/disbursements/{id}

Get a disbursement

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Disbursement
{
  "data": {
    "attributes": {
      "amount_cents": 0,
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_id": "00000000-0000-0000-0000-000000000000",
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "receipt_document_id": "00000000-0000-0000-0000-000000000000",
      "status": "string",
      "updated_at": "2026-01-01T00:00:00Z",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "disbursements"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/disbursements/{id}

Update a disbursement

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/disbursements/{id}
{
  "data": {
    "attributes": {
      "amount_cents": 0,
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "amount_cents": 0,
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_id": "00000000-0000-0000-0000-000000000000",
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "receipt_document_id": "00000000-0000-0000-0000-000000000000",
      "status": "string",
      "updated_at": "2026-01-01T00:00:00Z",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "disbursements"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/disbursements/{id}

Update a disbursement

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/disbursements/{id}
{
  "data": {
    "attributes": {
      "amount_cents": 0,
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "amount_cents": 0,
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_id": "00000000-0000-0000-0000-000000000000",
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "receipt_document_id": "00000000-0000-0000-0000-000000000000",
      "status": "string",
      "updated_at": "2026-01-01T00:00:00Z",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "disbursements"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/disbursements/{id}

Delete a disbursement

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/disbursements/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/disbursements/{id}

Document Request Templates

GET /api/v1/document-request-templates

List document request templates

Parameters

  • Name
    matter_type_id
    Type
    string (uuid)
    In
    in query
    Description
200 Document request template list
{
  "data": [
    {
      "attributes": {
        "description": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "instructions": "string",
        "is_active": false,
        "items": [
          {
            "name": "string"
          }
        ],
        "matter_type_id": "00000000-0000-0000-0000-000000000000",
        "name": "string",
        "requested_items": "string",
        "subject": "string",
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "document_request_templates"
    }
  ],
  "meta": {
    "count": 0,
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
POST /api/v1/document-request-templates

Create a document request template

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/document-request-templates
{
  "data": {
    "attributes": {
      "description": "string",
      "instructions": "string",
      "is_active": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "requested_items": "string",
      "subject": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created
{
  "data": {
    "attributes": {
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "instructions": "string",
      "is_active": false,
      "items": [
        {
          "name": "string"
        }
      ],
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "requested_items": "string",
      "subject": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "document_request_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/document-request-templates/{id}

Get a document request template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Document request template
{
  "data": {
    "attributes": {
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "instructions": "string",
      "is_active": false,
      "items": [
        {
          "name": "string"
        }
      ],
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "requested_items": "string",
      "subject": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "document_request_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/document-request-templates/{id}

Update a document request template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/document-request-templates/{id}
{
  "data": {
    "attributes": {
      "description": "string",
      "instructions": "string",
      "is_active": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "requested_items": "string",
      "subject": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "instructions": "string",
      "is_active": false,
      "items": [
        {
          "name": "string"
        }
      ],
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "requested_items": "string",
      "subject": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "document_request_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/document-request-templates/{id}

Update a document request template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/document-request-templates/{id}
{
  "data": {
    "attributes": {
      "description": "string",
      "instructions": "string",
      "is_active": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "requested_items": "string",
      "subject": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "instructions": "string",
      "is_active": false,
      "items": [
        {
          "name": "string"
        }
      ],
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "requested_items": "string",
      "subject": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "document_request_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/document-request-templates/{id}

Delete a document request template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
409 Template is in use
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Document Requests

GET /api/v1/document-requests

List secure document requests

Parameters

  • Name
    filter
    Type
    object
    In
    in query
    Description
  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
200 Document request list
{
  "data": [
    {
      "attributes": {
        "closed_at": "2026-01-01T00:00:00Z",
        "completed_at": "2026-01-01T00:00:00Z",
        "contact_id": "00000000-0000-0000-0000-000000000000",
        "email_id": "00000000-0000-0000-0000-000000000000",
        "expires_at": "2026-01-01T00:00:00Z",
        "folder_id": "00000000-0000-0000-0000-000000000000",
        "inserted_at": "2026-01-01T00:00:00Z",
        "instructions": "string",
        "items": [
          {
            "description": "string",
            "id": "00000000-0000-0000-0000-000000000000",
            "name": "string",
            "position": 0,
            "received_at": "2026-01-01T00:00:00Z",
            "status": "string"
          }
        ],
        "matter_id": "00000000-0000-0000-0000-000000000000",
        "recipient_email": "string",
        "recipient_name": "string",
        "requested_by_id": "00000000-0000-0000-0000-000000000000",
        "sent_at": "2026-01-01T00:00:00Z",
        "status": "string",
        "subject": "string",
        "updated_at": "2026-01-01T00:00:00Z",
        "uploads_count": 0
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "document-requests"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/document-requests

Create and send a secure document request

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/document-requests
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "expires_at": "2026-01-01T00:00:00Z",
      "folder_id": "00000000-0000-0000-0000-000000000000",
      "instructions": "string",
      "items": [
        {
          "description": "string",
          "name": "string"
        }
      ],
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "recipient_email": "string",
      "recipient_name": "string",
      "subject": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created document request
{
  "data": {
    "attributes": {
      "closed_at": "2026-01-01T00:00:00Z",
      "completed_at": "2026-01-01T00:00:00Z",
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "email_id": "00000000-0000-0000-0000-000000000000",
      "expires_at": "2026-01-01T00:00:00Z",
      "folder_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "instructions": "string",
      "items": [
        {
          "description": "string",
          "id": "00000000-0000-0000-0000-000000000000",
          "name": "string",
          "position": 0,
          "received_at": "2026-01-01T00:00:00Z",
          "status": "string"
        }
      ],
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "recipient_email": "string",
      "recipient_name": "string",
      "requested_by_id": "00000000-0000-0000-0000-000000000000",
      "sent_at": "2026-01-01T00:00:00Z",
      "status": "string",
      "subject": "string",
      "updated_at": "2026-01-01T00:00:00Z",
      "uploads_count": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "document-requests"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/document-requests/{id}

Get a secure document request

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Document request
{
  "data": {
    "attributes": {
      "closed_at": "2026-01-01T00:00:00Z",
      "completed_at": "2026-01-01T00:00:00Z",
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "email_id": "00000000-0000-0000-0000-000000000000",
      "expires_at": "2026-01-01T00:00:00Z",
      "folder_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "instructions": "string",
      "items": [
        {
          "description": "string",
          "id": "00000000-0000-0000-0000-000000000000",
          "name": "string",
          "position": 0,
          "received_at": "2026-01-01T00:00:00Z",
          "status": "string"
        }
      ],
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "recipient_email": "string",
      "recipient_name": "string",
      "requested_by_id": "00000000-0000-0000-0000-000000000000",
      "sent_at": "2026-01-01T00:00:00Z",
      "status": "string",
      "subject": "string",
      "updated_at": "2026-01-01T00:00:00Z",
      "uploads_count": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "document-requests"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
POST /api/v1/document-requests/{id}/close

Close a secure document request upload link

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Closed document request
{
  "data": {
    "attributes": {
      "closed_at": "2026-01-01T00:00:00Z",
      "completed_at": "2026-01-01T00:00:00Z",
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "email_id": "00000000-0000-0000-0000-000000000000",
      "expires_at": "2026-01-01T00:00:00Z",
      "folder_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "instructions": "string",
      "items": [
        {
          "description": "string",
          "id": "00000000-0000-0000-0000-000000000000",
          "name": "string",
          "position": 0,
          "received_at": "2026-01-01T00:00:00Z",
          "status": "string"
        }
      ],
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "recipient_email": "string",
      "recipient_name": "string",
      "requested_by_id": "00000000-0000-0000-0000-000000000000",
      "sent_at": "2026-01-01T00:00:00Z",
      "status": "string",
      "subject": "string",
      "updated_at": "2026-01-01T00:00:00Z",
      "uploads_count": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "document-requests"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Documents

GET /api/v1/documents

List documents

Parameters

  • Name
    filter
    Type
    object
    In
    in query
    Description
  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
200 Document list
{
  "data": [
    {
      "attributes": {
        "ai_analyzed_at": "2026-01-01T00:00:00Z",
        "ai_classification": "string",
        "ai_summary": "string",
        "archived_at": "2026-01-01T00:00:00Z",
        "archived_by_id": "00000000-0000-0000-0000-000000000000",
        "category": "string",
        "contact_id": "00000000-0000-0000-0000-000000000000",
        "content_type": "string",
        "description": "string",
        "file_size": 0,
        "filename": "string",
        "folder_id": "00000000-0000-0000-0000-000000000000",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_current": false,
        "is_portal_visible": false,
        "matter_id": "00000000-0000-0000-0000-000000000000",
        "retention_expires_at": "2026-01-01T00:00:00Z",
        "tags": [
          "string"
        ],
        "updated_at": "2026-01-01T00:00:00Z",
        "uploaded_by_id": "00000000-0000-0000-0000-000000000000",
        "version": 0
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "documents"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/documents

Register an uploaded document

Second half of the two-step upload flow: registers the document row for a file already PUT to the presigned URL from `POST /documents/uploads`. The upload is verified to exist in storage before the document is created.

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/documents
{
  "data": {
    "attributes": {
      "category": "string",
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "content_type": "string",
      "description": "string",
      "filename": "string",
      "folder_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "tags": [
        "string"
      ],
      "upload_key": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created document
{
  "data": {
    "attributes": {
      "ai_analyzed_at": "2026-01-01T00:00:00Z",
      "ai_classification": "string",
      "ai_summary": "string",
      "archived_at": "2026-01-01T00:00:00Z",
      "archived_by_id": "00000000-0000-0000-0000-000000000000",
      "category": "string",
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "content_type": "string",
      "description": "string",
      "file_size": 0,
      "filename": "string",
      "folder_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_current": false,
      "is_portal_visible": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "retention_expires_at": "2026-01-01T00:00:00Z",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z",
      "uploaded_by_id": "00000000-0000-0000-0000-000000000000",
      "version": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "documents"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
POST /api/v1/documents/uploads

Request a presigned upload URL for a document file

First half of the two-step upload flow. Returns a short-lived presigned URL; PUT the raw file bytes to it (with the returned headers), then register the document with `POST /documents`, passing the returned `upload_key`.

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/documents/uploads
{
  "data": {
    "attributes": {
      "byte_size": 0,
      "content_type": "string",
      "filename": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Presigned upload
{
  "data": {
    "attributes": {
      "expires_in": 0,
      "headers": {},
      "method": "PUT",
      "upload_key": "string",
      "upload_url": "string"
    },
    "type": "document-uploads"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/documents/{id}

Get a document

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Document
{
  "data": {
    "attributes": {
      "ai_analyzed_at": "2026-01-01T00:00:00Z",
      "ai_classification": "string",
      "ai_summary": "string",
      "archived_at": "2026-01-01T00:00:00Z",
      "archived_by_id": "00000000-0000-0000-0000-000000000000",
      "category": "string",
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "content_type": "string",
      "description": "string",
      "file_size": 0,
      "filename": "string",
      "folder_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_current": false,
      "is_portal_visible": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "retention_expires_at": "2026-01-01T00:00:00Z",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z",
      "uploaded_by_id": "00000000-0000-0000-0000-000000000000",
      "version": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "documents"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/documents/{id}

Update a document

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/documents/{id}
{
  "data": {
    "attributes": {
      "category": "string",
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "content_type": "string",
      "description": "string",
      "file_size": 0,
      "filename": "string",
      "folder_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "tags": [
        "string"
      ]
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated document
{
  "data": {
    "attributes": {
      "ai_analyzed_at": "2026-01-01T00:00:00Z",
      "ai_classification": "string",
      "ai_summary": "string",
      "archived_at": "2026-01-01T00:00:00Z",
      "archived_by_id": "00000000-0000-0000-0000-000000000000",
      "category": "string",
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "content_type": "string",
      "description": "string",
      "file_size": 0,
      "filename": "string",
      "folder_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_current": false,
      "is_portal_visible": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "retention_expires_at": "2026-01-01T00:00:00Z",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z",
      "uploaded_by_id": "00000000-0000-0000-0000-000000000000",
      "version": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "documents"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/documents/{id}

Update a document

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/documents/{id}
{
  "data": {
    "attributes": {
      "category": "string",
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "content_type": "string",
      "description": "string",
      "file_size": 0,
      "filename": "string",
      "folder_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "tags": [
        "string"
      ]
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated document
{
  "data": {
    "attributes": {
      "ai_analyzed_at": "2026-01-01T00:00:00Z",
      "ai_classification": "string",
      "ai_summary": "string",
      "archived_at": "2026-01-01T00:00:00Z",
      "archived_by_id": "00000000-0000-0000-0000-000000000000",
      "category": "string",
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "content_type": "string",
      "description": "string",
      "file_size": 0,
      "filename": "string",
      "folder_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_current": false,
      "is_portal_visible": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "retention_expires_at": "2026-01-01T00:00:00Z",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z",
      "uploaded_by_id": "00000000-0000-0000-0000-000000000000",
      "version": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "documents"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/documents/{id}

Delete a document

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/documents/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/documents/{id}
GET /api/v1/documents/{id}/content

Fetch a document's file bytes via a signed link

Serves the raw file for a document to a caller holding a valid signed token minted by `POST /documents/:id/download`. The token authorises this single document for a short window; no API key is required (and none is accepted) on this endpoint: the token is the whole authorization, exactly like a presigned S3 URL.

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    token
    Type
    string
    required
    In
    in query
    Description
GET /api/v1/documents/{id}/content
curl -X GET \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/documents/{id}/content
POST /api/v1/documents/{id}/download

Get a download URL for a document

Returns a short-lived, signed URL for the document's file. For `:s3` storage this is a presigned, expiring S3 GET URL; for `:local` storage it is a signed link to `GET /documents/:id/content` that expires in 900 seconds. Either way the URL carries its own authorization and stops working once it expires. It is not a permanent, public path.

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Download URL
{
  "url": "string"
}
GET /api/v1/documents/{id}/versions

Get version history for a document

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Version history
{
  "data": [
    {
      "attributes": {
        "ai_analyzed_at": "2026-01-01T00:00:00Z",
        "ai_classification": "string",
        "ai_summary": "string",
        "archived_at": "2026-01-01T00:00:00Z",
        "archived_by_id": "00000000-0000-0000-0000-000000000000",
        "category": "string",
        "contact_id": "00000000-0000-0000-0000-000000000000",
        "content_type": "string",
        "description": "string",
        "file_size": 0,
        "filename": "string",
        "folder_id": "00000000-0000-0000-0000-000000000000",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_current": false,
        "is_portal_visible": false,
        "matter_id": "00000000-0000-0000-0000-000000000000",
        "retention_expires_at": "2026-01-01T00:00:00Z",
        "tags": [
          "string"
        ],
        "updated_at": "2026-01-01T00:00:00Z",
        "uploaded_by_id": "00000000-0000-0000-0000-000000000000",
        "version": 0
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "documents"
    }
  ],
  "meta": {
    "count": 0,
    "timestamp": "2026-01-01T00:00:00Z"
  }
}

Email Templates

GET /api/v1/email-templates

List email templates

Parameters

  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
200 Email template list
{
  "data": [
    {
      "attributes": {
        "body_html": "string",
        "body_text": "string",
        "category": "string",
        "editor_design": {},
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_active": false,
        "is_system": false,
        "matter_type_id": "00000000-0000-0000-0000-000000000000",
        "name": "string",
        "step_id": "00000000-0000-0000-0000-000000000000",
        "subject": "string",
        "system_key": "string",
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "email_templates"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/email-templates

Create an email template

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/email-templates
{
  "data": {
    "attributes": {
      "body_html": "string",
      "body_text": "string",
      "category": "string",
      "editor_design": {},
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "step_id": "00000000-0000-0000-0000-000000000000",
      "subject": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created
{
  "data": {
    "attributes": {
      "body_html": "string",
      "body_text": "string",
      "category": "string",
      "editor_design": {},
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "step_id": "00000000-0000-0000-0000-000000000000",
      "subject": "string",
      "system_key": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "email_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/email-templates/{id}

Get an email template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Email template
{
  "data": {
    "attributes": {
      "body_html": "string",
      "body_text": "string",
      "category": "string",
      "editor_design": {},
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "step_id": "00000000-0000-0000-0000-000000000000",
      "subject": "string",
      "system_key": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "email_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/email-templates/{id}

Update an email template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/email-templates/{id}
{
  "data": {
    "attributes": {
      "body_html": "string",
      "body_text": "string",
      "category": "string",
      "editor_design": {},
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "step_id": "00000000-0000-0000-0000-000000000000",
      "subject": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "body_html": "string",
      "body_text": "string",
      "category": "string",
      "editor_design": {},
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "step_id": "00000000-0000-0000-0000-000000000000",
      "subject": "string",
      "system_key": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "email_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/email-templates/{id}

Update an email template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/email-templates/{id}
{
  "data": {
    "attributes": {
      "body_html": "string",
      "body_text": "string",
      "category": "string",
      "editor_design": {},
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "step_id": "00000000-0000-0000-0000-000000000000",
      "subject": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "body_html": "string",
      "body_text": "string",
      "category": "string",
      "editor_design": {},
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "step_id": "00000000-0000-0000-0000-000000000000",
      "subject": "string",
      "system_key": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "email_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/email-templates/{id}

Delete an email template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
409 Template is in use
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Emails

GET /api/v1/emails

List emails

Parameters

  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
200 Email list
{
  "data": [
    {
      "attributes": {
        "bcc_addresses": [
          "string"
        ],
        "body_html": "string",
        "body_text": "string",
        "cc_addresses": [
          "string"
        ],
        "from_address": "string",
        "from_name": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "matter_id": "00000000-0000-0000-0000-000000000000",
        "opened_at": "2026-01-01T00:00:00Z",
        "reply_to": "string",
        "scheduled_at": "2026-01-01T00:00:00Z",
        "sent_at": "2026-01-01T00:00:00Z",
        "sent_by_id": "00000000-0000-0000-0000-000000000000",
        "source": "string",
        "status": "queued",
        "subject": "string",
        "template_id": "00000000-0000-0000-0000-000000000000",
        "to_addresses": [
          "string"
        ],
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "emails"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/emails/schedule

Schedule an email for future delivery

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/emails/schedule
{
  "data": {
    "attributes": {
      "bcc": [
        "string"
      ],
      "bcc_addresses": [
        "string"
      ],
      "body_html": "string",
      "body_text": "string",
      "cc": [
        "string"
      ],
      "cc_addresses": [
        "string"
      ],
      "from": "string",
      "from_address": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "scheduled_at": "2026-01-01T00:00:00Z",
      "subject": "string",
      "template_id": "00000000-0000-0000-0000-000000000000",
      "to": [
        "string"
      ],
      "to_addresses": [
        "string"
      ]
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Scheduled
{
  "data": {
    "attributes": {
      "bcc_addresses": [
        "string"
      ],
      "body_html": "string",
      "body_text": "string",
      "cc_addresses": [
        "string"
      ],
      "from_address": "string",
      "from_name": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "opened_at": "2026-01-01T00:00:00Z",
      "reply_to": "string",
      "scheduled_at": "2026-01-01T00:00:00Z",
      "sent_at": "2026-01-01T00:00:00Z",
      "sent_by_id": "00000000-0000-0000-0000-000000000000",
      "source": "string",
      "status": "queued",
      "subject": "string",
      "template_id": "00000000-0000-0000-0000-000000000000",
      "to_addresses": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "emails"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
POST /api/v1/emails/send

Send an email

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/emails/send
{
  "data": {
    "attributes": {
      "bcc": [
        "string"
      ],
      "bcc_addresses": [
        "string"
      ],
      "body_html": "string",
      "body_text": "string",
      "cc": [
        "string"
      ],
      "cc_addresses": [
        "string"
      ],
      "from": "string",
      "from_address": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "scheduled_at": "2026-01-01T00:00:00Z",
      "subject": "string",
      "template_id": "00000000-0000-0000-0000-000000000000",
      "to": [
        "string"
      ],
      "to_addresses": [
        "string"
      ]
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Sent
{
  "data": {
    "attributes": {
      "bcc_addresses": [
        "string"
      ],
      "body_html": "string",
      "body_text": "string",
      "cc_addresses": [
        "string"
      ],
      "from_address": "string",
      "from_name": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "opened_at": "2026-01-01T00:00:00Z",
      "reply_to": "string",
      "scheduled_at": "2026-01-01T00:00:00Z",
      "sent_at": "2026-01-01T00:00:00Z",
      "sent_by_id": "00000000-0000-0000-0000-000000000000",
      "source": "string",
      "status": "queued",
      "subject": "string",
      "template_id": "00000000-0000-0000-0000-000000000000",
      "to_addresses": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "emails"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/emails/{id}

Get an email

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Email
{
  "data": {
    "attributes": {
      "bcc_addresses": [
        "string"
      ],
      "body_html": "string",
      "body_text": "string",
      "cc_addresses": [
        "string"
      ],
      "from_address": "string",
      "from_name": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "opened_at": "2026-01-01T00:00:00Z",
      "reply_to": "string",
      "scheduled_at": "2026-01-01T00:00:00Z",
      "sent_at": "2026-01-01T00:00:00Z",
      "sent_by_id": "00000000-0000-0000-0000-000000000000",
      "source": "string",
      "status": "queued",
      "subject": "string",
      "template_id": "00000000-0000-0000-0000-000000000000",
      "to_addresses": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "emails"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}

Field Definitions

GET /api/v1/field-groups/{field_group_id}/definitions

List field definitions

Parameters

  • Name
    field_group_id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Field definition list
{
  "data": [
    {
      "attributes": {
        "code": "string",
        "default_value": "string",
        "description": "string",
        "field_group_id": "00000000-0000-0000-0000-000000000000",
        "field_type": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_readonly": false,
        "is_required": false,
        "name": "string",
        "options": [
          {}
        ],
        "placeholder": "string",
        "position": 0,
        "settings": {},
        "updated_at": "2026-01-01T00:00:00Z",
        "validation_rules": {}
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "field_definitions"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/field-groups/{field_group_id}/definitions

Create a field definition

Parameters

  • Name
    field_group_id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/field-groups/{field_group_id}/definitions
{
  "data": {
    "attributes": {
      "code": "string",
      "default_value": "string",
      "description": "string",
      "field_group_id": "00000000-0000-0000-0000-000000000000",
      "field_type": "string",
      "is_required": false,
      "name": "string",
      "options": [
        {}
      ],
      "placeholder": "string",
      "position": 0,
      "validation_rules": {}
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created
{
  "data": {
    "attributes": {
      "code": "string",
      "default_value": "string",
      "description": "string",
      "field_group_id": "00000000-0000-0000-0000-000000000000",
      "field_type": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_readonly": false,
      "is_required": false,
      "name": "string",
      "options": [
        {}
      ],
      "placeholder": "string",
      "position": 0,
      "settings": {},
      "updated_at": "2026-01-01T00:00:00Z",
      "validation_rules": {}
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "field_definitions"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/field-groups/{field_group_id}/definitions/{id}

Get a field definition

Parameters

  • Name
    field_group_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Field definition
{
  "data": {
    "attributes": {
      "code": "string",
      "default_value": "string",
      "description": "string",
      "field_group_id": "00000000-0000-0000-0000-000000000000",
      "field_type": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_readonly": false,
      "is_required": false,
      "name": "string",
      "options": [
        {}
      ],
      "placeholder": "string",
      "position": 0,
      "settings": {},
      "updated_at": "2026-01-01T00:00:00Z",
      "validation_rules": {}
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "field_definitions"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/field-groups/{field_group_id}/definitions/{id}

Update a field definition

Parameters

  • Name
    field_group_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/field-groups/{field_group_id}/definitions/{id}
{
  "data": {
    "attributes": {
      "code": "string",
      "default_value": "string",
      "description": "string",
      "field_group_id": "00000000-0000-0000-0000-000000000000",
      "field_type": "string",
      "is_required": false,
      "name": "string",
      "options": [
        {}
      ],
      "placeholder": "string",
      "position": 0,
      "validation_rules": {}
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "code": "string",
      "default_value": "string",
      "description": "string",
      "field_group_id": "00000000-0000-0000-0000-000000000000",
      "field_type": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_readonly": false,
      "is_required": false,
      "name": "string",
      "options": [
        {}
      ],
      "placeholder": "string",
      "position": 0,
      "settings": {},
      "updated_at": "2026-01-01T00:00:00Z",
      "validation_rules": {}
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "field_definitions"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/field-groups/{field_group_id}/definitions/{id}

Update a field definition

Parameters

  • Name
    field_group_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/field-groups/{field_group_id}/definitions/{id}
{
  "data": {
    "attributes": {
      "code": "string",
      "default_value": "string",
      "description": "string",
      "field_group_id": "00000000-0000-0000-0000-000000000000",
      "field_type": "string",
      "is_required": false,
      "name": "string",
      "options": [
        {}
      ],
      "placeholder": "string",
      "position": 0,
      "validation_rules": {}
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "code": "string",
      "default_value": "string",
      "description": "string",
      "field_group_id": "00000000-0000-0000-0000-000000000000",
      "field_type": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_readonly": false,
      "is_required": false,
      "name": "string",
      "options": [
        {}
      ],
      "placeholder": "string",
      "position": 0,
      "settings": {},
      "updated_at": "2026-01-01T00:00:00Z",
      "validation_rules": {}
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "field_definitions"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/field-groups/{field_group_id}/definitions/{id}

Delete a field definition

Parameters

  • Name
    field_group_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
409 Field definition is in use
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Field Groups

GET /api/v1/field-groups

List field groups

Parameters

  • Name
    matter_type_id
    Type
    string (uuid)
    In
    in query
    Description
200 Field group list
{
  "data": [
    {
      "attributes": {
        "code": "string",
        "description": "string",
        "icon": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_active": false,
        "is_system": false,
        "matter_type_ids": [
          "00000000-0000-0000-0000-000000000000"
        ],
        "name": "string",
        "position": 0,
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "field_groups"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/field-groups

Create a field group

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/field-groups
{
  "data": {
    "attributes": {
      "code": "string",
      "description": "string",
      "icon": "string",
      "is_active": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created
{
  "data": {
    "attributes": {
      "code": "string",
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "field_groups"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/field-groups/{id}

Get a field group

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Field group
{
  "data": {
    "attributes": {
      "code": "string",
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "field_groups"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/field-groups/{id}

Update a field group

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/field-groups/{id}
{
  "data": {
    "attributes": {
      "code": "string",
      "description": "string",
      "icon": "string",
      "is_active": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "code": "string",
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "field_groups"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/field-groups/{id}

Update a field group

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/field-groups/{id}
{
  "data": {
    "attributes": {
      "code": "string",
      "description": "string",
      "icon": "string",
      "is_active": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "code": "string",
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_system": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "field_groups"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/field-groups/{id}

Delete a field group

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
409 Field group is in use
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Field Values

GET /api/v1/matters/{matter_id}/field-groups/{field_group_id}/values

Get field values for a matter + field group

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    field_group_id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Field values
{
  "data": [
    {
      "attributes": {
        "field_definition_id": "00000000-0000-0000-0000-000000000000",
        "field_record_id": "00000000-0000-0000-0000-000000000000",
        "inserted_at": "2026-01-01T00:00:00Z",
        "updated_at": "2026-01-01T00:00:00Z",
        "value_boolean": false,
        "value_contact_id": "00000000-0000-0000-0000-000000000000",
        "value_date": "2026-01-01",
        "value_datetime": "2026-01-01T00:00:00Z",
        "value_json": {},
        "value_number": 0.0,
        "value_text": "string"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "field_values"
    }
  ],
  "meta": {
    "record_id": "00000000-0000-0000-0000-000000000000"
  }
}
PUT /api/v1/matters/{matter_id}/field-groups/{field_group_id}/values/{id}

Update a field value

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    field_group_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/matters/{matter_id}/field-groups/{field_group_id}/values/{id}
{
  "data": {
    "attributes": {
      "field_definition_id": "00000000-0000-0000-0000-000000000000",
      "field_record_id": "00000000-0000-0000-0000-000000000000",
      "value": {}
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "field_definition_id": "00000000-0000-0000-0000-000000000000",
      "field_record_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "updated_at": "2026-01-01T00:00:00Z",
      "value_boolean": false,
      "value_contact_id": "00000000-0000-0000-0000-000000000000",
      "value_date": "2026-01-01",
      "value_datetime": "2026-01-01T00:00:00Z",
      "value_json": {},
      "value_number": 0.0,
      "value_text": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "field_values"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Folders

GET /api/v1/folders

List folders for a matter

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in query
    Description
200 Folder list
{
  "data": [
    {
      "attributes": {
        "contact_id": "00000000-0000-0000-0000-000000000000",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_system": false,
        "matter_id": "00000000-0000-0000-0000-000000000000",
        "name": "string",
        "parent_id": "00000000-0000-0000-0000-000000000000",
        "position": 0,
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "folders"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/folders

Create a folder

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/folders
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_id": "00000000-0000-0000-0000-000000000000",
      "position": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created folder
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_system": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_id": "00000000-0000-0000-0000-000000000000",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "folders"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/folders/{id}

Get a folder

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Folder
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_system": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_id": "00000000-0000-0000-0000-000000000000",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "folders"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/folders/{id}

Update a folder

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/folders/{id}
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_id": "00000000-0000-0000-0000-000000000000",
      "position": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated folder
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_system": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_id": "00000000-0000-0000-0000-000000000000",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "folders"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/folders/{id}

Update a folder

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/folders/{id}
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_id": "00000000-0000-0000-0000-000000000000",
      "position": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated folder
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_system": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_id": "00000000-0000-0000-0000-000000000000",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "folders"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/folders/{id}

Delete a folder

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
409 Dependency error
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
422 Delete error
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Invoices

GET /api/v1/invoices

List invoices

Parameters

  • Name
    filter
    Type
    object
    In
    in query
    Description
  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
200 Invoice list
{
  "data": [
    {
      "attributes": {
        "accounting_provider": "string",
        "accounting_sync_status": "string",
        "balance_cents": 0,
        "contact_id": "00000000-0000-0000-0000-000000000000",
        "currency": "string",
        "delivered_at": "2026-01-01T00:00:00Z",
        "delivery_status": "string",
        "due_date": "2026-01-01",
        "inserted_at": "2026-01-01T00:00:00Z",
        "invoice_number": "string",
        "invoice_type": "string",
        "issue_date": "2026-01-01",
        "issued_at": "2026-01-01T00:00:00Z",
        "last_sync_error": "string",
        "matter_id": "00000000-0000-0000-0000-000000000000",
        "notes": "string",
        "paid_at": "2026-01-01T00:00:00Z",
        "paid_cents": 0,
        "payment_mode": "string",
        "payment_provider": "string",
        "payment_status": "string",
        "payment_terms": "string",
        "sent_at": "2026-01-01T00:00:00Z",
        "status": "string",
        "subtotal_cents": 0,
        "tax_cents": 0,
        "total_cents": 0,
        "updated_at": "2026-01-01T00:00:00Z",
        "voided_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "invoices"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/invoices

Create an invoice

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/invoices
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "payment_terms": "string",
      "tax_rate": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created invoice
{
  "data": {
    "attributes": {
      "accounting_provider": "string",
      "accounting_sync_status": "string",
      "balance_cents": 0,
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "currency": "string",
      "delivered_at": "2026-01-01T00:00:00Z",
      "delivery_status": "string",
      "due_date": "2026-01-01",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_number": "string",
      "invoice_type": "string",
      "issue_date": "2026-01-01",
      "issued_at": "2026-01-01T00:00:00Z",
      "last_sync_error": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "paid_at": "2026-01-01T00:00:00Z",
      "paid_cents": 0,
      "payment_mode": "string",
      "payment_provider": "string",
      "payment_status": "string",
      "payment_terms": "string",
      "sent_at": "2026-01-01T00:00:00Z",
      "status": "string",
      "subtotal_cents": 0,
      "tax_cents": 0,
      "total_cents": 0,
      "updated_at": "2026-01-01T00:00:00Z",
      "voided_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "invoices"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/invoices/{id}

Get an invoice

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Invoice
{
  "data": {
    "attributes": {
      "accounting_provider": "string",
      "accounting_sync_status": "string",
      "balance_cents": 0,
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "currency": "string",
      "delivered_at": "2026-01-01T00:00:00Z",
      "delivery_status": "string",
      "due_date": "2026-01-01",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_number": "string",
      "invoice_type": "string",
      "issue_date": "2026-01-01",
      "issued_at": "2026-01-01T00:00:00Z",
      "last_sync_error": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "paid_at": "2026-01-01T00:00:00Z",
      "paid_cents": 0,
      "payment_mode": "string",
      "payment_provider": "string",
      "payment_status": "string",
      "payment_terms": "string",
      "sent_at": "2026-01-01T00:00:00Z",
      "status": "string",
      "subtotal_cents": 0,
      "tax_cents": 0,
      "total_cents": 0,
      "updated_at": "2026-01-01T00:00:00Z",
      "voided_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "invoices"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/invoices/{id}

Update an invoice

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/invoices/{id}
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "payment_terms": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated invoice
{
  "data": {
    "attributes": {
      "accounting_provider": "string",
      "accounting_sync_status": "string",
      "balance_cents": 0,
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "currency": "string",
      "delivered_at": "2026-01-01T00:00:00Z",
      "delivery_status": "string",
      "due_date": "2026-01-01",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_number": "string",
      "invoice_type": "string",
      "issue_date": "2026-01-01",
      "issued_at": "2026-01-01T00:00:00Z",
      "last_sync_error": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "paid_at": "2026-01-01T00:00:00Z",
      "paid_cents": 0,
      "payment_mode": "string",
      "payment_provider": "string",
      "payment_status": "string",
      "payment_terms": "string",
      "sent_at": "2026-01-01T00:00:00Z",
      "status": "string",
      "subtotal_cents": 0,
      "tax_cents": 0,
      "total_cents": 0,
      "updated_at": "2026-01-01T00:00:00Z",
      "voided_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "invoices"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/invoices/{id}

Update an invoice

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/invoices/{id}
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "payment_terms": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated invoice
{
  "data": {
    "attributes": {
      "accounting_provider": "string",
      "accounting_sync_status": "string",
      "balance_cents": 0,
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "currency": "string",
      "delivered_at": "2026-01-01T00:00:00Z",
      "delivery_status": "string",
      "due_date": "2026-01-01",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_number": "string",
      "invoice_type": "string",
      "issue_date": "2026-01-01",
      "issued_at": "2026-01-01T00:00:00Z",
      "last_sync_error": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "paid_at": "2026-01-01T00:00:00Z",
      "paid_cents": 0,
      "payment_mode": "string",
      "payment_provider": "string",
      "payment_status": "string",
      "payment_terms": "string",
      "sent_at": "2026-01-01T00:00:00Z",
      "status": "string",
      "subtotal_cents": 0,
      "tax_cents": 0,
      "total_cents": 0,
      "updated_at": "2026-01-01T00:00:00Z",
      "voided_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "invoices"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/invoices/{id}

Delete an invoice

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/invoices/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/invoices/{id}
POST /api/v1/invoices/{id}/send

Send an invoice

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Sent invoice
{
  "data": {
    "attributes": {
      "accounting_provider": "string",
      "accounting_sync_status": "string",
      "balance_cents": 0,
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "currency": "string",
      "delivered_at": "2026-01-01T00:00:00Z",
      "delivery_status": "string",
      "due_date": "2026-01-01",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_number": "string",
      "invoice_type": "string",
      "issue_date": "2026-01-01",
      "issued_at": "2026-01-01T00:00:00Z",
      "last_sync_error": "string",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "paid_at": "2026-01-01T00:00:00Z",
      "paid_cents": 0,
      "payment_mode": "string",
      "payment_provider": "string",
      "payment_status": "string",
      "payment_terms": "string",
      "sent_at": "2026-01-01T00:00:00Z",
      "status": "string",
      "subtotal_cents": 0,
      "tax_cents": 0,
      "total_cents": 0,
      "updated_at": "2026-01-01T00:00:00Z",
      "voided_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "invoices"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Send error
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Key Date Types

GET /api/v1/key-date-types

List key date types

Parameters

  • Name
    matter_type_id
    Type
    string (uuid)
    In
    in query
    Description
200 Key date type list
{
  "data": [
    {
      "attributes": {
        "auto_complete": false,
        "code": "string",
        "color": "string",
        "default_reminder_days": 0,
        "description": "string",
        "icon": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_milestone": false,
        "matter_type_ids": [
          "00000000-0000-0000-0000-000000000000"
        ],
        "name": "string",
        "position": 0,
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "key_date_types"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/key-date-types

Create a key date type

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/key-date-types
{
  "data": {
    "attributes": {
      "auto_complete": false,
      "code": "string",
      "color": "string",
      "default_reminder_days": 0,
      "description": "string",
      "icon": "string",
      "is_milestone": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created
{
  "data": {
    "attributes": {
      "auto_complete": false,
      "code": "string",
      "color": "string",
      "default_reminder_days": 0,
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_milestone": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "key_date_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/key-date-types/{id}

Get a key date type

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Key date type
{
  "data": {
    "attributes": {
      "auto_complete": false,
      "code": "string",
      "color": "string",
      "default_reminder_days": 0,
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_milestone": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "key_date_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/key-date-types/{id}

Update a key date type

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/key-date-types/{id}
{
  "data": {
    "attributes": {
      "auto_complete": false,
      "code": "string",
      "color": "string",
      "default_reminder_days": 0,
      "description": "string",
      "icon": "string",
      "is_milestone": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "auto_complete": false,
      "code": "string",
      "color": "string",
      "default_reminder_days": 0,
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_milestone": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "key_date_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/key-date-types/{id}

Update a key date type

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/key-date-types/{id}
{
  "data": {
    "attributes": {
      "auto_complete": false,
      "code": "string",
      "color": "string",
      "default_reminder_days": 0,
      "description": "string",
      "icon": "string",
      "is_milestone": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "auto_complete": false,
      "code": "string",
      "color": "string",
      "default_reminder_days": 0,
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_milestone": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "name": "string",
      "position": 0,
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "key_date_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/key-date-types/{id}

Delete a key date type

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
409 Key date type is in use
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Key Dates

GET /api/v1/key-dates

List key dates for a matter

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in query
    Description
200 Key date list
{
  "data": [
    {
      "attributes": {
        "completed_at": "2026-01-01T00:00:00Z",
        "completed_by_id": "00000000-0000-0000-0000-000000000000",
        "date": "2026-01-01",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_all_day": false,
        "key_date_type_id": "00000000-0000-0000-0000-000000000000",
        "matter_id": "00000000-0000-0000-0000-000000000000",
        "name": "string",
        "notes": "string",
        "source": "string",
        "source_id": "00000000-0000-0000-0000-000000000000",
        "status": "string",
        "time": "string",
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "key_dates"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/key-dates

Create a key date

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/key-dates
{
  "data": {
    "attributes": {
      "date": "2026-01-01",
      "is_all_day": false,
      "key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "notes": "string",
      "status": "string",
      "time": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created
{
  "data": {
    "attributes": {
      "completed_at": "2026-01-01T00:00:00Z",
      "completed_by_id": "00000000-0000-0000-0000-000000000000",
      "date": "2026-01-01",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_all_day": false,
      "key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "notes": "string",
      "source": "string",
      "source_id": "00000000-0000-0000-0000-000000000000",
      "status": "string",
      "time": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "key_dates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/key-dates/{id}

Get a key date

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Key date
{
  "data": {
    "attributes": {
      "completed_at": "2026-01-01T00:00:00Z",
      "completed_by_id": "00000000-0000-0000-0000-000000000000",
      "date": "2026-01-01",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_all_day": false,
      "key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "notes": "string",
      "source": "string",
      "source_id": "00000000-0000-0000-0000-000000000000",
      "status": "string",
      "time": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "key_dates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/key-dates/{id}

Update a key date

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/key-dates/{id}
{
  "data": {
    "attributes": {
      "date": "2026-01-01",
      "is_all_day": false,
      "key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "notes": "string",
      "status": "string",
      "time": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "completed_at": "2026-01-01T00:00:00Z",
      "completed_by_id": "00000000-0000-0000-0000-000000000000",
      "date": "2026-01-01",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_all_day": false,
      "key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "notes": "string",
      "source": "string",
      "source_id": "00000000-0000-0000-0000-000000000000",
      "status": "string",
      "time": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "key_dates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/key-dates/{id}

Update a key date

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/key-dates/{id}
{
  "data": {
    "attributes": {
      "date": "2026-01-01",
      "is_all_day": false,
      "key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "notes": "string",
      "status": "string",
      "time": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "completed_at": "2026-01-01T00:00:00Z",
      "completed_by_id": "00000000-0000-0000-0000-000000000000",
      "date": "2026-01-01",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_all_day": false,
      "key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "notes": "string",
      "source": "string",
      "source_id": "00000000-0000-0000-0000-000000000000",
      "status": "string",
      "time": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "key_dates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/key-dates/{id}

Delete a key date

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/key-dates/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/key-dates/{id}

Leads

GET /api/v1/leads

List leads

Parameters

  • Name
    filter
    Type
    object
    In
    in query
    Description
  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
200 Lead list
{
  "data": [
    {
      "attributes": {
        "consultation_scheduled_at": "2026-01-01T00:00:00Z",
        "conversion_matter_id": "00000000-0000-0000-0000-000000000000",
        "converted_at": "2026-01-01T00:00:00Z",
        "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
        "inserted_at": "2026-01-01T00:00:00Z",
        "jurisdiction_country": "string",
        "jurisdiction_region": "string",
        "last_contacted_at": "2026-01-01T00:00:00Z",
        "lost_at": "2026-01-01T00:00:00Z",
        "lost_reason": "string",
        "matter_type_id": "00000000-0000-0000-0000-000000000000",
        "metadata": {},
        "name": "string",
        "next_follow_up_at": "2026-01-01T00:00:00Z",
        "owner_id": "00000000-0000-0000-0000-000000000000",
        "pipeline_id": "00000000-0000-0000-0000-000000000000",
        "pipeline_stage_id": "00000000-0000-0000-0000-000000000000",
        "priority": "low",
        "qualified_at": "2026-01-01T00:00:00Z",
        "referral_source": "string",
        "source": "portal",
        "source_detail": "string",
        "status": "open",
        "summary": "string",
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "leads"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/leads

Create a lead

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/leads
{
  "data": {
    "attributes": {
      "jurisdiction_country": "string",
      "jurisdiction_region": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "owner_id": "00000000-0000-0000-0000-000000000000",
      "priority": "low",
      "referral_source": "string",
      "source": "portal",
      "source_detail": "string",
      "summary": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created lead
{
  "data": {
    "attributes": {
      "consultation_scheduled_at": "2026-01-01T00:00:00Z",
      "conversion_matter_id": "00000000-0000-0000-0000-000000000000",
      "converted_at": "2026-01-01T00:00:00Z",
      "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "jurisdiction_country": "string",
      "jurisdiction_region": "string",
      "last_contacted_at": "2026-01-01T00:00:00Z",
      "lost_at": "2026-01-01T00:00:00Z",
      "lost_reason": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "next_follow_up_at": "2026-01-01T00:00:00Z",
      "owner_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_stage_id": "00000000-0000-0000-0000-000000000000",
      "priority": "low",
      "qualified_at": "2026-01-01T00:00:00Z",
      "referral_source": "string",
      "source": "portal",
      "source_detail": "string",
      "status": "open",
      "summary": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "leads"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/leads/{id}

Get a lead

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Lead
{
  "data": {
    "attributes": {
      "consultation_scheduled_at": "2026-01-01T00:00:00Z",
      "conversion_matter_id": "00000000-0000-0000-0000-000000000000",
      "converted_at": "2026-01-01T00:00:00Z",
      "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "jurisdiction_country": "string",
      "jurisdiction_region": "string",
      "last_contacted_at": "2026-01-01T00:00:00Z",
      "lost_at": "2026-01-01T00:00:00Z",
      "lost_reason": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "next_follow_up_at": "2026-01-01T00:00:00Z",
      "owner_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_stage_id": "00000000-0000-0000-0000-000000000000",
      "priority": "low",
      "qualified_at": "2026-01-01T00:00:00Z",
      "referral_source": "string",
      "source": "portal",
      "source_detail": "string",
      "status": "open",
      "summary": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "leads"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/leads/{id}

Update a lead

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/leads/{id}
{
  "data": {
    "attributes": {
      "jurisdiction_country": "string",
      "jurisdiction_region": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "owner_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_stage_id": "00000000-0000-0000-0000-000000000000",
      "priority": "low",
      "referral_source": "string",
      "source": "portal",
      "source_detail": "string",
      "status": "open",
      "summary": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated lead
{
  "data": {
    "attributes": {
      "consultation_scheduled_at": "2026-01-01T00:00:00Z",
      "conversion_matter_id": "00000000-0000-0000-0000-000000000000",
      "converted_at": "2026-01-01T00:00:00Z",
      "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "jurisdiction_country": "string",
      "jurisdiction_region": "string",
      "last_contacted_at": "2026-01-01T00:00:00Z",
      "lost_at": "2026-01-01T00:00:00Z",
      "lost_reason": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "next_follow_up_at": "2026-01-01T00:00:00Z",
      "owner_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_stage_id": "00000000-0000-0000-0000-000000000000",
      "priority": "low",
      "qualified_at": "2026-01-01T00:00:00Z",
      "referral_source": "string",
      "source": "portal",
      "source_detail": "string",
      "status": "open",
      "summary": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "leads"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/leads/{id}

Update a lead

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/leads/{id}
{
  "data": {
    "attributes": {
      "jurisdiction_country": "string",
      "jurisdiction_region": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "owner_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_stage_id": "00000000-0000-0000-0000-000000000000",
      "priority": "low",
      "referral_source": "string",
      "source": "portal",
      "source_detail": "string",
      "status": "open",
      "summary": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated lead
{
  "data": {
    "attributes": {
      "consultation_scheduled_at": "2026-01-01T00:00:00Z",
      "conversion_matter_id": "00000000-0000-0000-0000-000000000000",
      "converted_at": "2026-01-01T00:00:00Z",
      "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "jurisdiction_country": "string",
      "jurisdiction_region": "string",
      "last_contacted_at": "2026-01-01T00:00:00Z",
      "lost_at": "2026-01-01T00:00:00Z",
      "lost_reason": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "next_follow_up_at": "2026-01-01T00:00:00Z",
      "owner_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_stage_id": "00000000-0000-0000-0000-000000000000",
      "priority": "low",
      "qualified_at": "2026-01-01T00:00:00Z",
      "referral_source": "string",
      "source": "portal",
      "source_detail": "string",
      "status": "open",
      "summary": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "leads"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/leads/{id}

Delete a lead

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/leads/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/leads/{id}
POST /api/v1/leads/{id}/close-lost

Mark a lead as lost

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    Description
POST /api/v1/leads/{id}/close-lost
{
  "data": {
    "attributes": {
      "reason": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Lead marked lost
{
  "data": {
    "attributes": {
      "consultation_scheduled_at": "2026-01-01T00:00:00Z",
      "conversion_matter_id": "00000000-0000-0000-0000-000000000000",
      "converted_at": "2026-01-01T00:00:00Z",
      "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "jurisdiction_country": "string",
      "jurisdiction_region": "string",
      "last_contacted_at": "2026-01-01T00:00:00Z",
      "lost_at": "2026-01-01T00:00:00Z",
      "lost_reason": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "next_follow_up_at": "2026-01-01T00:00:00Z",
      "owner_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_stage_id": "00000000-0000-0000-0000-000000000000",
      "priority": "low",
      "qualified_at": "2026-01-01T00:00:00Z",
      "referral_source": "string",
      "source": "portal",
      "source_detail": "string",
      "status": "open",
      "summary": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "leads"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Failed
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
POST /api/v1/leads/{id}/contacts

Add a contact to a lead

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/leads/{id}/contacts
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "is_primary": false,
      "role": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created lead contact
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_primary": false,
      "lead_id": "00000000-0000-0000-0000-000000000000",
      "role": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "lead-contacts"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
POST /api/v1/leads/{id}/convert

Convert a lead to a matter

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    Description
POST /api/v1/leads/{id}/convert
{
  "data": {
    "attributes": {
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "jurisdiction_country": "string",
      "jurisdiction_region": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "team_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Converted
{
  "data": {
    "attributes": {
      "consultation_scheduled_at": "2026-01-01T00:00:00Z",
      "conversion_matter_id": "00000000-0000-0000-0000-000000000000",
      "converted_at": "2026-01-01T00:00:00Z",
      "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "jurisdiction_country": "string",
      "jurisdiction_region": "string",
      "last_contacted_at": "2026-01-01T00:00:00Z",
      "lost_at": "2026-01-01T00:00:00Z",
      "lost_reason": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "next_follow_up_at": "2026-01-01T00:00:00Z",
      "owner_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_id": "00000000-0000-0000-0000-000000000000",
      "pipeline_stage_id": "00000000-0000-0000-0000-000000000000",
      "priority": "low",
      "qualified_at": "2026-01-01T00:00:00Z",
      "referral_source": "string",
      "source": "portal",
      "source_detail": "string",
      "status": "open",
      "summary": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "leads"
  },
  "meta": {
    "conversion": {
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "matter_name": "string"
    }
  }
}
422 Conversion failed
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Matter Roles

GET /api/v1/matters/{matter_id}/roles

List roles for a matter

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Role list
{
  "data": [
    {
      "attributes": {
        "contact_id": "00000000-0000-0000-0000-000000000000",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_primary": false,
        "matter_id": "00000000-0000-0000-0000-000000000000",
        "notes": "string",
        "role_name": "string",
        "source": "string",
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "matter_roles"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/matters/{matter_id}/roles

Add a role to a matter

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/matters/{matter_id}/roles
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "is_primary": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "role_name": "string",
      "source": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created role
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_primary": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "role_name": "string",
      "source": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "matter_roles"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/matters/{matter_id}/roles/{id}

Get a matter role

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Role
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_primary": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "role_name": "string",
      "source": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "matter_roles"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/matters/{matter_id}/roles/{id}

Update a matter role

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/matters/{matter_id}/roles/{id}
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "is_primary": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "role_name": "string",
      "source": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated role
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_primary": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "role_name": "string",
      "source": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "matter_roles"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/matters/{matter_id}/roles/{id}

Update a matter role

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/matters/{matter_id}/roles/{id}
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "is_primary": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "role_name": "string",
      "source": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated role
{
  "data": {
    "attributes": {
      "contact_id": "00000000-0000-0000-0000-000000000000",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_primary": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "notes": "string",
      "role_name": "string",
      "source": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "matter_roles"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/matters/{matter_id}/roles/{id}

Remove a role from a matter

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/matters/{matter_id}/roles/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/matters/{matter_id}/roles/{id}

Matter Types

GET /api/v1/matter-types

List matter types

200 Matter type list
{
  "data": [
    {
      "attributes": {
        "code": "string",
        "color": "string",
        "default_tags": [
          "string"
        ],
        "description": "string",
        "icon": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_active": false,
        "name": "string",
        "reference_format": "string",
        "required_contact_types": [
          "string"
        ],
        "settings": {},
        "updated_at": "2026-01-01T00:00:00Z",
        "workflow_id": "00000000-0000-0000-0000-000000000000"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "matter_types"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/matter-types

Create a matter type

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/matter-types
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "default_tags": [
        "string"
      ],
      "description": "string",
      "icon": "string",
      "is_active": false,
      "name": "string",
      "reference_format": "string",
      "settings": {},
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created matter type
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "default_tags": [
        "string"
      ],
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "name": "string",
      "reference_format": "string",
      "required_contact_types": [
        "string"
      ],
      "settings": {},
      "updated_at": "2026-01-01T00:00:00Z",
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "matter_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/matter-types/{id}

Get a matter type

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Matter type
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "default_tags": [
        "string"
      ],
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "name": "string",
      "reference_format": "string",
      "required_contact_types": [
        "string"
      ],
      "settings": {},
      "updated_at": "2026-01-01T00:00:00Z",
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "matter_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/matter-types/{id}

Update a matter type

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/matter-types/{id}
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "default_tags": [
        "string"
      ],
      "description": "string",
      "icon": "string",
      "is_active": false,
      "name": "string",
      "reference_format": "string",
      "settings": {},
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated matter type
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "default_tags": [
        "string"
      ],
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "name": "string",
      "reference_format": "string",
      "required_contact_types": [
        "string"
      ],
      "settings": {},
      "updated_at": "2026-01-01T00:00:00Z",
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "matter_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/matter-types/{id}

Update a matter type

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/matter-types/{id}
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "default_tags": [
        "string"
      ],
      "description": "string",
      "icon": "string",
      "is_active": false,
      "name": "string",
      "reference_format": "string",
      "settings": {},
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated matter type
{
  "data": {
    "attributes": {
      "code": "string",
      "color": "string",
      "default_tags": [
        "string"
      ],
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "name": "string",
      "reference_format": "string",
      "required_contact_types": [
        "string"
      ],
      "settings": {},
      "updated_at": "2026-01-01T00:00:00Z",
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "matter_types"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Matters

GET /api/v1/matters

List matters

Parameters

  • Name
    filter
    Type
    object
    In
    in query
    Description
  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
200 Matter list
{
  "data": [
    {
      "attributes": {
        "archived_at": "2026-01-01T00:00:00Z",
        "assigned_to_id": "00000000-0000-0000-0000-000000000000",
        "cancelled_at": "2026-01-01T00:00:00Z",
        "closed_at": "2026-01-01T00:00:00Z",
        "completed_at": "2026-01-01T00:00:00Z",
        "conflict_checks": [
          {
            "acknowledged_at": "2026-01-01T00:00:00Z",
            "acknowledged_by": "00000000-0000-0000-0000-000000000000",
            "check_type": "new_matter",
            "clearance_reason": "string",
            "cleared_at": "2026-01-01T00:00:00Z",
            "cleared_by_user_id": "00000000-0000-0000-0000-000000000000",
            "conflict_type": "same_party",
            "conflicting_matter_id": "00000000-0000-0000-0000-000000000000",
            "conflicting_matter_name": "string",
            "conflicting_matter_reference": "string",
            "contact_id": "00000000-0000-0000-0000-000000000000",
            "contact_name": "string",
            "disclosure_redacted": false,
            "highest_score": 0.0,
            "id": "00000000-0000-0000-0000-000000000000",
            "inserted_at": "2026-01-01T00:00:00Z",
            "rechecked_at": "2026-01-01T00:00:00Z",
            "status": "pending",
            "subject_name": "string",
            "updated_at": "2026-01-01T00:00:00Z"
          }
        ],
        "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
        "current_step_id": "00000000-0000-0000-0000-000000000000",
        "description": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_blocked": false,
        "jurisdiction_country": "AU",
        "jurisdiction_country_label": "string",
        "jurisdiction_region": "NSW",
        "jurisdiction_region_label": "string",
        "matter_type_id": "00000000-0000-0000-0000-000000000000",
        "metadata": {},
        "name": "string",
        "opened_at": "2026-01-01T00:00:00Z",
        "priority": "low",
        "reference": "string",
        "status": "open",
        "tags": [
          "string"
        ],
        "team_id": "00000000-0000-0000-0000-000000000000",
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "matters"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/matters

Create a matter

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/matters
{
  "data": {
    "attributes": {
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "jurisdiction_country": "AU",
      "jurisdiction_region": "NSW",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "priority": "low",
      "tags": [
        "string"
      ],
      "team_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created matter
{
  "data": {
    "attributes": {
      "archived_at": "2026-01-01T00:00:00Z",
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "cancelled_at": "2026-01-01T00:00:00Z",
      "closed_at": "2026-01-01T00:00:00Z",
      "completed_at": "2026-01-01T00:00:00Z",
      "conflict_checks": [
        {
          "acknowledged_at": "2026-01-01T00:00:00Z",
          "acknowledged_by": "00000000-0000-0000-0000-000000000000",
          "check_type": "new_matter",
          "clearance_reason": "string",
          "cleared_at": "2026-01-01T00:00:00Z",
          "cleared_by_user_id": "00000000-0000-0000-0000-000000000000",
          "conflict_type": "same_party",
          "conflicting_matter_id": "00000000-0000-0000-0000-000000000000",
          "conflicting_matter_name": "string",
          "conflicting_matter_reference": "string",
          "contact_id": "00000000-0000-0000-0000-000000000000",
          "contact_name": "string",
          "disclosure_redacted": false,
          "highest_score": 0.0,
          "id": "00000000-0000-0000-0000-000000000000",
          "inserted_at": "2026-01-01T00:00:00Z",
          "rechecked_at": "2026-01-01T00:00:00Z",
          "status": "pending",
          "subject_name": "string",
          "updated_at": "2026-01-01T00:00:00Z"
        }
      ],
      "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "current_step_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_blocked": false,
      "jurisdiction_country": "AU",
      "jurisdiction_country_label": "string",
      "jurisdiction_region": "NSW",
      "jurisdiction_region_label": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "opened_at": "2026-01-01T00:00:00Z",
      "priority": "low",
      "reference": "string",
      "status": "open",
      "tags": [
        "string"
      ],
      "team_id": "00000000-0000-0000-0000-000000000000",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "matters"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/matters/{id}

Get a matter

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Matter
{
  "data": {
    "attributes": {
      "archived_at": "2026-01-01T00:00:00Z",
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "cancelled_at": "2026-01-01T00:00:00Z",
      "closed_at": "2026-01-01T00:00:00Z",
      "completed_at": "2026-01-01T00:00:00Z",
      "conflict_checks": [
        {
          "acknowledged_at": "2026-01-01T00:00:00Z",
          "acknowledged_by": "00000000-0000-0000-0000-000000000000",
          "check_type": "new_matter",
          "clearance_reason": "string",
          "cleared_at": "2026-01-01T00:00:00Z",
          "cleared_by_user_id": "00000000-0000-0000-0000-000000000000",
          "conflict_type": "same_party",
          "conflicting_matter_id": "00000000-0000-0000-0000-000000000000",
          "conflicting_matter_name": "string",
          "conflicting_matter_reference": "string",
          "contact_id": "00000000-0000-0000-0000-000000000000",
          "contact_name": "string",
          "disclosure_redacted": false,
          "highest_score": 0.0,
          "id": "00000000-0000-0000-0000-000000000000",
          "inserted_at": "2026-01-01T00:00:00Z",
          "rechecked_at": "2026-01-01T00:00:00Z",
          "status": "pending",
          "subject_name": "string",
          "updated_at": "2026-01-01T00:00:00Z"
        }
      ],
      "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "current_step_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_blocked": false,
      "jurisdiction_country": "AU",
      "jurisdiction_country_label": "string",
      "jurisdiction_region": "NSW",
      "jurisdiction_region_label": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "opened_at": "2026-01-01T00:00:00Z",
      "priority": "low",
      "reference": "string",
      "status": "open",
      "tags": [
        "string"
      ],
      "team_id": "00000000-0000-0000-0000-000000000000",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "matters"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/matters/{id}

Update a matter

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/matters/{id}
{
  "data": {
    "attributes": {
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "jurisdiction_country": "AU",
      "jurisdiction_region": "NSW",
      "metadata": {},
      "name": "string",
      "priority": "low",
      "status": "open",
      "tags": [
        "string"
      ],
      "team_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated matter
{
  "data": {
    "attributes": {
      "archived_at": "2026-01-01T00:00:00Z",
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "cancelled_at": "2026-01-01T00:00:00Z",
      "closed_at": "2026-01-01T00:00:00Z",
      "completed_at": "2026-01-01T00:00:00Z",
      "conflict_checks": [
        {
          "acknowledged_at": "2026-01-01T00:00:00Z",
          "acknowledged_by": "00000000-0000-0000-0000-000000000000",
          "check_type": "new_matter",
          "clearance_reason": "string",
          "cleared_at": "2026-01-01T00:00:00Z",
          "cleared_by_user_id": "00000000-0000-0000-0000-000000000000",
          "conflict_type": "same_party",
          "conflicting_matter_id": "00000000-0000-0000-0000-000000000000",
          "conflicting_matter_name": "string",
          "conflicting_matter_reference": "string",
          "contact_id": "00000000-0000-0000-0000-000000000000",
          "contact_name": "string",
          "disclosure_redacted": false,
          "highest_score": 0.0,
          "id": "00000000-0000-0000-0000-000000000000",
          "inserted_at": "2026-01-01T00:00:00Z",
          "rechecked_at": "2026-01-01T00:00:00Z",
          "status": "pending",
          "subject_name": "string",
          "updated_at": "2026-01-01T00:00:00Z"
        }
      ],
      "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "current_step_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_blocked": false,
      "jurisdiction_country": "AU",
      "jurisdiction_country_label": "string",
      "jurisdiction_region": "NSW",
      "jurisdiction_region_label": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "opened_at": "2026-01-01T00:00:00Z",
      "priority": "low",
      "reference": "string",
      "status": "open",
      "tags": [
        "string"
      ],
      "team_id": "00000000-0000-0000-0000-000000000000",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "matters"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/matters/{id}

Update a matter

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/matters/{id}
{
  "data": {
    "attributes": {
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "jurisdiction_country": "AU",
      "jurisdiction_region": "NSW",
      "metadata": {},
      "name": "string",
      "priority": "low",
      "status": "open",
      "tags": [
        "string"
      ],
      "team_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated matter
{
  "data": {
    "attributes": {
      "archived_at": "2026-01-01T00:00:00Z",
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "cancelled_at": "2026-01-01T00:00:00Z",
      "closed_at": "2026-01-01T00:00:00Z",
      "completed_at": "2026-01-01T00:00:00Z",
      "conflict_checks": [
        {
          "acknowledged_at": "2026-01-01T00:00:00Z",
          "acknowledged_by": "00000000-0000-0000-0000-000000000000",
          "check_type": "new_matter",
          "clearance_reason": "string",
          "cleared_at": "2026-01-01T00:00:00Z",
          "cleared_by_user_id": "00000000-0000-0000-0000-000000000000",
          "conflict_type": "same_party",
          "conflicting_matter_id": "00000000-0000-0000-0000-000000000000",
          "conflicting_matter_name": "string",
          "conflicting_matter_reference": "string",
          "contact_id": "00000000-0000-0000-0000-000000000000",
          "contact_name": "string",
          "disclosure_redacted": false,
          "highest_score": 0.0,
          "id": "00000000-0000-0000-0000-000000000000",
          "inserted_at": "2026-01-01T00:00:00Z",
          "rechecked_at": "2026-01-01T00:00:00Z",
          "status": "pending",
          "subject_name": "string",
          "updated_at": "2026-01-01T00:00:00Z"
        }
      ],
      "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "current_step_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_blocked": false,
      "jurisdiction_country": "AU",
      "jurisdiction_country_label": "string",
      "jurisdiction_region": "NSW",
      "jurisdiction_region_label": "string",
      "matter_type_id": "00000000-0000-0000-0000-000000000000",
      "metadata": {},
      "name": "string",
      "opened_at": "2026-01-01T00:00:00Z",
      "priority": "low",
      "reference": "string",
      "status": "open",
      "tags": [
        "string"
      ],
      "team_id": "00000000-0000-0000-0000-000000000000",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "matters"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/matters/{id}

Delete a matter

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/matters/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/matters/{id}

Notes

GET /api/v1/tasks/{task_id}/notes

List notes (comments) for a task

Parameters

  • Name
    task_id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Note list
{
  "data": [
    {
      "attributes": {
        "body": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "mentioned_user_ids": [
          "00000000-0000-0000-0000-000000000000"
        ],
        "task_id": "00000000-0000-0000-0000-000000000000",
        "updated_at": "2026-01-01T00:00:00Z",
        "user_id": "00000000-0000-0000-0000-000000000000"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "notes"
    }
  ],
  "meta": {
    "count": 0,
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
POST /api/v1/tasks/{task_id}/notes

Create a note on a task

Parameters

  • Name
    task_id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/tasks/{task_id}/notes
{
  "data": {
    "attributes": {
      "body": "string",
      "mentioned_user_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "task_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created note
{
  "data": {
    "attributes": {
      "body": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "mentioned_user_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "task_id": "00000000-0000-0000-0000-000000000000",
      "updated_at": "2026-01-01T00:00:00Z",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "notes"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/tasks/{task_id}/notes/{id}

Get a note

Parameters

  • Name
    task_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Note
{
  "data": {
    "attributes": {
      "body": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "mentioned_user_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "task_id": "00000000-0000-0000-0000-000000000000",
      "updated_at": "2026-01-01T00:00:00Z",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "notes"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/tasks/{task_id}/notes/{id}

Update a note

Parameters

  • Name
    task_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/tasks/{task_id}/notes/{id}
{
  "data": {
    "attributes": {
      "body": "string",
      "mentioned_user_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "task_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated note
{
  "data": {
    "attributes": {
      "body": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "mentioned_user_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "task_id": "00000000-0000-0000-0000-000000000000",
      "updated_at": "2026-01-01T00:00:00Z",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "notes"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/tasks/{task_id}/notes/{id}

Update a note

Parameters

  • Name
    task_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/tasks/{task_id}/notes/{id}
{
  "data": {
    "attributes": {
      "body": "string",
      "mentioned_user_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "task_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated note
{
  "data": {
    "attributes": {
      "body": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "mentioned_user_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "task_id": "00000000-0000-0000-0000-000000000000",
      "updated_at": "2026-01-01T00:00:00Z",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "notes"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/tasks/{task_id}/notes/{id}

Delete a note

Parameters

  • Name
    task_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/tasks/{task_id}/notes/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/tasks/{task_id}/notes/{id}

Referral Submissions

GET /api/v1/referral-contracts/{public_id}/spec

Get contract submission spec

Returns the OpenAPI spec describing the expected submission payload for a contract.

Parameters

  • Name
    public_id
    Type
    string
    required
    In
    in path
    Description
    Contract public ID
200 OpenAPI spec
{
  "info": {},
  "openapi": "string",
  "paths": {}
}
403 Access denied
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
404 Contract not found
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
POST /api/v1/referral-contracts/{public_id}/submissions

Submit a referral

Submit a referral against a contract. Authenticated with a partner API credential (mf_ref_ prefix).

Parameters

  • Name
    public_id
    Type
    string
    required
    In
    in path
    Description
    Contract public ID

Request body

  • Name
    data
    Type
    object
    Description
    Submission field data
  • Name
    external_reference
    Type
    string
    Description
    Partner-side reference ID
POST /api/v1/referral-contracts/{public_id}/submissions
{
  "data": {},
  "external_reference": "string"
}
201 Referral created
{
  "id": "00000000-0000-0000-0000-000000000000",
  "message": "string",
  "missing_fields": [
    "string"
  ],
  "status": "string"
}
403 Access denied
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
404 Contract not found
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
409 Duplicate external_reference
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
422 Validation error
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
POST /api/v1/referral-contracts/{public_id}/test

Test a referral submission

Validates a referral payload against the contract without creating any records. Use this to test your integration.

Parameters

  • Name
    public_id
    Type
    string
    required
    In
    in path
    Description
    Contract public ID

Request body

  • Name
    data
    Type
    object
    Description
    Submission field data
POST /api/v1/referral-contracts/{public_id}/test
{
  "data": {}
}
200 Validation result
{
  "message": "string",
  "missing_fields": [
    "string"
  ],
  "normalized": {},
  "valid": false
}
403 Access denied
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
404 Contract not found
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Reports

GET /api/v1/reports

List reports

Parameters

  • Name
    filter
    Type
    object
    In
    in query
    Description
  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
200 Report list
{
  "data": [
    {
      "attributes": {
        "configuration": {},
        "created_by_id": "00000000-0000-0000-0000-000000000000",
        "description": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_shared": false,
        "is_system": false,
        "name": "string",
        "report_type": "string",
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "reports"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/reports

Create a report

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/reports
{
  "data": {
    "attributes": {
      "configuration": {},
      "description": "string",
      "is_shared": false,
      "name": "string",
      "report_type": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created
{
  "data": {
    "attributes": {
      "configuration": {},
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_shared": false,
      "is_system": false,
      "name": "string",
      "report_type": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "reports"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/reports/{id}

Get a report

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Report
{
  "data": {
    "attributes": {
      "configuration": {},
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_shared": false,
      "is_system": false,
      "name": "string",
      "report_type": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "reports"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/reports/{id}

Update a report

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/reports/{id}
{
  "data": {
    "attributes": {
      "configuration": {},
      "description": "string",
      "is_shared": false,
      "name": "string",
      "report_type": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "configuration": {},
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_shared": false,
      "is_system": false,
      "name": "string",
      "report_type": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "reports"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/reports/{id}

Update a report

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/reports/{id}
{
  "data": {
    "attributes": {
      "configuration": {},
      "description": "string",
      "is_shared": false,
      "name": "string",
      "report_type": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "configuration": {},
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_shared": false,
      "is_system": false,
      "name": "string",
      "report_type": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "reports"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/reports/{id}

Delete a report

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/reports/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/reports/{id}
POST /api/v1/reports/{id}/run

Run a report and return results

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    parameters
    Type
    object
    Description
POST /api/v1/reports/{id}/run
{
  "parameters": {}
}
200 Report results
{
  "data": {}
}
422 Report could not be run
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Role Templates

GET /api/v1/role-templates

List role templates for a matter type

Parameters

  • Name
    matter_type_id
    Type
    string (uuid)
    required
    In
    in query
    Description
200 Role template list
{
  "data": [
    {
      "attributes": {
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_primary": false,
        "is_required": false,
        "matter_type_ids": [
          "00000000-0000-0000-0000-000000000000"
        ],
        "max_count": 0,
        "position": 0,
        "role_name": "string",
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "role_templates"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/role-templates

Create a role template

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/role-templates
{
  "data": {
    "attributes": {
      "is_primary": false,
      "is_required": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "max_count": 0,
      "position": 0,
      "role_name": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created
{
  "data": {
    "attributes": {
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_primary": false,
      "is_required": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "max_count": 0,
      "position": 0,
      "role_name": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "role_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/role-templates/{id}

Get a role template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Role template
{
  "data": {
    "attributes": {
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_primary": false,
      "is_required": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "max_count": 0,
      "position": 0,
      "role_name": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "role_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/role-templates/{id}

Update a role template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/role-templates/{id}
{
  "data": {
    "attributes": {
      "is_primary": false,
      "is_required": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "max_count": 0,
      "position": 0,
      "role_name": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_primary": false,
      "is_required": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "max_count": 0,
      "position": 0,
      "role_name": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "role_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/role-templates/{id}

Update a role template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/role-templates/{id}
{
  "data": {
    "attributes": {
      "is_primary": false,
      "is_required": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "max_count": 0,
      "position": 0,
      "role_name": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_primary": false,
      "is_required": false,
      "matter_type_ids": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "max_count": 0,
      "position": 0,
      "role_name": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "role_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/role-templates/{id}

Delete a role template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/role-templates/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/role-templates/{id}

Steps

POST /api/v1/matters/{matter_id}/change-step

Change matter to a different step

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    reason
    Type
    string
    Description
    Optional reason for step change
  • Name
    to_step_id
    Type
    string (uuid)
    required
    Description
    Target step ID
POST /api/v1/matters/{matter_id}/change-step
{
  "reason": "string",
  "to_step_id": "00000000-0000-0000-0000-000000000000"
}
200 Step changed
{
  "data": {
    "current_reporting_step_id": "00000000-0000-0000-0000-000000000000",
    "current_step_id": "00000000-0000-0000-0000-000000000000",
    "id": "00000000-0000-0000-0000-000000000000",
    "message": "string"
  }
}
422 Change error
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/matters/{matter_id}/step-history

Get step history for a matter

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Step history
{
  "data": [
    {
      "attributes": {
        "changed_by_name": "string",
        "duration_seconds": 0,
        "from_reporting_step_id": "00000000-0000-0000-0000-000000000000",
        "from_reporting_step_label": "string",
        "from_step_name": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "reason": "string",
        "reporting_transition": false,
        "to_reporting_step_id": "00000000-0000-0000-0000-000000000000",
        "to_reporting_step_label": "string",
        "to_step_name": "string"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "step_changes"
    }
  ],
  "meta": {
    "count": 0,
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
GET /api/v1/matters/{matter_id}/transitions

Get available step transitions for a matter

Parameters

  • Name
    matter_id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Available transitions
{
  "data": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "step_type": "string"
    }
  ]
}
GET /api/v1/workflows/{workflow_id}/steps

List steps for a workflow

Parameters

  • Name
    workflow_id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Step list
{
  "data": [
    {
      "attributes": {
        "color": "string",
        "description": "string",
        "icon": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_initial": false,
        "is_terminal": false,
        "name": "string",
        "position": 0,
        "reporting_step_id": "00000000-0000-0000-0000-000000000000",
        "settings": {},
        "step_type": "sequential",
        "updated_at": "2026-01-01T00:00:00Z",
        "workflow_id": "00000000-0000-0000-0000-000000000000"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "steps"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/workflows/{workflow_id}/steps

Create a step

Parameters

  • Name
    workflow_id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/workflows/{workflow_id}/steps
{
  "data": {
    "attributes": {
      "color": "string",
      "description": "string",
      "icon": "string",
      "is_initial": false,
      "is_terminal": false,
      "name": "string",
      "position": 0,
      "reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "settings": {},
      "step_type": "sequential",
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created step
{
  "data": {
    "attributes": {
      "color": "string",
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_initial": false,
      "is_terminal": false,
      "name": "string",
      "position": 0,
      "reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "settings": {},
      "step_type": "sequential",
      "updated_at": "2026-01-01T00:00:00Z",
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "steps"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/workflows/{workflow_id}/steps/{id}

Get a step

Parameters

  • Name
    workflow_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Step
{
  "data": {
    "attributes": {
      "color": "string",
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_initial": false,
      "is_terminal": false,
      "name": "string",
      "position": 0,
      "reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "settings": {},
      "step_type": "sequential",
      "updated_at": "2026-01-01T00:00:00Z",
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "steps"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/workflows/{workflow_id}/steps/{id}

Update a step

Parameters

  • Name
    workflow_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/workflows/{workflow_id}/steps/{id}
{
  "data": {
    "attributes": {
      "color": "string",
      "description": "string",
      "icon": "string",
      "is_initial": false,
      "is_terminal": false,
      "name": "string",
      "position": 0,
      "reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "settings": {},
      "step_type": "sequential",
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated step
{
  "data": {
    "attributes": {
      "color": "string",
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_initial": false,
      "is_terminal": false,
      "name": "string",
      "position": 0,
      "reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "settings": {},
      "step_type": "sequential",
      "updated_at": "2026-01-01T00:00:00Z",
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "steps"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/workflows/{workflow_id}/steps/{id}

Update a step

Parameters

  • Name
    workflow_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/workflows/{workflow_id}/steps/{id}
{
  "data": {
    "attributes": {
      "color": "string",
      "description": "string",
      "icon": "string",
      "is_initial": false,
      "is_terminal": false,
      "name": "string",
      "position": 0,
      "reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "settings": {},
      "step_type": "sequential",
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated step
{
  "data": {
    "attributes": {
      "color": "string",
      "description": "string",
      "icon": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_initial": false,
      "is_terminal": false,
      "name": "string",
      "position": 0,
      "reporting_step_id": "00000000-0000-0000-0000-000000000000",
      "settings": {},
      "step_type": "sequential",
      "updated_at": "2026-01-01T00:00:00Z",
      "workflow_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "steps"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/workflows/{workflow_id}/steps/{id}

Delete a step

Parameters

  • Name
    workflow_id
    Type
    string (uuid)
    required
    In
    in path
    Description
  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
409 Dependency error
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
422 Delete error
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}

Task Templates

GET /api/v1/task-templates

List task templates

Parameters

  • Name
    matter_type_id
    Type
    string (uuid)
    In
    in query
    Description
200 Task template list
{
  "data": [
    {
      "attributes": {
        "assignments": [
          {}
        ],
        "category": "string",
        "default_assignee": "string",
        "description": "string",
        "due_date_mode": "string",
        "due_key_date_type_id": "00000000-0000-0000-0000-000000000000",
        "due_offset_days": 0,
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_active": false,
        "is_compliance": false,
        "is_portal_visible": false,
        "name": "string",
        "position": 0,
        "priority": "string",
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "task_templates"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/task-templates

Create a task template

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/task-templates
{
  "data": {
    "attributes": {
      "assignments": [
        {}
      ],
      "category": "string",
      "default_assignee": "string",
      "description": "string",
      "due_date_mode": "string",
      "due_key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "due_offset_days": 0,
      "is_active": false,
      "is_compliance": false,
      "is_portal_visible": false,
      "name": "string",
      "position": 0,
      "priority": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created
{
  "data": {
    "attributes": {
      "assignments": [
        {}
      ],
      "category": "string",
      "default_assignee": "string",
      "description": "string",
      "due_date_mode": "string",
      "due_key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "due_offset_days": 0,
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_compliance": false,
      "is_portal_visible": false,
      "name": "string",
      "position": 0,
      "priority": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "task_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/task-templates/{id}

Get a task template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Task template
{
  "data": {
    "attributes": {
      "assignments": [
        {}
      ],
      "category": "string",
      "default_assignee": "string",
      "description": "string",
      "due_date_mode": "string",
      "due_key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "due_offset_days": 0,
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_compliance": false,
      "is_portal_visible": false,
      "name": "string",
      "position": 0,
      "priority": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "task_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/task-templates/{id}

Update a task template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/task-templates/{id}
{
  "data": {
    "attributes": {
      "assignments": [
        {}
      ],
      "category": "string",
      "default_assignee": "string",
      "description": "string",
      "due_date_mode": "string",
      "due_key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "due_offset_days": 0,
      "is_active": false,
      "is_compliance": false,
      "is_portal_visible": false,
      "name": "string",
      "position": 0,
      "priority": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "assignments": [
        {}
      ],
      "category": "string",
      "default_assignee": "string",
      "description": "string",
      "due_date_mode": "string",
      "due_key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "due_offset_days": 0,
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_compliance": false,
      "is_portal_visible": false,
      "name": "string",
      "position": 0,
      "priority": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "task_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/task-templates/{id}

Update a task template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/task-templates/{id}
{
  "data": {
    "attributes": {
      "assignments": [
        {}
      ],
      "category": "string",
      "default_assignee": "string",
      "description": "string",
      "due_date_mode": "string",
      "due_key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "due_offset_days": 0,
      "is_active": false,
      "is_compliance": false,
      "is_portal_visible": false,
      "name": "string",
      "position": 0,
      "priority": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "assignments": [
        {}
      ],
      "category": "string",
      "default_assignee": "string",
      "description": "string",
      "due_date_mode": "string",
      "due_key_date_type_id": "00000000-0000-0000-0000-000000000000",
      "due_offset_days": 0,
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_compliance": false,
      "is_portal_visible": false,
      "name": "string",
      "position": 0,
      "priority": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "task_templates"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/task-templates/{id}

Delete a task template

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/task-templates/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/task-templates/{id}

Tasks

GET /api/v1/tasks

List tasks

Parameters

  • Name
    filter
    Type
    object
    In
    in query
    Description
  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
200 Task list
{
  "data": [
    {
      "attributes": {
        "assigned_to_id": "00000000-0000-0000-0000-000000000000",
        "category": "string",
        "completed_at": "2026-01-01T00:00:00Z",
        "completed_by_id": "00000000-0000-0000-0000-000000000000",
        "completed_by_portal_user_id": "00000000-0000-0000-0000-000000000000",
        "created_by_id": "00000000-0000-0000-0000-000000000000",
        "description": "string",
        "due_date": "2026-01-01",
        "due_time": "string",
        "elapsed_seconds": 0,
        "estimated_minutes": 0,
        "finished_at": "2026-01-01T00:00:00Z",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_portal_visible": false,
        "is_recurring": false,
        "matter_id": "00000000-0000-0000-0000-000000000000",
        "name": "string",
        "parent_task_id": "00000000-0000-0000-0000-000000000000",
        "position": 0,
        "priority": "low",
        "recurrence_rule": {},
        "source": "string",
        "started_at": "2026-01-01T00:00:00Z",
        "status": "pending",
        "step_id": "00000000-0000-0000-0000-000000000000",
        "tags": [
          "string"
        ],
        "updated_at": "2026-01-01T00:00:00Z"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "tasks"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/tasks

Create a task

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/tasks
{
  "data": {
    "attributes": {
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "category": "string",
      "description": "string",
      "due_date": "2026-01-01",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_task_id": "00000000-0000-0000-0000-000000000000",
      "priority": "low",
      "status": "pending",
      "tags": [
        "string"
      ]
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created task
{
  "data": {
    "attributes": {
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "category": "string",
      "completed_at": "2026-01-01T00:00:00Z",
      "completed_by_id": "00000000-0000-0000-0000-000000000000",
      "completed_by_portal_user_id": "00000000-0000-0000-0000-000000000000",
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "due_date": "2026-01-01",
      "due_time": "string",
      "elapsed_seconds": 0,
      "estimated_minutes": 0,
      "finished_at": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_portal_visible": false,
      "is_recurring": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_task_id": "00000000-0000-0000-0000-000000000000",
      "position": 0,
      "priority": "low",
      "recurrence_rule": {},
      "source": "string",
      "started_at": "2026-01-01T00:00:00Z",
      "status": "pending",
      "step_id": "00000000-0000-0000-0000-000000000000",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "tasks"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/tasks/{id}

Get a task

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Task
{
  "data": {
    "attributes": {
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "category": "string",
      "completed_at": "2026-01-01T00:00:00Z",
      "completed_by_id": "00000000-0000-0000-0000-000000000000",
      "completed_by_portal_user_id": "00000000-0000-0000-0000-000000000000",
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "due_date": "2026-01-01",
      "due_time": "string",
      "elapsed_seconds": 0,
      "estimated_minutes": 0,
      "finished_at": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_portal_visible": false,
      "is_recurring": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_task_id": "00000000-0000-0000-0000-000000000000",
      "position": 0,
      "priority": "low",
      "recurrence_rule": {},
      "source": "string",
      "started_at": "2026-01-01T00:00:00Z",
      "status": "pending",
      "step_id": "00000000-0000-0000-0000-000000000000",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "tasks"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/tasks/{id}

Update a task

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/tasks/{id}
{
  "data": {
    "attributes": {
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "category": "string",
      "description": "string",
      "due_date": "2026-01-01",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_task_id": "00000000-0000-0000-0000-000000000000",
      "priority": "low",
      "status": "pending",
      "tags": [
        "string"
      ]
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated task
{
  "data": {
    "attributes": {
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "category": "string",
      "completed_at": "2026-01-01T00:00:00Z",
      "completed_by_id": "00000000-0000-0000-0000-000000000000",
      "completed_by_portal_user_id": "00000000-0000-0000-0000-000000000000",
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "due_date": "2026-01-01",
      "due_time": "string",
      "elapsed_seconds": 0,
      "estimated_minutes": 0,
      "finished_at": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_portal_visible": false,
      "is_recurring": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_task_id": "00000000-0000-0000-0000-000000000000",
      "position": 0,
      "priority": "low",
      "recurrence_rule": {},
      "source": "string",
      "started_at": "2026-01-01T00:00:00Z",
      "status": "pending",
      "step_id": "00000000-0000-0000-0000-000000000000",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "tasks"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/tasks/{id}

Update a task

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/tasks/{id}
{
  "data": {
    "attributes": {
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "category": "string",
      "description": "string",
      "due_date": "2026-01-01",
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_task_id": "00000000-0000-0000-0000-000000000000",
      "priority": "low",
      "status": "pending",
      "tags": [
        "string"
      ]
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated task
{
  "data": {
    "attributes": {
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "category": "string",
      "completed_at": "2026-01-01T00:00:00Z",
      "completed_by_id": "00000000-0000-0000-0000-000000000000",
      "completed_by_portal_user_id": "00000000-0000-0000-0000-000000000000",
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "due_date": "2026-01-01",
      "due_time": "string",
      "elapsed_seconds": 0,
      "estimated_minutes": 0,
      "finished_at": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_portal_visible": false,
      "is_recurring": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_task_id": "00000000-0000-0000-0000-000000000000",
      "position": 0,
      "priority": "low",
      "recurrence_rule": {},
      "source": "string",
      "started_at": "2026-01-01T00:00:00Z",
      "status": "pending",
      "step_id": "00000000-0000-0000-0000-000000000000",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "tasks"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/tasks/{id}

Delete a task

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/tasks/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/tasks/{id}
POST /api/v1/tasks/{id}/complete

Mark a task as completed

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Completed task
{
  "data": {
    "attributes": {
      "assigned_to_id": "00000000-0000-0000-0000-000000000000",
      "category": "string",
      "completed_at": "2026-01-01T00:00:00Z",
      "completed_by_id": "00000000-0000-0000-0000-000000000000",
      "completed_by_portal_user_id": "00000000-0000-0000-0000-000000000000",
      "created_by_id": "00000000-0000-0000-0000-000000000000",
      "description": "string",
      "due_date": "2026-01-01",
      "due_time": "string",
      "elapsed_seconds": 0,
      "estimated_minutes": 0,
      "finished_at": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_portal_visible": false,
      "is_recurring": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "name": "string",
      "parent_task_id": "00000000-0000-0000-0000-000000000000",
      "position": 0,
      "priority": "low",
      "recurrence_rule": {},
      "source": "string",
      "started_at": "2026-01-01T00:00:00Z",
      "status": "pending",
      "step_id": "00000000-0000-0000-0000-000000000000",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "tasks"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}

Time Entries

GET /api/v1/time-entries

List time entries

Parameters

  • Name
    filter
    Type
    object
    In
    in query
    Description
  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
  • Name
    sort
    Type
    string
    In
    in query
    Description
200 Time entry list
{
  "data": [
    {
      "attributes": {
        "amount_cents": 0,
        "category": "string",
        "date": "2026-01-01",
        "description": "string",
        "duration_minutes": 0,
        "end_time": "2026-01-01T00:00:00Z",
        "inserted_at": "2026-01-01T00:00:00Z",
        "invoice_id": "00000000-0000-0000-0000-000000000000",
        "is_billable": false,
        "matter_id": "00000000-0000-0000-0000-000000000000",
        "rate_cents": 0,
        "source": "string",
        "start_time": "2026-01-01T00:00:00Z",
        "status": "string",
        "tags": [
          "string"
        ],
        "updated_at": "2026-01-01T00:00:00Z",
        "user_id": "00000000-0000-0000-0000-000000000000"
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "time_entries"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/time-entries

Create a time entry

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/time-entries
{
  "data": {
    "attributes": {
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "duration_minutes": 0,
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "rate_cents": 0,
      "tags": [
        "string"
      ],
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created time entry
{
  "data": {
    "attributes": {
      "amount_cents": 0,
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "duration_minutes": 0,
      "end_time": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_id": "00000000-0000-0000-0000-000000000000",
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "rate_cents": 0,
      "source": "string",
      "start_time": "2026-01-01T00:00:00Z",
      "status": "string",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "time_entries"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/time-entries/{id}

Get a time entry

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Time entry
{
  "data": {
    "attributes": {
      "amount_cents": 0,
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "duration_minutes": 0,
      "end_time": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_id": "00000000-0000-0000-0000-000000000000",
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "rate_cents": 0,
      "source": "string",
      "start_time": "2026-01-01T00:00:00Z",
      "status": "string",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "time_entries"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/time-entries/{id}

Update a time entry

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/time-entries/{id}
{
  "data": {
    "attributes": {
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "duration_minutes": 0,
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "rate_cents": 0,
      "tags": [
        "string"
      ]
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated time entry
{
  "data": {
    "attributes": {
      "amount_cents": 0,
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "duration_minutes": 0,
      "end_time": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_id": "00000000-0000-0000-0000-000000000000",
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "rate_cents": 0,
      "source": "string",
      "start_time": "2026-01-01T00:00:00Z",
      "status": "string",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "time_entries"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/time-entries/{id}

Update a time entry

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/time-entries/{id}
{
  "data": {
    "attributes": {
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "duration_minutes": 0,
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "rate_cents": 0,
      "tags": [
        "string"
      ]
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated time entry
{
  "data": {
    "attributes": {
      "amount_cents": 0,
      "category": "string",
      "date": "2026-01-01",
      "description": "string",
      "duration_minutes": 0,
      "end_time": "2026-01-01T00:00:00Z",
      "inserted_at": "2026-01-01T00:00:00Z",
      "invoice_id": "00000000-0000-0000-0000-000000000000",
      "is_billable": false,
      "matter_id": "00000000-0000-0000-0000-000000000000",
      "rate_cents": 0,
      "source": "string",
      "start_time": "2026-01-01T00:00:00Z",
      "status": "string",
      "tags": [
        "string"
      ],
      "updated_at": "2026-01-01T00:00:00Z",
      "user_id": "00000000-0000-0000-0000-000000000000"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "time_entries"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/time-entries/{id}

Delete a time entry

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
DELETE /api/v1/time-entries/{id}
curl -X DELETE \
     -H "Authorization: Bearer {token}" \
     https://app.matterfirst.com.au/api/v1/time-entries/{id}

Workflows

GET /api/v1/workflows

List workflows

Parameters

  • Name
    page_number
    Type
    integer
    In
    in query
    Description
  • Name
    page_size
    Type
    integer
    In
    in query
    Description
200 Workflow list
{
  "data": [
    {
      "attributes": {
        "description": "string",
        "inserted_at": "2026-01-01T00:00:00Z",
        "is_active": false,
        "is_template": false,
        "name": "string",
        "updated_at": "2026-01-01T00:00:00Z",
        "version": 0
      },
      "id": "00000000-0000-0000-0000-000000000000",
      "type": "workflows"
    }
  ],
  "links": {
    "first": "string",
    "last": "string",
    "next": "string",
    "prev": "string",
    "self": "string"
  },
  "meta": {
    "page": 0,
    "page_size": 0,
    "total": 0,
    "total_pages": 0
  }
}
POST /api/v1/workflows

Create a workflow

Request body

  • Name
    data
    Type
    object
    required
    Description
POST /api/v1/workflows
{
  "data": {
    "attributes": {
      "description": "string",
      "is_active": false,
      "is_template": false,
      "name": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
201 Created workflow
{
  "data": {
    "attributes": {
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_template": false,
      "name": "string",
      "updated_at": "2026-01-01T00:00:00Z",
      "version": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "workflows"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
GET /api/v1/workflows/{id}

Get a workflow

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
200 Workflow
{
  "data": {
    "attributes": {
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_template": false,
      "name": "string",
      "updated_at": "2026-01-01T00:00:00Z",
      "version": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "workflows"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
PUT /api/v1/workflows/{id}

Update a workflow

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PUT /api/v1/workflows/{id}
{
  "data": {
    "attributes": {
      "description": "string",
      "is_active": false,
      "is_template": false,
      "name": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_template": false,
      "name": "string",
      "updated_at": "2026-01-01T00:00:00Z",
      "version": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "workflows"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
PATCH /api/v1/workflows/{id}

Update a workflow

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    data
    Type
    object
    required
    Description
PATCH /api/v1/workflows/{id}
{
  "data": {
    "attributes": {
      "description": "string",
      "is_active": false,
      "is_template": false,
      "name": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "string"
  }
}
200 Updated
{
  "data": {
    "attributes": {
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_template": false,
      "name": "string",
      "updated_at": "2026-01-01T00:00:00Z",
      "version": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "workflows"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Validation errors
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
DELETE /api/v1/workflows/{id}

Delete a workflow

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description
409 Dependency error
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
422 Delete error
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}
POST /api/v1/workflows/{id}/clone

Clone a workflow

Parameters

  • Name
    id
    Type
    string (uuid)
    required
    In
    in path
    Description

Request body

  • Name
    name
    Type
    string
    required
    Description
POST /api/v1/workflows/{id}/clone
{
  "name": "string"
}
201 Cloned workflow
{
  "data": {
    "attributes": {
      "description": "string",
      "inserted_at": "2026-01-01T00:00:00Z",
      "is_active": false,
      "is_template": false,
      "name": "string",
      "updated_at": "2026-01-01T00:00:00Z",
      "version": 0
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "workflows"
  },
  "meta": {
    "timestamp": "2026-01-01T00:00:00Z"
  }
}
422 Clone error
{
  "errors": [
    {
      "detail": "string",
      "source": {
        "pointer": "string"
      },
      "status": "string",
      "title": "string"
    }
  ]
}