Accela Construct API (V4)

The public REST API to the Accela Civic Platform. 417 operations across fifteen published Swagger 2.0 documents cover transactional records, inspections and checklists, contacts and licensed professionals, addresses/parcels/owners, assets and condition assessments, documents, fees/payments/shopping carts, invoices and trust accounts, reports, global search, Citizen Access user management, CivicID, agencies and platform settings. Requests are scoped to a government tenant with x-accela-agency and x-accela-environment; responses use a uniform {status, code, message, more, traceId} envelope with offset/limit pagination and a fields= partial-response parameter. Base host is https://apis.accela.com; every operation path already carries the /v4 version prefix, matching host + basePath in the published specs.

Operations 110

GET /v4/records Get All Records #
POST /v4/records Create Record #
GET /v4/records/describe/create Describe Required Record Attributes #
POST /v4/records/initialize Create Partial Record #
GET /v4/records/mine Get My Records #
DELETE /v4/records/{ids} Delete Records #
GET /v4/records/{ids} Get Records #
PUT /v4/records/{id} Update Record #
GET /v4/records/{recordId}/activities Get All Record Activities #
POST /v4/records/{recordId}/activities Create Record Activities #
PUT /v4/records/{recordId}/activities/{id} Update Record Activity #
GET /v4/records/{recordId}/additional Get Additional Details for Record #
PUT /v4/records/{recordId}/additional Update Additional Details for Record #
GET /v4/records/{recordId}/addresses Get All Record Addresses #
POST /v4/records/{recordId}/addresses Create Record Addresses #
PUT /v4/records/{recordId}/addresses/{id} Update Record Address #
DELETE /v4/records/{recordId}/addresses/{ids} Delete Record Addresses #
GET /v4/records/{recordId}/addresses/{addressId}/customForms Get Record Address Custom Forms #
GET /v4/records/{recordId}/addresses/{addressId}/customForms/meta Get Record Address Custom Forms Metadata #
GET /v4/records/{recordId}/assets Get All Assets for Record #
POST /v4/records/{recordId}/assets Add Assets to Record #
DELETE /v4/records/{recordId}/assets/{ids} Delete Assets from Record #
GET /v4/records/{recordId}/comments Get All Comments for Record #
POST /v4/records/{recordId}/comments Add Comments to a Record #
PUT /v4/records/{recordId}/comments/{id} Update Record Comment #
DELETE /v4/records/{recordId}/comments/{ids} Delete Record Comments #
GET /v4/records/{recordId}/conditionApprovals Get All Approval Conditions for Record #
POST /v4/records/{recordId}/conditionApprovals Create Record Approval Conditions #
GET /v4/records/{recordId}/conditionApprovals/{id} Get Record Approval Condition #
PUT /v4/records/{recordId}/conditionApprovals/{id} Update Record Approval Condition #
DELETE /v4/records/{recordId}/conditionApprovals/{ids} Delete Record Approval Conditions #
GET /v4/records/{recordId}/conditions Get All Conditions for Record #
POST /v4/records/{recordId}/conditions Create Record Conditions #
GET /v4/records/{recordId}/conditions/{id} Get Record Condition #
PUT /v4/records/{recordId}/conditions/{id} Update Record Condition #
GET /v4/records/{recordId}/conditions/{id}/histories Get History for Record Condition #
DELETE /v4/records/{recordId}/conditions/{ids} Delete Record Conditions #
GET /v4/records/{recordId}/contacts Get All Contacts for Record #
POST /v4/records/{recordId}/contacts Create Record Contacts #
PUT /v4/records/{recordId}/contacts/{id} Update Record Contact #
DELETE /v4/records/{recordId}/contacts/{ids} Delete Record Contacts #
GET /v4/records/{recordId}/contacts/{contactId}/addresses Get All Addresses for Contact #
POST /v4/records/{recordId}/contacts/{contactId}/addresses Create Record Contact Addresses #
PUT /v4/records/{recordId}/contacts/{contactId}/addresses/{id} Update Record Contact Address #
DELETE /v4/records/{recordId}/contacts/{contactId}/addresses/{ids} Delete Record Contact Addresses #
GET /v4/records/{recordId}/contacts/{contactId}/customForms Get Record Contacts Custom Forms #
PUT /v4/records/{recordId}/contacts/{contactId}/customForms Update Record Contact Custom Forms #
GET /v4/records/{recordId}/contacts/{contactId}/customForms/meta Get Record Contacts Custom Forms Meta #
GET /v4/records/{recordId}/contacts/{contactId}/customForms/{formId}/meta Get Record Contact Custom Form Metadata #
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 #
GET /v4/records/{recordId}/costs Get Record Costs #
DELETE /v4/records/{recordId}/costs/{ids} Delete Record Costs #
PUT /v4/records/{recordId}/costs/{ids} Update Record Costs #
GET /v4/records/{recordId}/customForms Get All Custom Forms for Record #
PUT /v4/records/{recordId}/customForms Update Record Custom Forms #
GET /v4/records/{recordId}/customForms/meta Get All Custom Forms Metadata for Record #
GET /v4/records/{recordId}/customForms/{formId}/meta Get Custom Form Metadata for Record #
GET /v4/records/{recordId}/customTables Get All Custom Tables for Record #
PUT /v4/records/{recordId}/customTables Update Record Custom Tables #
GET /v4/records/{recordId}/customTables/{tableId} Get Record Custom Table #
GET /v4/records/{recordId}/customTables/meta Get All Custom Tables Metadata for Record #
GET /v4/records/{recordId}/customTables/{tableId}/meta Get Custom Table Metadata for Record #
GET /v4/records/{recordId}/documentCategories Get All Document Categories for Record #
GET /v4/records/{recordId}/documents Get All Documents for Record #
POST /v4/records/{recordId}/documents Create Record Documents #
DELETE /v4/records/{recordId}/documents/{documentIds} Delete Record Documents #
GET /v4/records/{recordId}/fees Get All Fees for Record #
POST /v4/records/{recordId}/fees Create Record Fees #
PUT /v4/records/{recordId}/fees/estimate Estimate Record Fees #
POST /v4/records/{recordId}/finalize Finalize Record #
GET /v4/records/{recordId}/inspections Get All Inspections for Record #
GET /v4/records/{recordIds}/inspectionTypes Get All Inspection Types for Record #
GET /v4/records/{recordId}/invoices Get All Record Invoices #
POST /v4/records/{recordId}/invoices Create Record Invoices #
GET /v4/records/{recordId}/owners Get All Owners for Record #
POST /v4/records/{recordId}/owners Create Record Owners #
PUT /v4/records/{recordId}/owners/{id} Update Record Owner #
DELETE /v4/records/{recordId}/owners/{ids} Delete Record Owners #
GET /v4/records/{recordId}/parcels Get All Parcels for Record #
POST /v4/records/{recordId}/parcels Create Record Parcels #
PUT /v4/records/{recordId}/parcels/{id} Update Record Parcel #
DELETE /v4/records/{recordId}/parcels/{ids} Delete Record Parcels #
GET /v4/records/{recordId}/partTransaction Get Record Part Transaction #
POST /v4/records/{recordId}/partTransaction Create Record Part Transaction #
DELETE /v4/records/{recordId}/partTransaction/{ids} Void Record Part Transactions #
GET /v4/records/{recordId}/payments Get All Payments for Record #
GET /v4/records/{recordId}/payments/{paymentId} Get Record Payment #
GET /v4/records/{recordId}/professionals Get All Professionals for Record #
POST /v4/records/{recordId}/professionals Create Record Professionals #
PUT /v4/records/{recordId}/professionals/{id} Update Record Professional #
DELETE /v4/records/{recordId}/professionals/{ids} Delete Record Professionals #
GET /v4/records/{recordId}/related Get All Related Details for Record #
POST /v4/records/{recordId}/related Create Related Details for Record #
DELETE /v4/records/{recordId}/related/{childRecordIds} Delete Related Details from Record #
GET /v4/records/{recordId}/trustAccounts Get All Trust Accounts for Record #
GET /v4/records/{recordId}/votes Get All Votes for Record #
POST /v4/records/{recordId}/votes Create Record Votes #
GET /v4/records/{recordId}/votes/summary Get Record Votes Summary #
GET /v4/records/{recordId}/workflowTasks Get All Workflow Tasks for Record #
GET /v4/records/{recordId}/workflowTasks/{id} Get Record Workflow Task #
PUT /v4/records/{recordId}/workflowTasks/{id} Update Record Workflow Task #
GET /v4/records/{recordId}/workflowTasks/{id}/statuses Get All Statuses for Workflow Task #
GET /v4/records/{recordId}/workflowTasks/comments/histories Get Workflow Task Comment Histories #
GET /v4/records/{recordId}/workflowTasks/histories Get All Workflow Task History for Record #
GET /v4/records/{recordId}/workflowTasks/{taskId}/customForms Get All Custom Forms for Record Workflow Task #
PUT /v4/records/{recordId}/workflowTasks/{taskId}/customForms Update Custom Form for Record Workflow Task #
GET /v4/records/{recordId}/workflowTasks/{taskId}/customForms/meta Get All Custom Forms Metadata for Record Workflow Task #

Documentation

Specifications

OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-records-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-inspections-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-settings-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-contacts-professionals-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-assets-assessments-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-citizens-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-addresses-parcels-owners-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-search-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-miscellaneous-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-payments-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-documents-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-civicid-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-agencies-openapi.yml
OpenAPI
https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-reports-openapi.yml

Other Resources

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-construct-api-v4"
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 email required.

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

OpenAPI Specification

accela-records-openapi.yml Raw ↑
basePath: /
host: apis.accela.com
info:
  description: Accela API for transactional records and related record resources
  title: Records
  version: v4
schemes:
- https
swagger: '2.0'
tags:
- name: Records
  description: A record is a fundamental Civic Platform object that captures an agency's daily process tranactions, such as
    applications, permits, cases, licenses, service requests, and work orders.
- name: Records/Activities
  description: Activities related to a record can be assigned to a staff member when the activities require further action,
    such as a follow-up inspection or service maintenance.
- name: Records/Addresses
  description: A record can have at least one associated address, such as the address of the application contact or the location
    of a permit application, service request, or work order.
- name: Records/Addresses/Custom Forms
- name: Records/Assets
  description: A work order record is linked to assets that require inspection, repair service, or any kind of task that needs
    to be performed and tracked in the system.
- name: Records/Comments
  description: A staff user can add comments regarding the record, or can choose from standard comments that have been configured
    for the agency.
- name: Records/Conditions
  description: A condition is a requirement that you can apply to an application (or component of an application), that the
    application must fulfill to qualify for approval. Although conditions do not necessarily impose holds, they can prolong
    the permitting process until they met.
- name: Records/Condition Approvals
- name: Records/Contacts
  description: One or more reference contacts can be associated to an application or service request.
- name: Records/Contacts/Custom Forms
- name: Records/Contacts/Custom Tables
- name: Records/Costs
- name: Records/Custom Forms
- name: Records/Custom Tables
- name: Records/Documents
- name: Records/Fees
- name: Records/Inspections
- name: Records/Invoices
- name: Records/Owners
- name: Records/Parcels
- name: Records/Part Transactions
- name: Records/Payments
- name: Records/Professionals
- name: Records/Trust Accounts
- name: Records/Workflows
paths:
  /v4/records:
    get:
      description: "Gets record information, based on the specified query parameters.\n\n\n\n**API Endpoint**:  GET /v4/records\
        \ \n\n**Scope**:  records \n\n**App Type**:  All \n\n**Authorization Type**:  \tNo authorization required \n\n**Civic\
        \ Platform version**: 7.3.2\n\n"
      summary: Get All Records
      operationId: v4.get.records
      tags:
      - Records
      parameters:
      - description: Filter by record type. See [Get All Record Types](./api-settings.html#operation/v4.get.settings.records.types).
        in: query
        name: type
        type: string
      - description: Filter by the record's open date range, beginning with this date.
        in: query
        name: openedDateFrom
        type: string
      - description: Filter by the record's open date range, ending with this date.
        in: query
        name: openedDateTo
        type: string
      - description: Filter by the record custom id.
        in: query
        name: customId
        type: string
      - description: Filter by module. See [Get All Modules](./api-settings.html#operation/v4.get.settings.modules).
        in: query
        name: module
        type: string
      - description: Filter by record status.
        in: query
        name: status
        type: string
      - description: Filter by the assigned department.
        in: query
        name: assignedToDepartment
        type: string
      - description: Filter by the assigned user.
        in: query
        name: assignedUser
        type: string
      - description: Filter by the record's assigned date range starting with this date.
        in: query
        name: assignedDateFrom
        type: string
      - description: Filter by the record's assigned date range ending with this date.
        in: query
        name: assignedDateTo
        type: string
      - description: Filter by the record's completed date range starting with this date.
        in: query
        name: completedDateFrom
        type: string
      - description: Filter by the record's completed date range ending with this date.
        in: query
        name: completedDateTo
        type: string
      - description: Filter by the record's status date range starting with this date.
        in: query
        name: statusDateFrom
        type: string
      - description: Filter by the record's status date range ending with this date.
        in: query
        name: statusDateTo
        type: string
      - description: Filter by the deparment which completed the application.
        in: query
        name: completedByDepartment
        type: string
      - description: Filter by the user who completed the application.
        in: query
        name: completedByUser
        type: string
      - description: Filter by the record's closed date range starting with this date.
        in: query
        name: closedDateFrom
        type: string
      - description: Filter by the record's closed date range ending with this date.
        in: query
        name: closedDateTo
        type: string
      - description: Filter by the department which closed the application.
        in: query
        name: closedByDepartment
        type: string
      - description: Filter by the user who closed the application.
        in: query
        name: closedByUser
        type: string
      - description: Filter by record class
        in: query
        name: recordClass
        type: string
      - $ref: '#/parameters/limit'
      - $ref: '#/parameters/offset'
      - $ref: '#/parameters/fields'
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/response_simpleRecordModelArray'
        '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.
    post:
      description: "Creates a new, full record in Civic Platform. The Create Record API triggers the business rules engine\
        \ event ApplicationSubmitAfter. \n\n Note: The Create Record API does not include custom forms and custom tables in\
        \ the request body. To add or update custom forms and custom tables, use the [Update Record Custom Forms](./api-records.html#operation/v4.put.records.recordId.customForms)\
        \ and [Update Record Custom Tables](./api-records.html#operation/v4.put.records.recordId.customForms) after the Create\
        \ Record request.\n\n\n\n**API Endpoint**:  POST /v4/records \n\n**Scope**:  records \n\n**App Type**:  All \n\n**Authorization\
        \ Type**:  Access token \n\n**Civic Platform version**: 7.3.2\n\n"
      summary: Create Record
      operationId: v4.post.records
      tags:
      - Records
      parameters:
      - $ref: '#/parameters/authHeaderParam'
      - description: The create record information to be added.
        in: body
        name: body
        schema:
          $ref: '#/definitions/request_createRecordModel'
      - $ref: '#/parameters/fields'
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/response_simpleRecordModel'
        '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/describe/create:
    get:
      tags:
      - Records
      summary: Describe Required Record Attributes
      description: "Gets the field and element values the system requires in order to create a specific type of record.\n\n\
        \n\n**API Endpoint**:  GET /v4/records/describe/create  \n\n**Scope**:  records \n\n**App Type**:  All \n\n**Authorization\
        \ Type**:  Access token \n\n**Civic Platform version**: \t7.3.2\n\n"
      operationId: v4.get.records.describe.create
      parameters:
      - $ref: '#/parameters/authHeaderParam'
      - description: Filter by record type. See [Get All Record Type](./api-settings.html#operation/v4.get.settings.records.types).
        in: query
        name: type
        required: true
        type: string
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/response_describeRecordModel'
        '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/initialize:
    post:
      tags:
      - Records
      summary: Create Partial Record
      description: "Creates a partial record that allows a user to save an incomplete application that is work in-progress.\
        \ To submit the completed application, use the [Finalize Record](./api-records.html#operation/v4.post.records.recordId.finalize)\
        \ method. See [Creating Records](https://developer.accela.com/docs/construct-api-records.html#construct-api-records__creatingRecords)\
        \ for more information about calling Create Partial Record in tandem with Finalize Record.  \n\nThe Create Partial\
        \ Record API triggers the business rules engine event ApplicationSubmitAfter. \n\nNote: The Create Partial Record\
        \ API does not include custom forms and custom tables in the request body. To add or update custom forms and custom\
        \ tables, use the [Update Record Custom Forms](./api-records.html#operation/v4.put.records.recordId.customForms) and\
        \ [Update Record Custom Tables](./api-records.html#operation/v4.put.records.recordId.customForms) between the Create\
        \ Partial Record and Finalize Record requests.\n\n\n\n**API Endpoint**:  POST /v4/records/initialize \n\n**Scope**:\
        \  records \n\n**App Type**:  All \n\n**Authorization Type**:  Access token \n\n**Civic Platform version**: \t7.3.2\n\
        \n"
      operationId: v4.post.records.initialize
      parameters:
      - description: The record information to be initialized.
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/request_recordModel'
      - description: Indicates whether or not it is for a fee estimate.
        enum:
        - 'true'
        - ' false'
        in: query
        name: isFeeEstimate
        required: false
        type: boolean
      - $ref: '#/parameters/fields'
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/response_simpleRecordModel'
        '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/mine:
    get:
      description: "Gets records for the currently logged-in user.\n\n\n\n**API Endpoint**:  GET /v4/records/mine \n\n**Scope**:\
        \  records \n\n**App Type**:  All \n\n**Authorization Type**:  No authorization required \n\n**Civic Platform version**:\
        \ 7.3.2\n\n"
      summary: Get My Records
      operationId: v4.get.records.mine
      tags:
      - Records
      parameters:
      - description: Filter by record type. See [Get All Record Types](./api-settings.html#operation/v4.get.settings.records.types).
        in: query
        name: type
        type: string
      - description: Filter by the record's open date range, beginning with this date.
        in: query
        name: openedDateFrom
        type: string
      - description: Filter by the record's open date range, ending with this date.
        in: query
        name: openedDateTo
        type: string
      - description: Filter by the record custom id.
        in: query
        name: customId
        type: string
      - description: Filter by module. See [Get All Modules](./api-settings.html#operation/v4.get.settings.modules).
        in: query
        name: module
        type: string
      - description: Filter by record status.
        in: query
        name: status
        type: string
      - description: Filter by the record's assigned date range starting with this date.
        in: query
        name: assignedDateFrom
        type: string
      - description: Filter by the record's assigned date range ending with this date.
        in: query
        name: assignedDateTo
        type: string
      - description: Filter by the record's completed date range starting with this date.
        in: query
        name: completedDateFrom
        type: string
      - description: Filter by the record's completed date range ending with this date.
        in: query
        name: completedDateTo
        type: string
      - description: Filter by the record's status date range starting with this date.
        in: query
        name: statusDateFrom
        type: string
      - description: Filter by the record's status date range ending with this date.
        in: query
        name: statusDateTo
        type: string
      - description: Record update Date From
        in: query
        name: updateDateFrom
        type: string
      - description: Record update Date To
        in: query
        name: updateDateTo
        type: string
      - description: Filter by the deparment which completed the application.
        in: query
        name: completedByDepartment
        type: string
      - description: Filter by the user who completed the application.
        in: query
        name: completedByUser
        type: string
      - description: Filter by the record's closed date range starting with this date.
        in: query
        name: closedDateFrom
        type: string
      - description: Filter by the record's closed date range ending with this date.
        in: query
        name: closedDateTo
        type: string
      - description: Filter by the department which closed the application.
        in: query
        name: closedByDepartment
        type: string
      - description: Filter by the user who closed the application.
        in: query
        name: closedByUser
        type: string
      - description: Filter by record class
        in: query
        name: recordClass
        type: string
      - description: Filter by comma-separated multiple record types.
        in: query
        name: types
        type: string
      - description: Filter by comma-separated multiple modules.
        in: query
        name: modules
        type: string
      - description: Filter by comma-separated multiple record status types.
        in: query
        name: statusTypes
        type: string
      - description: Comma-delimited list of related objects to be returned with the response. The related object(s) will
          be returned if data exists; if data does not exist, the requested object(s) will not be included in the response.
        in: query
        name: expand
        enum:
        - addresses
        - parcels
        - professionals
        - contacts
        - owners
        - customForms
        - customTables
        type: string
      - name: expandCustomForms
        description: "Valid values: \"addresses\"\n          \nIf {expand} includes any of addresses, parcels, owners, or\
          \ contacts, {expandCustomForms} specifies which {expand} objects should include custom forms. By default, custom\
          \ forms for addresses, parcels, owners, and contacts are not included in the response data. Note that requesting\
          \ APO custom forms may have performance implications, depending on the amount of data and connectivity to any external\
          \ data source.\n\nAdded in Civic Platform version: 9.2.0\n"
        in: query
        type: string
        enum:
        - addresses
      - $ref: '#/parameters/limit'
      - $ref: '#/parameters/offset'
      - $ref: '#/parameters/fields'
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/response_recordExtModel_1Array'
        '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/{ids}:
    delete:
      tags:
      - Records
      summary: Delete Records
      description: "Deletes the specified record.\n\n\n\n**API Endpoint**:  DELETE /v4/records/{ids} \n\n**Scope**:  records\
        \ \n\n**App Type**:  All \n\n**Authorization Type**:  Access token \n\n**Civic Platform version**: \t7.3.3\n\n"
      operationId: v4.delete.records.ids
      parameters:
      - $ref: '#/parameters/authHeaderParam'
      - description: Comma-delimited IDs of the records to be deleted.
        in: path
        name: ids
        required: true
        type: string
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/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.
    get:
      tags:
      - Records
      summary: Get Records
      description: "Gets the requested record(s).\n\n\n\n**API Endpoint**:  GET /v4/records/{ids} \n\n**Scope**:  records\
        \ \n\n**App Type**:  All \n\n**Authorization Type**:  No authorization required \n\n**Civic Platform version**: \t\
        7.3.2\n\n"
      operationId: v4.get.records.ids
      parameters:
      - description: Comma-delimited IDs of the records to fetch.
        in: path
        name: ids
        required: true
        type: string
      - description: Comma-delimited list of related objects to be returned with the response. The related object(s) will
          be returned if data exists; if data does not exist, the requested object(s) will not be included in the response.
        in: query
        name: expand
        enum:
        - addresses
        - parcels
        - professionals
        - contacts
        - owners
        - customForms
        - customTables
        - assets
        type: string
      - name: expandCustomForms
        description: 'Valid values: "addresses"


          If {expand} includes any of addresses, parcels, owners, or contacts, {expandCustomForms} specifies which {expand}
          objects should include custom forms. By default, custom forms for addresses, parcels, owners, and contacts are not
          included in the response data. Note that requesting APO custom forms may have performance implications, depending
          on the amount of data and connectivity to any external data source.


          Added in Civic Platform version: 9.2.0

          '
        in: query
        type: string
        enum:
        - addresses
      - $ref: '#/parameters/fields'
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/response_recordModelArray'
        '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/{id}:
    put:
      tags:
      - Records
      summary: Update Record
      description: "Updates details for the specified record. \n\n\n\n**API Endpoint**:  PUT /v4/records/{id} \n\n**Scope**:\
        \  records \n\n**App Type**:  All \n\n**Authorization Type**:  Access token \n\n**Civic Platform version**: \t7.3.2\n\
        \n"
      operationId: v4.put.records.id
      parameters:
      - $ref: '#/parameters/authHeaderParam'
      - description: The ID of the record to update.
        in: path
        name: id
        required: true
        type: string
      - description: Record information to be updated.
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/request_simpleRecordModel'
      - $ref: '#/parameters/fields'
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/simpleRecordModel'
        '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}/activities:
    get:
      description: "Gets all activities related to the specified record.\n\n\n\n**API Endpoint**:  GET /v4/records/{recordId}/activities\
        \ \n\n**Scope**:  records \n\n**App Type**:  All \n\n**Authorization Type**:  Access token \n\n**Civic Platform version**:\
        \ 7.3.2\n\n"
      summary: Get All Record Activities
      operationId: v4.get.records.recordId.activities
      tags:
      - Records/Activities
      parameters:
      - $ref: '#/parameters/authHeaderParam'
      - $ref: '#/parameters/recordId'
      - $ref: '#/parameters/fields'
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/response_activityModelArray'
        '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.
    post:
      description: "Creates activities associated to the specified record.\n\n\n\n**API Endpoint**:  POST /v4/records/{recordId}/activities\
        \ \n\n**Scope**:  records \n\n**App Type**:  All \n\n**Authorization Type**:  Access token \n\n**Civic Platform version**:\
        \ 7.3.3.2\n\n"
      summary: Create Record Activities
      operationId: v4.post.records.recordId.activities
      tags:
      - Records/Activities
      parameters:
      - $ref: '#/parameters/authHeaderParam'
      - $ref: '#/parameters/recordId'
      - description: The activity information to be added.
        in: body
        name: body
        required: true
        schema:
          items:
            $ref: '#/definitions/request_activityAddModel'
          type: array
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/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.
  /v4/records/{recordId}/activities/{id}:
    put:
      description: "Updates the activity for the specified record.\n\n\n\n**API Endpoint**:  PUT /v4/records/{recordId}/activities/{id}\
        \ \n\n**Scope**:  records \n\n**App Type**:  All \n\n**Authorization Type**:  Access token \n\n**Civic Platform version**:\
        \ 7.3.3.2\n\n"
      summary: Update Record Activity
      operationId: v4.put.records.recordId.activities.id
      tags:
      - Records/Activities
      parameters:
      - $ref: '#/parameters/authHeaderParam'
      - $ref: '#/parameters/recordId'
      - description: The ID of the record activity to update.
        format: int64
        in: path
        name: id
        required: true
        type: integer
      - description: The activity information to be updated.
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/request_activityUpdateModel'
      - $ref: '#/parameters/fields'
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/response_resultModel'
        '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}/additional:
    get:
      tags:
      - Records
      summary: Get Additional Details for Record
      description: "Gets additional information for the requested record. \n\n\n\n**API Endpoint**:  GET /v4/records/{recordId}/additional\
        \ \n\n**Scope**:  records \n\n**App Type**:  All \n\n**Authorization Type**:  Access token \n\n**Civic Platform version**:\
        \ \t7.3.2\n\n"
      operationId: v4.get.records.recordId.additional
      parameters:
      - $ref: '#/parameters/authHeaderParam'
      - description: The ID of record to fetch.
        in: path
        name: recordId
        required: true
        type: string
      - $ref: '#/parameters/fields'
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/response_recordAdditionalModelArray'
        '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:
      tags:
      - Records
      summary: Update Additional Details for Record
      description: "Updates additional information for the specified record. \n\n\n\n**API Endpoint**:  PUT /v4/records/{recordId}/additional\
        \ \n\n**Scope**:  records \n\n**App Type**:  All \n\n**Authorization Type**:  Access token \n\n**Civic Platform version**:\
        \ \t7.3.2\n\n"
      operationId: v4.put.records.recordId.additional
      parameters:
      - $ref: '#/parameters/authHeaderParam'
      - description: The ID of the record to fetch.
        in: path
        name: recordId
        required: true
        type: string
      - description: Additional record information for update.
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/recordAdditionalModel'
      - $ref: '#/parameters/fields'
      - $ref: '#/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.'
          schema:
            $ref: '#/definitions/response_recordAdditionalModelArray'
        '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}/addresses:
    get:
      tags:
      - Records/Addresses
      summary: Get All Record Addresses
      description: "Gets the addresses linked to the specified record. \n\n\n\n**API Endpoint**:  GET /v4/records/{recordId}/addresses\
        \ \n\n**Scope**:  records \n\n**App Type**:  All \n\n**Authorization Type**:  No auth required \n\n**Civic Platform\
        \ version**: 7.3.3.2\n\n"
      operationId: v4.get.records.recordId.addresses
      parameters:
      - $ref: '#/parameters/authHeaderParam'
      - description: Filter by the primary address flag.
        in: query
        name: isPrimary
        required: false
        type: string
      - $ref: '#/parameters/fields'
      - $ref: '#/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.'
          schema:
            items:
              $ref: '#/definitions/recordAddressModel'
            type: array
        '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.
    post:
      tags:
      - Records/Addresses
      summary: Create Record Addresses
      description: "Creates new address(es) for the specified record.\n\n\n\n**API Endpoint**:  POST /v4/records/{recordId}/addresses\
        \ \n\n**Scope**:  records \n\n**App Type**:  All \n\n**Authorization Type**:  Access token \n\n**Civic Platform version**:\
 

# --- truncated at 32 KB (452 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/accela/refs/heads/main/openapi/accela-records-openapi.yml