openapi: 3.2.0 info: title: Lawmatics OAuth Collections API version: 1.22.0 description: 'The official Lawmatics REST API for legal CRM, client intake and law firm automation. Manage matters (prospects), contacts, companies, custom forms and form entries, custom fields, events and appointments, tasks, notes, files, tags, users, time entries, expenses, invoices and transactions. Authentication is OAuth 2.0 authorization code grant; access tokens do not expire, there are no refresh tokens, and Lawmatics does not currently support scopes - an authorized app receives full CRUD access to the granted account. All list endpoints support the shared query-parameter grammar documented in the Param Guide: `fields` (field selection, one level deep, `fields=all` to expand), `page` (pagination), `sort_by`/`sort_order`, and `filter_by`/`filter_on`/`filter_with` (one filter at a time; operators `=`, `!=`, `<=`, `<`, `>=`, `>`, `like`, `ilike`, `null`, `not_null`). Responses follow a JSON:API-style `data` / `attributes` / `relationships` envelope.' contact: name: Lawmatics API Support email: api@lawmatics.com url: https://docs.lawmatics.com/ termsOfService: https://www.lawmatics.com/terms-of-use servers: - url: https://api.lawmatics.com description: Lawmatics production API security: - oauth2: [] - bearerAuth: [] tags: - name: Collections paths: /v1/collections: get: operationId: getCollections summary: Collections description: 'Retrieves a list of all Collections in the Lawmatics account. Endpoint GET {{host}}/v1/collections Authentication This request uses OAuth 2.0. Ensure a valid access_token is set in the active environment. Headers Key Value Content-Type application/json Response Returns a JSON object with a data array. Each item in the array represents a Collection and includes: Field Type Description id string Unique identifier for the collection type string Resource type — always "collection" attributes.name string Name of the collection attributes.custom_fields array List of custom fields associated with the collection attributes.created_at string (ISO 8601) Timestamp when the collection was created attributes.updated_at string (ISO 8601) Timestamp when the collection was last updated Custom Field Object Field Type Description id string Unique identifier for the custom field name string Display name of the custom field field_type string Type of field (e.g., list, multi_picklist, currency) visibility string Visibility setting (e.g., default) type string Parent resource type — always "Collection" list_options array Available options for list/picklist fields created_at string (ISO 8601) Timestamp when the field was created updated_at string (ISO 8601) Timestamp when the field was last updated' tags: - Collections responses: default: description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher. content: application/json: schema: type: object examples: collections: summary: Collections value: data: - id: '6' type: collection attributes: name: Test custom_fields: - id: '306' name: MultiTest field_type: multi_picklist visibility: default type: Collection list_options: - id: '56' name: One - id: '57' name: Two - id: '58' name: Three created_at: '2026-05-27T15:09:15.359-07:00' updated_at: '2026-05-27T15:09:15.359-07:00' created_at: '2026-05-27T15:09:15.354-07:00' updated_at: '2026-05-27T15:09:15.354-07:00' - id: '5' type: collection attributes: name: Bank Accounts custom_fields: - id: '305' name: Type field_type: list visibility: default type: Collection list_options: - id: '54' name: Checking - id: '55' name: Savings created_at: '2026-05-27T14:52:05.096-07:00' updated_at: '2026-05-27T14:52:05.096-07:00' - id: '304' name: Balance field_type: currency visibility: default type: Collection created_at: '2026-05-27T14:52:05.090-07:00' updated_at: '2026-05-27T14:52:05.090-07:00' - id: '303' name: Name field_type: text visibility: default type: Collection created_at: '2026-05-27T14:52:05.057-07:00' updated_at: '2026-05-27T14:52:05.057-07:00' created_at: '2026-05-27T14:52:05.019-07:00' updated_at: '2026-05-27T14:52:05.019-07:00' - id: '2' type: collection attributes: name: Albums custom_fields: - id: '299' name: Artist Name field_type: text visibility: default type: Collection created_at: '2026-05-26T16:10:41.056-07:00' updated_at: '2026-05-26T16:10:41.056-07:00' - id: '298' name: Name field_type: text visibility: default type: Collection created_at: '2026-05-26T16:09:11.640-07:00' updated_at: '2026-05-26T16:11:14.439-07:00' created_at: '2026-05-26T16:09:11.630-07:00' updated_at: '2026-05-26T16:09:11.630-07:00' - id: '1' type: collection attributes: name: Movies custom_fields: - id: '295' name: Name field_type: string visibility: default type: Collection created_at: '2026-05-26T13:09:49.162-07:00' updated_at: '2026-05-26T13:09:49.162-07:00' - id: '296' name: Director field_type: string visibility: default type: Collection created_at: '2026-05-26T13:09:49.168-07:00' updated_at: '2026-05-26T13:09:49.168-07:00' - id: '297' name: Genre field_type: list visibility: default type: Collection list_options: - id: '49' name: Horror - id: '50' name: Romance - id: '51' name: Action - id: '52' name: Comedy - id: '53' name: Drama created_at: '2026-05-26T13:09:49.192-07:00' updated_at: '2026-05-26T13:09:49.192-07:00' created_at: '2026-05-26T13:09:49.160-07:00' updated_at: '2026-05-26T13:09:49.160-07:00' meta: total_pages: 1 limit_per_page: 25 total_entries: 4 links: self: /v1/collections?page=1 '401': description: Unauthorized - missing or invalid OAuth 2.0 bearer token '429': description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned headers: Retry-After: description: Seconds to wait before retrying schema: type: integer post: operationId: createCollection summary: Create Collection description: 'Creates a new Collection in Lawmatics. Collections are used to group and organize records (such as contacts or matters) with custom fields tailored to your needs. Request Body The request body must be a JSON object with the following fields: Field Type Required Description name string Yes The name of the collection to create. custom_fields array No An array of custom field definitions to attach to the collection. Custom Field Object Each object in the custom_fields array supports the following properties: Field Type Required Description name string Yes The display name of the custom field. field_type string Yes The type of the field. Supported values: integer, boolean, string, text, currency, date, time, datetime, list, lookup, multi_picklist list_options array Only for list and multi_picklist types An array of option objects, each with a name property, defining the selectable values for a list field. Response Returns 201 Created on success with a JSON object containing the created collection''s data under the data key. Response Body Field Type Description data.id string The unique ID of the newly created collection. data.type string The resource type (collection). data.attributes.name string The name of the collection. data.attributes.custom_fields array The list of custom fields created for this collection, each including id, name, field_type, visibility, created_at, and updated_at. data.attributes.created_at string ISO 8601 timestamp of when the collection was created. data.attributes.updated_at string ISO 8601 timestamp of when the collection was last updated.' tags: - Collections requestBody: required: true content: application/json: schema: type: object example: name: Bank Accounts custom_fields: - name: Name field_type: text - name: Balance field_type: currency - name: Type field_type: list list_options: - name: Checking - name: Savings responses: default: description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher. content: application/json: schema: type: object examples: createCollection: summary: Create Collection value: data: id: '7' type: collection attributes: name: Bank Accounts custom_fields: - id: '307' name: Name field_type: text visibility: default type: Collection created_at: '2026-05-28T11:10:33.113-07:00' updated_at: '2026-05-28T11:10:33.113-07:00' - id: '308' name: Balance field_type: currency visibility: default type: Collection created_at: '2026-05-28T11:10:33.236-07:00' updated_at: '2026-05-28T11:10:33.236-07:00' - id: '309' name: Type field_type: list visibility: default type: Collection list_options: - id: '59' name: Checking - id: '60' name: Savings created_at: '2026-05-28T11:10:33.249-07:00' updated_at: '2026-05-28T11:10:33.249-07:00' created_at: '2026-05-28T11:10:33.109-07:00' updated_at: '2026-05-28T11:10:33.109-07:00' '401': description: Unauthorized - missing or invalid OAuth 2.0 bearer token '429': description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned headers: Retry-After: description: Seconds to wait before retrying schema: type: integer /v1/collections/{collection_id}: get: operationId: getCollection summary: Collection description: 'Retrieves a single Collection by its ID. Path Variables Variable Description collection_id The unique identifier of the collection to retrieve. Response Returns a data object representing the collection with the following attributes: Field Type Description id string Unique identifier of the collection. type string Resource type ("collection"). attributes.name string Name of the collection. attributes.custom_fields array List of custom fields defined for the collection. attributes.created_at string ISO 8601 timestamp of when the collection was created. attributes.updated_at string ISO 8601 timestamp of when the collection was last updated. Custom Field Object Field Type Description id string Unique identifier of the custom field. name string Display name of the custom field. field_type string Data type of the field (e.g., text, currency, list). visibility string Visibility setting of the field. type string Resource type ("Collection"). list_options array Available options for list type fields. created_at string ISO 8601 timestamp of when the field was created. updated_at string ISO 8601 timestamp of when the field was last updated.' tags: - Collections parameters: - name: collection_id in: path required: true description: The collection id schema: type: string responses: default: description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher. content: application/json: schema: type: object examples: collection: summary: Collection value: data: id: '5' type: collection attributes: name: Bank Accounts custom_fields: - id: '305' name: Type field_type: list visibility: default type: Collection list_options: - id: '54' name: Checking - id: '55' name: Savings created_at: '2026-05-27T14:52:05.096-07:00' updated_at: '2026-05-27T14:52:05.096-07:00' - id: '304' name: Balance field_type: currency visibility: default type: Collection created_at: '2026-05-27T14:52:05.090-07:00' updated_at: '2026-05-27T14:52:05.090-07:00' - id: '303' name: Name field_type: text visibility: default type: Collection created_at: '2026-05-27T14:52:05.057-07:00' updated_at: '2026-05-27T14:52:05.057-07:00' created_at: '2026-05-27T14:52:05.019-07:00' updated_at: '2026-05-27T14:52:05.019-07:00' '401': description: Unauthorized - missing or invalid OAuth 2.0 bearer token '429': description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned headers: Retry-After: description: Seconds to wait before retrying schema: type: integer put: operationId: updateCollection summary: Update Collection description: 'Updates an existing collection by its ID. This endpoint allows you to modify the collection''s associated custom fields. URL Parameters Parameter Type Description id integer The unique identifier of the collection to update. Provided as a path segment (e.g., 2 in /v1/collections/2). Request Body Send a JSON object with the following fields: Field Type Required Description custom_fields array of objects Yes List of custom fields to associate with the collection. custom_fields Object Properties Property Type Description id string The unique identifier of the custom field (e.g., "298"). field_type string The type of the custom field (e.g., "text").' tags: - Collections parameters: - name: collection_id in: path required: true description: The collection id schema: type: string requestBody: required: true content: application/json: schema: type: object example: custom_fields: - id: '{{collection_custom_field_id}}' name: Account Balance responses: default: description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher. content: application/json: schema: type: object examples: updateCollection: summary: Update Collection value: data: id: '7' type: collection attributes: name: Bank Accounts custom_fields: - id: '309' name: Type field_type: list visibility: default type: Collection list_options: - id: '59' name: Checking - id: '60' name: Savings created_at: '2026-05-28T11:10:33.249-07:00' updated_at: '2026-05-28T11:10:33.249-07:00' - id: '308' name: Account Balance field_type: currency visibility: default type: Collection created_at: '2026-05-28T11:10:33.236-07:00' updated_at: '2026-05-28T11:12:08.285-07:00' - id: '307' name: Name field_type: text visibility: default type: Collection created_at: '2026-05-28T11:10:33.113-07:00' updated_at: '2026-05-28T11:10:33.113-07:00' created_at: '2026-05-28T11:10:33.109-07:00' updated_at: '2026-05-28T11:10:33.109-07:00' '401': description: Unauthorized - missing or invalid OAuth 2.0 bearer token '429': description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned headers: Retry-After: description: Seconds to wait before retrying schema: type: integer delete: operationId: deleteCollection summary: Delete Collection description: 'Deletes an existing collection by its ID. Path Variables Variable Description collection_id The unique identifier of the collection to delete. Response Returns a 200 OK with the deleted collection''s data on success, including: - id – The collection''s unique identifier. - type – Resource type (collection). - attributes – Collection attributes: - name – Name of the collection. - custom_fields – Array of custom fields associated with the collection. - created_at – Timestamp when the collection was created. - updated_at – Timestamp when the collection was last updated.' tags: - Collections parameters: - name: collection_id in: path required: true description: The collection id schema: type: string responses: default: description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher. content: application/json: schema: type: object examples: deleteCollection: summary: Delete Collection value: data: id: '5' type: collection attributes: name: Bank Accounts custom_fields: [] created_at: '2026-05-27T14:52:05.019-07:00' updated_at: '2026-05-28T11:10:19.399-07:00' '401': description: Unauthorized - missing or invalid OAuth 2.0 bearer token '429': description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned headers: Retry-After: description: Seconds to wait before retrying schema: type: integer /v1/collection_items: get: operationId: getCollectionItems summary: Collection Items description: 'Returns a paginated list of all collection items. Query Parameters Supports standard Lawmatics query parameters for filtering, sorting, pagination, and field selection. Response Returns a 200 OK with an array of collection item objects under data. Each item includes: - id – The collection item''s unique identifier. - type – Resource type (collection_item). - attributes – Collection item attributes: - collection_id – The ID of the parent collection. - contactable_type – The type of the associated record (e.g., Prospect, Contact). - contactable_id – The ID of the associated record. - custom_field_values – Array of custom field values for this item. - created_at – Timestamp when the item was created. - updated_at – Timestamp when the item was last updated.' tags: - Collections responses: default: description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher. content: application/json: schema: type: object examples: collectionItems: summary: Collection Items value: data: - id: '1' type: collection_item attributes: collection_id: 3 contactable_type: Prospect contactable_id: 184 custom_field_values: - id: '235' custom_field_id: '302' name: Name field_type: text value: The Matrix formatted_value: The Matrix created_at: '2026-05-29T16:02:51.434-07:00' updated_at: '2026-05-29T16:02:51.482-07:00' meta: total_pages: 1 limit_per_page: 25 total_entries: 1 links: self: /v1/collection_items?page=1 '401': description: Unauthorized - missing or invalid OAuth 2.0 bearer token '429': description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned headers: Retry-After: description: Seconds to wait before retrying schema: type: integer post: operationId: createCollectionItem summary: Create Collection Item description: "Creates a new collection item, associating a contact or matter record with a collection and optionally setting custom field values.\n\nRequest Body\n\nField\nType\nRequired\nDescription\n\ncontactable_type\nstring\nYes\nThe type of the associated record. Accepted values: Prospect, Contact.\n\ncontactable_id\ninteger\nYes\nThe ID of the associated record.\n\ncollection_id\ninteger\nYes\nThe ID of the collection to add the item to.\n\ncustom_field_values\narray\nNo\nArray of custom field value objects to set on the item.\n\ncustom_field_values Object\n\nField\nType\nDescription\n\nid\ninteger\nThe ID of the custom field.\n\nvalue\nstring\nThe value to set for the custom field.\n\nExample Request Body\n{\n \"contactable_type\": \"Prospect\",\n \"contactable_id\": 185,\n \"collection_id\": 1,\n \"custom_field_values\": [\n {\n \"id\": 295,\n \"value\": \"The Matrix\"\n },\n {\n \"id\": 296,\n \"value\": \"1999-03-31\"\n }\n ]\n}\n\nResponse\nReturns a 201 Created with the newly created collection item object under data." tags: - Collections responses: default: description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher. content: application/json: schema: type: object examples: createCollectionItem: summary: Create Collection Item value: data: id: '4' type: collection_item attributes: collection_id: 1 contactable_type: Prospect contactable_id: 185 custom_field_values: - id: '240' custom_field_id: '295' name: Name field_type: string value: The Matrix formatted_value: The Matrix - id: '241' custom_field_id: '296' name: Director field_type: string value: '1999-03-31' formatted_value: '1999-03-31' created_at: '2026-05-28T11:07:47.114-07:00' updated_at: '2026-05-28T11:07:47.172-07:00' '401': description: Unauthorized - missing or invalid OAuth 2.0 bearer token '429': description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned headers: Retry-After: description: Seconds to wait before retrying schema: type: integer /v1/collection_items/{collection_item_id}: get: operationId: getCollectionItem summary: Collection Item description: 'Returns a single collection item by its ID. Path Variables Variable Description collection_item_id The unique identifier of the collection item to retrieve. Response Returns a 200 OK with the collection item object under data, including: - id – The collection item''s unique identifier. - type – Resource type (collection_item). - attributes – Collection item attributes: - collection_id – The ID of the parent collection. - contactable_type – The type of the associated record (e.g., Prospect, Contact). - contactable_id – The ID of the associated record. - custom_field_values – Array of custom field values for this item. - created_at – Timestamp when the item was created. - updated_at – Timestamp when the item was last updated.' tags: - Collections parameters: - name: collection_item_id in: path required: true description: The collection item id schema: type: string responses: default: description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher. content: application/json: schema: type: object examples: collectionItem: summary: Collection Item value: data: id: '1' type: collection_item attributes: collection_id: 3 contactable_type: Prospect contactable_id: 184 custom_field_values: - id: '235' custom_field_id: '302' name: Name field_type: text value: The Matrix formatted_value: The Matrix created_at: '2026-05-29T16:02:51.434-07:00' updated_at: '2026-05-29T16:02:51.482-07:00' '401': description: Unauthorized - missing or invalid OAuth 2.0 bearer token '429': description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned headers: Retry-After: description: Seconds to wait before retrying schema: type: integer put: operationId: updateCollectionItem summary: Update Collection Item description: 'Updates an existing collection item''s custom field values. Path Variables Variable Description collection_item_id The unique identifier of the collection item to update. Request Body Field Type Required Description custom_field_values array Yes Array of custom field value objects to update on the item. custom_field_values Object Field Type Description id string The ID of the custom field. name string The name of the custom field. value string The new value to set for the custom field. Response Returns a 200 OK with the updated collection item object under data.' tags: - Collections parameters: - name: collection_item_id in: path required: true description: The collection item id schema: type: string requestBody: required: true content: application/json: schema: type: object example: custom_field_values: - id: '{{custom_field_id}}' value: Wachowski Sisters responses: default: description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher. content: application/json: schema: type: object examples: updateCollectionItem: summary: Update Collection Item value: data: id: '3' type: collection_item attributes: collection_id: 1 contactable_type: Prospect contactable_id: 185 custom_field_values: - id: '238' custom_field_id: '295' name: Name field_type: string value: The Matrix formatted_value: The Matrix - id: '239' custom_field_id: '296' name: Director field_type: string value: Wachowski Sisters formatted_value: Wachowski Sisters created_at: '2026-05-26T16:33:22.565-07:00' updated_at: '2026-05-26T16:39:00.126-07:00' '401': description: Unauthorized - missing or invalid OAuth 2.0 bearer token '429': description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned headers: Retry-After: description: Seconds to wait before retrying schema: type: integer delete: operationId: deleteCollectionItem summary: Delete Collection Item description: 'Deletes an existing collection item by its ID. Path Variables Variable Description collection_item_id The unique identifier of the collection item to delete. Response Returns a 200 OK with the deleted collection item''s data on success, including: - id – The collection item''s unique identifier. - type – Resource type (collection_item). - attributes – Collection item attributes: - collection_id – The ID of the parent collection. - contactable_type – The type of the associated record. - contactable_id – The ID of the associated record. - custom_field_values – Array of custom field values associated with the item. - created_at – Timestamp when the item was created. - updated_at – Timestamp when the item was last updated.' tags: - Collections parameters: - name: collection_item_id in: path required: true description: The collection item id schema: type: string responses: default: description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher. content: application/json: schema: type: object examples: deleteCollectionItem: summary: Delete Collection Item value: data: id: '3' type: collection_item attributes: collection_id: 1 contactable_type: Prospect contactable_id: 185 custom_field_values: [] created_at: '2026-05-26T16:33:22.565-07:00' updated_at: '2026-05-28T11:08:51.118-07:00' '401': description: Unauthorized - missing or invalid OAuth 2.0 bearer token '429': description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned headers: Retry-After: description: Seconds to wait before retrying schema: type: integer components: securitySchemes: oauth2: type: oauth2 description: OAuth 2.0 authorization code grant. Register a developer app at https://app.lawmatics.com/settings/developers (developer settings must be enabled by Lawmatics support). Access tokens are non-expiring; no refresh tokens are issued and scopes are not supported. flows: authorizationCode: authorizationUrl: https://app.lawmatics.com/oauth/authorize tokenUrl: https://api.lawmatics.com/oauth/token scopes: {} bearerAuth: type: http scheme: bearer description: 'The OAuth 2.0 access token is sent as `Authorization: Bearer `.' externalDocs: description: Official Lawmatics RESTful API documentation (Postman) url: https://docs.lawmatics.com/ x-provenance: generated: '2026-08-13' method: derived publisher: API Evangelist source: https://docs.lawmatics.com/api/collections/26379991/2sA3JM7gbw?segregateAuth=true&versionTag=latest source_type: Postman collection published by Lawmatics as its official API documentation source_file: postman/lawmatics-oauth-api.postman_collection.json note: 'NOT published by Lawmatics. Lawmatics publishes no OpenAPI. Every path, method, parameter, request example and response example in this document was converted mechanically from the provider-published Postman collection "Lawmatics OAuth API v1.22.0"; nothing was invented. Schemas are typed as generic objects because the collection carries examples, not JSON Schema. The server URL is the base documented in the collection Param Guide (https://api.lawmatics.com), not the collection''s disabled {{host}} placeholder. The 401 and 429 responses added to every authenticated operation are the provider-documented, globally applicable responses: the collection''s auth guide states a per-firm rate limit applies to all endpoints and returns 429 with a Retry-After header, and https://api.lawmatics.com/v1/contacts was observed returning 401 unauthenticated on 2026-08-13.'