openapi: 3.2.0 info: description: The Contacts and Professionals APIs enable apps to manage reference contacts and licensed professionals. title: Contacts and Professionals Contacts/Custom Tables API version: v4 servers: - url: https://apis.accela.com/ tags: - name: Contacts/Custom Tables paths: /v4/contacts/{contactId}/customTables: get: description: 'Gets the custom tables associated with the specified contact. **API Endpoint**: GET /v4/contacts/{contactId}/customTables **Scope**: contacts **App Type**: All **Authorization Type**: Access token **Civic Platform version**: 7.3.3.4' summary: Get All Custom Tables for Contact operationId: v4.get.contacts.contactId.customTables tags: - Contacts/Custom Tables parameters: - $ref: '#/components/parameters/authHeaderParam' - $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 a custom table for the specified contact. **API Endpoint**: PUT /v4/contacts/{contactId}/customTables **Scope**: contacts **App Type**: All **Authorization Type**: Access token **Civic Platform version**: 7.3.2' summary: Update Custom Tables for Contact operationId: v4.put.contacts.contactId.customTables tags: - Contacts/Custom Tables parameters: - $ref: '#/components/parameters/authHeaderParam' - $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/tableModel' type: array description: Custom tables to be updated. required: true /v4/contacts/{contactId}/customTables/meta: get: description: 'Gets the metadata associated with all custom tables for the contact. **API Endpoint**: GET /v4/contacts/{contactId}/customTables/meta **Scope**: contacts **App Type**: All **Authorization Type**: Access token **Civic Platform version**: 7.3.3.4' summary: Get All Custom Tables Metadata for Contact operationId: v4.get.contacts.contactId.customTables.meta tags: - Contacts/Custom Tables parameters: - $ref: '#/components/parameters/authHeaderParam' - $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_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. /v4/contacts/{contactId}/customTables/{tableId}/meta: get: description: 'Gets the metadata associated with the specified custom table for the contact. **API Endpoint**: GET /v4/contacts/{contactId}/customTables/{tableId}/meta **Scope**: contacts **App Type**: All **Authorization Type**: Access token **Civic Platform version**: 7.3.3.4' summary: Get Custom Table Metadata for Contact operationId: v4.get.contacts.contactId.customTables.tableId.meta tags: - Contacts/Custom Tables parameters: - $ref: '#/components/parameters/authHeaderParam' - $ref: '#/components/parameters/contactId' - description: The ID of the custom table 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_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: description: Contains drilldown field information. 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. customAttributeModel: type: object properties: aCustomFieldName: description: '' type: string aCustomFieldValue: description: '' type: string response_customFormMetadataModelArray: type: object properties: result: items: $ref: '#/components/schemas/customFormMetadataModel' type: array status: type: integer description: The HTTP return status. 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: Contains dropdown option values. 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: description: The ID of the drilldown child record. format: int64 type: integer id: description: The ID of the current record. type: string parameters: contactId: description: The ID of the contact to fetch. 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-contacts-professionals.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.