Accela Records/Contacts/Custom Tables API

The Records/Contacts/Custom Tables API from Accela — 3 operation(s) for records/contacts/custom tables.

Operations 4

GET /v4/records/{recordId}/contacts/{contactId}/customTables Get All Custom Tables for Record Contact #
PUT /v4/records/{recordId}/contacts/{contactId}/customTables Update Record Custom Tables #
GET /v4/records/{recordId}/contacts/{contactId}/customTables/meta Get Metadata of All Record Contact Custom Tables #
GET /v4/records/{recordId}/contacts/{contactId}/customTables/{tableId}/meta Get Metadata of a Record Contact Custom Table #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/accela-records-contacts-custom-tables-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

accela-records-contacts-custom-tables-api-openapi.yml Raw ↑
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:
  parameters:
    lang:
      description: Language parameter to support I18N. Default language is en_US.
      in: query
      name: lang
      required: false
      schema:
        type: string
    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
  schemas:
    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
    response_resultModelArray:
      type: object
      properties:
        result:
          items:
            $ref: '#/components/schemas/resultModel'
          type: array
        status:
          type: integer
          description: The HTTP return status.
    childDrill:
      type: object
      properties:
        drillId:
          format: int64
          type: integer
        id:
          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
    response_tableModelArray:
      type: object
      properties:
        result:
          items:
            $ref: '#/components/schemas/tableModel'
          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
    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: <br/>**For a Text field**, the maximum length is 256.  <br/>**For a Number field**, any numeric form is allowed, including negative numbers.  <br/>**For a Date field**, the format is MM/dd/yyyy.  <br/>**For a Time field**, the format is hh:mm.  <br/>**For a TextArea field**, the maximum length is 4000 characters, and allows line return characters.  <br/>**For a DropdownList field**, the dropdown list values are in the options[] array.  <br/>**For a CheckBox field**, the (case-sensitive) valid values are "UNCHECKED" and "CHECKED".  <br/>**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
        <aCustomFieldName>:
          description: The name of a custom field.
          type: string
        <aCustomFieldValue>:
          description: The value of a custom field.
          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
    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_customFormSubgroupModelArray:
      type: object
      properties:
        result:
          items:
            $ref: '#/components/schemas/customFormSubgroupModel'
          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
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.