openapi: 3.2.0
info:
description: Accela API for transactional records and related record resources
title: Records/Contacts/Custom Forms API
version: v4
servers:
- url: https://apis.accela.com/
tags:
- name: Records/Contacts/Custom Forms
paths:
/v4/records/{recordId}/contacts/{contactId}/customForms:
get:
description: 'Returns an array of custom forms associated with the specified record contact. Each custom form consists of the custom form id and custom field name-and-value pairs.
**API Endpoint**: GET /v4/records/{recordId}/contacts/{contactId}/customForms
**Scope**: records
**App Type**: All
**Authorization Type**: Access token
**Civic Platform version**: 7.3.2'
summary: Get Record Contacts Custom Forms
operationId: v4.get.records.recordId.contacts.contactId.customForms
tags:
- Records/Contacts/Custom Forms
parameters:
- $ref: '#/components/parameters/authHeaderParam'
- $ref: '#/components/parameters/recordId'
- $ref: '#/components/parameters/contactId'
- $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_customAttributeModelArray'
'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 forms for the specified record contact. The request body is an array of custom forms, with each item containing the custom form''s id and custom field name/value pairs.
**API Endpoint**: PUT /v4/records/{recordId}/contacts/{contactId}/customForms
**Scope**: records
**App Type**: Agency
**Authorization Type**: Access token
**Civic Platform version**: 7.3.2'
summary: Update Record Contact Custom Forms
operationId: v4.put.records.recordId.contacts.contactId.customForms
tags:
- Records/Contacts/Custom Forms
parameters:
- $ref: '#/components/parameters/authHeaderParam'
- $ref: '#/components/parameters/recordId'
- $ref: '#/components/parameters/contactId'
- $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/customAttributeModel'
type: array
description: 'The custom form information to be updated. Example: [{ "field1": "field1Val", "field2": "field2Val", "id": "Group&SubGroup" }]'
required: true
/v4/records/{recordId}/contacts/{contactId}/customForms/meta:
get:
description: 'Gets the custom forms metadata associated with the specified record contact.
**API Endpoint**: GET /v4/records/{recordId}/contacts/{contactId}/customForms/meta
**Scope**: records
**App Type**: All
**Authorization Type**: Access token
**Civic Platform version**: 7.3.2'
summary: Get Record Contacts Custom Forms Meta
operationId: v4.get.records.recordId.contacts.contactId.customForms.meta
tags:
- Records/Contacts/Custom Forms
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}/customForms/{formId}/meta:
get:
description: 'Gets the metadata associated with the requested custom form for the record contact.
**API Endpoint**: GET /v4/records/{recordId}/contacts/{contactId}/customForms/{formId}/meta
**Scope**: records
**App Type**: All
**Authorization Type**: Access token
**Civic Platform version**: 9.2.0'
summary: Get Record Contact Custom Form Metadata
operationId: v4.get.records.recordId.contacts.contactId.customForms.formId.meta
tags:
- Records/Contacts/Custom Forms
parameters:
- $ref: '#/components/parameters/authHeaderParam'
- $ref: '#/components/parameters/recordId'
- $ref: '#/components/parameters/contactId'
- description: The ID of the custom form to fetch.
in: path
name: formId
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_customFormMetadataModelArray'
'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.
customFormMetadataModel:
description: Contains the metadata for a custom table.
type: object
properties:
displayOrder:
description: The custom table's display order.
format: int64
type: integer
fields:
items:
$ref: '#/components/schemas/customFormField'
type: array
id:
description: The custom table id.
type: string
text:
description: The custom table name.
type: string
aSITableDrill:
type: object
properties:
children:
items:
$ref: '#/components/schemas/childDrill'
type: array
isRoot:
type: boolean
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
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
response_customFormSubgroupModelArray:
type: object
properties:
result:
items:
$ref: '#/components/schemas/customFormSubgroupModel'
type: array
status:
type: integer
description: The HTTP return status.
response_customFormMetadataModelArray:
type: object
properties:
result:
items:
$ref: '#/components/schemas/customFormMetadataModel'
type: array
status:
type: integer
description: The HTTP return status.
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
response_customAttributeModelArray:
type: object
properties:
result:
items:
$ref: '#/components/schemas/customAttributeModel'
type: array
status:
type: integer
description: The HTTP return status.
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.