openapi: 3.2.0
info:
description: Accela API for transactional records and related record resources
title: Records/Contacts/Custom Tables API
version: v4
servers:
- url: https://apis.accela.com/
tags:
- name: Records/Contacts/Custom Tables
paths:
/v4/records/{recordId}/contacts/{contactId}/customTables:
get:
description: 'Gets the custom tables associated with the specified record contact.
**API Endpoint**: GET /v4/records/{recordId}/contacts/{contactId}/customTables
**Scope**: records
**App Type**: Agency
**Authorization Type**: Access token
**Civic Platform version**: 8.0.3'
summary: Get All Custom Tables for Record Contact
operationId: v4.get.records.recordId.contacts.contactId.customTables
tags:
- Records/Contacts/Custom Tables
parameters:
- $ref: '#/components/parameters/authHeaderParam'
- $ref: '#/components/parameters/recordId'
- $ref: '#/components/parameters/contactId'
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/lang'
responses:
'200':
description: 'Successful request. Note: A successful request may return no data matching the filter criteria. A successful request may also return messages related to Event Manager Scripting Engine back-end processing.'
content:
application/json:
schema:
$ref: '#/components/schemas/response_tableModelArray'
'400':
description: Invalid request.
'401':
description: Authorization failed.
'403':
description: Forbidden request.
'404':
description: Requested resource not found.
'500':
description: Internal server error or bad connection.
put:
description: 'Updates the custom tables for the specified record contact. The request body is an array of custom tables, each with the custom table id and an array of rows. Use this API to add, update and delete rows from an existing custom table. (Custom tables are defined in Civic Platform.) Note that the modified custom table data only applies to the transactional record contact, not the reference contact.
**API Endpoint**: PUT /v4/records/{recordId}/contacts/{contactId}/customTables
**Scope**: records
**App Type**: Agency
**Authorization Type**: Access token
**Civic Platform version**: 8.0.3'
summary: Update Record Custom Tables
operationId: v4.put.records.recordId.contacts.contactId.customTables
tags:
- Records/Contacts/Custom Tables
parameters:
- $ref: '#/components/parameters/authHeaderParam'
- $ref: '#/components/parameters/recordId'
- $ref: '#/components/parameters/contactId'
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/lang'
responses:
'200':
description: 'Successful request. Note: A successful request may return no data matching the filter criteria. A successful request may also return messages related to Event Manager Scripting Engine back-end processing.'
content:
application/json:
schema:
$ref: '#/components/schemas/response_resultModelArray'
'400':
description: Invalid request.
'401':
description: Authorization failed.
'403':
description: Forbidden request.
'404':
description: Requested resource not found.
'500':
description: Internal server error or bad connection.
requestBody:
content:
application/json:
schema:
items:
$ref: '#/components/schemas/tableModel'
type: array
description: The custom table information to be updated.
/v4/records/{recordId}/contacts/{contactId}/customTables/meta:
get:
description: 'Gets the metadata of all custom tables associated with the specified record contact.
**API Endpoint**: GET /v4/records/{recordId}/contacts/{contactId}/customTables/meta
**Scope**: records
**App Type**: Agency
**Authorization Type**: Access token
**Civic Platform version**: 8.0.3'
summary: Get Metadata of All Record Contact Custom Tables
operationId: v4.get.records.recordId.contacts.contactId.customTables.meta
tags:
- Records/Contacts/Custom Tables
parameters:
- $ref: '#/components/parameters/authHeaderParam'
- $ref: '#/components/parameters/recordId'
- $ref: '#/components/parameters/contactId'
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/lang'
responses:
'200':
description: 'Successful request. Note: A successful request may return no data matching the filter criteria. A successful request may also return messages related to Event Manager Scripting Engine back-end processing.'
content:
application/json:
schema:
$ref: '#/components/schemas/response_customFormSubgroupModelArray'
'400':
description: Invalid request.
'401':
description: Authorization failed.
'403':
description: Forbidden request.
'404':
description: Requested resource not found.
'500':
description: Internal server error or bad connection.
/v4/records/{recordId}/contacts/{contactId}/customTables/{tableId}/meta:
get:
description: 'Gets the metadata of a specified custom table associated with the specified record contact.
**API Endpoint**: GET /v4/records/{recordId}/contacts/{contactId}/customTables/{tableId}/meta
**Scope**: records
**App Type**: Agency
**Authorization Type**: Access token
**Civic Platform version**: 8.0.3'
summary: Get Metadata of a Record Contact Custom Table
operationId: v4.get.records.recordId.contacts.contactId.customTables.tableId.meta
tags:
- Records/Contacts/Custom Tables
parameters:
- $ref: '#/components/parameters/authHeaderParam'
- $ref: '#/components/parameters/recordId'
- $ref: '#/components/parameters/contactId'
- description: The custom table ID to fetch.
in: path
name: tableId
required: true
schema:
type: string
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/lang'
responses:
'200':
description: 'Successful request. Note: A successful request may return no data matching the filter criteria. A successful request may also return messages related to Event Manager Scripting Engine back-end processing.'
content:
application/json:
schema:
$ref: '#/components/schemas/response_customFormSubgroupModelArray'
'400':
description: Invalid request.
'401':
description: Authorization failed.
'403':
description: Forbidden request.
'404':
description: Requested resource not found.
'500':
description: Internal server error or bad connection.
components:
schemas:
response_resultModelArray:
type: object
properties:
result:
items:
$ref: '#/components/schemas/resultModel'
type: array
status:
type: integer
description: The HTTP return status.
aSITableDrill:
type: object
properties:
children:
items:
$ref: '#/components/schemas/childDrill'
type: array
isRoot:
type: boolean
tableModel:
type: object
properties:
id:
description: The custom table id.
type: string
rows:
items:
$ref: '#/components/schemas/rowModel'
description: A table row containing custom fields.
type: array
resultModel:
type: object
properties:
code:
description: The error code, if an error is encountered.
type: string
id:
description: The system id of the object in this operation.
format: int64
type: integer
isSuccess:
description: Indicates whether or not the operation on the object is successful.
type: boolean
message:
description: The error message, if an error is encountered
type: string
response_tableModelArray:
type: object
properties:
result:
items:
$ref: '#/components/schemas/tableModel'
type: array
status:
type: integer
description: The HTTP return status.
response_customFormSubgroupModelArray:
type: object
properties:
result:
items:
$ref: '#/components/schemas/customFormSubgroupModel'
type: array
status:
type: integer
description: The HTTP return status.
customAttributeModel:
description: 'Contains a custom form consisting of the custom form id and custom field name and value pairs. For example in JSON, "My Custom Field": "My Custom Value". The custom field name and its data type are defined in Civic Platform custom forms or custom tables:
**For a Text field**, the maximum length is 256.
**For a Number field**, any numeric form is allowed, including negative numbers.
**For a Date field**, the format is MM/dd/yyyy.
**For a Time field**, the format is hh:mm.
**For a TextArea field**, the maximum length is 4000 characters, and allows line return characters.
**For a DropdownList field**, the dropdown list values are in the options[] array.
**For a CheckBox field**, the (case-sensitive) valid values are "UNCHECKED" and "CHECKED".
**For a Radio(Y/N) field**, the (case-sensitive) valid values are "Yes" and "No".'
type: object
properties:
id:
description: The custom form id.
type: string
:
description: The name of a custom field.
type: string
:
description: The value of a custom field.
type: string
customFormSubgroupModel:
type: object
properties:
displayOrder:
description: The custom form subgroup display order.
format: int64
type: integer
fields:
items:
$ref: '#/components/schemas/customFormField'
type: array
id:
description: The custom form subgroup system id assigned by the Civic Platform server.
type: string
text:
description: The custom form subgroup name.
type: string
rowModel:
type: object
properties:
action:
description: The requested operation on the row.
enum:
- add
- update
- delete
type: string
fields:
$ref: '#/components/schemas/customAttributeModel'
id:
description: The row id.
type: string
customFormField:
type: object
properties:
displayOrder:
description: ''
format: int64
type: integer
drillDown:
$ref: '#/components/schemas/aSITableDrill'
fieldType:
description: The custom field data type.
type: string
id:
description: The custom field system id assigned by the Civic Platform server.
type: string
isReadonly:
description: Indicates whether or not the custom field is read-only.
enum:
- Y
- N
type: string
isRequired:
description: Indicates whether or not the custom field is required.
enum:
- Y
- N
type: string
maxLength:
description: The custom field length
format: int64
type: integer
options:
items:
type: object
description: A dropdown option value.
properties:
text:
description: The localized display value.
type: string
value:
description: The data value.
type: string
type: array
text:
description: The custom field localized text.
type: string
value:
description: The custom field stored value.
type: string
childDrill:
type: object
properties:
drillId:
format: int64
type: integer
id:
type: string
parameters:
recordId:
description: The ID of the record to fetch. See [Get All Records](./api-records.html#operation/v4.get.records), [Search Records](./api-search.html#operation/v4.post.search.records), or [Get My Records](./api-records.html#operation/v4.get.records.mine).
in: path
name: recordId
required: true
schema:
type: string
contactId:
description: The ID of the contact to fetch. See [Get All Contacts](./api-contacts-professionals.html#operation/v4.get.contacts).
in: path
name: contactId
required: true
schema:
type: integer
format: int64
fields:
description: Comma-delimited names of fields to be returned in the response. Note - Field names are case-sensitive and only first-level fields are supported. Invalid field names are ignored.
in: query
name: fields
required: false
schema:
type: string
authHeaderParam:
description: Construct oAuth2 authentication token
in: header
name: Authorization
required: true
schema:
type: string
lang:
description: Language parameter to support I18N. Default language is en_US.
in: query
name: lang
required: false
schema:
type: string
x-api-evangelist-provenance:
generated: '2026-09-06'
method: searched
source: https://developer.accela.com/api/v4/v4-records.json
note: Harvested verbatim from the Accela Developer Portal API Reference, which renders these Swagger 2.0 documents via ReDoc (spec-url on developer.accela.com/docs/api_reference/api-*.html). The byte-identical original is kept at openapi/_original/. This copy is the same document serialized to YAML.