Act! CRM · OpenAPI Overlay 1.0.0
API Evangelist enhancements to the Act! Web API contract
6 actions
4 updates
servers
Generated by API Evangelist
Written by API Evangelist tooling for Act! CRM's API. It is a proposal applied on top of the contract, not a document Act! CRM publishes.
What the actions change
descriptioncontacttermsOfServiceserverssecuritySchemessecurity
Targets 5
$.info
$
$.components
$.paths..responses
$.paths
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements to the Act! Web API contract
version: 1.0.0
x-provenance:
generated: '2026-08-13'
method: generated
source: >-
Captures every difference between the provider's own Swagger 2.0 document
(openapi/_original/act-web-api-swagger.json, fetched verbatim from
https://apimta.act.com/act.web.api/swagger/docs/v1 on 2026-08-13) and the
refined OpenAPI 3.1.0 documents in openapi/. Nothing here is invented: each
action carries the Act!-published URL the value came from.
extends: openapi/_original/act-web-api-swagger.json
applies_to: openapi/act-*-api-openapi.yml
note: >-
The provider document is never mutated. It declares no securitySchemes, no
servers block beyond host+basePath, no info.description, no contact and no
termsOfService, so an agent reading it alone cannot authenticate or reach
the API. These actions add exactly those facts, each sourced from Act!'s own
documentation.
actions:
- target: $.info
description: >-
Add a description explaining the OData query surface, batching and the
/authorize token exchange, plus contact and terms links. Sourced from
https://apimta.act.com/act.web.api/ and
https://apimta.act.com/act.web.api/OData/Index.
update:
description: >-
Act! Web API is a JSON-based REST API for the Act! CRM database,
exposing contacts, companies, groups, opportunities, activities, notes,
history and custom entities. Reads support OData query options ($filter,
$orderby, $top, $skip, $select, $expand) and requests may be batched via
POST /api/$batch. Authentication is a JWT bearer token obtained from GET
/authorize using HTTP Basic credentials plus an Act-Database-Name header.
contact:
name: Act! Developers
url: https://www.act.com/developer/
termsOfService: https://www.act.com/legal/terms-of-service/
- target: $
description: >-
Swagger 2.0 expresses only host + basePath, which flattens Act!'s three
real deployment shapes into one. Replace with an OpenAPI 3.1 servers[]
block carrying the concrete cloud host from the provider document plus the
two templated forms Act! publishes on its Web API home page under
"EndPoints".
update:
servers:
- url: https://apimta.act.com/act.web.api
description: >-
Act! Premium Cloud API — US region (host and basePath as published
in the provider Swagger document).
- url: https://{server}/{customer}-api/act.web.api
description: Act! Premium Cloud tenant endpoint, per the Act! Web API home page.
variables:
server:
default: apimta.act.com
customer:
default: customer
- url: https://{server}/act.web.api
description: Self-hosted Act! Premium for Web / Act! Premium Windows IIS deployment.
variables:
server:
default: localhost
- target: $.components
description: >-
The provider document declares NO securityDefinitions, so a generated
client has no way to authenticate. Add the three schemes Act! documents at
https://apimta.act.com/act.web.api/ — Basic (RFC 7617) to mint the token,
Bearer JWT (RFC 6750) to call, and the Act-Database-Name header that
selects the database.
update:
securitySchemes:
basicAuth:
type: http
scheme: basic
description: >-
HTTP Basic credentials (Act! user name and password, RFC 7617)
presented to GET /authorize together with the Act-Database-Name
header to mint a JWT bearer token.
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: >-
JWT bearer token returned by GET /authorize (RFC 6750). Sent as
Authorization: Bearer <token> on every API request.
actDatabaseName:
type: apiKey
in: header
name: Act-Database-Name
description: Name of the Act! database the request is scoped to.
- target: $
description: Apply the documented default security requirement to every operation.
update:
security:
- bearerAuth: []
actDatabaseName: []
- target: $.paths..responses
description: >-
NOTE — NOT APPLIED. Recorded as a recommendation only, because the
provider publishes no 429 and no Retry-After anywhere. Act! documents
X-RateLimit-Limit / -Remaining / -Reset for Act! Premium Cloud
(https://apimta.act.com/act.web.api/) but names no throttled status code,
so adding a 429 response would be an invention. Left for Act! to declare.
x-recommendation: >-
Declare the throttled status code and the X-RateLimit-* response headers
on operations subject to Act! Premium Cloud rate limiting.
- target: $.paths
description: >-
NOTE — NOT APPLIED. Eleven operations carry "Deprecated" or "Dep" inside
their generated operationId while advertising deprecated:false (listed in
lifecycle/act-lifecycle.yml under deprecated_by_naming_only). Marking them
deprecated:true here would assert a provider decision we cannot confirm;
it is recorded as a finding instead.
x-recommendation: >-
Set deprecated: true on ActivitySeries_*Deprecated_*,
Notes_GetByGroupDep_998BE8AB, HistoryTypes_GetDeprecated*,
System_GetMultilanguageCurrencyDeprecated_F1F71F04 and
Notes_GetByOpportunityDeprecated_8998BFA6.
x-conversion-notes:
- Swagger 2.0 body parameters converted to OpenAPI 3.1 requestBody, preserving the operation's declared consumes[] as the content media types.
- Swagger 2.0 formData parameters converted to a requestBody object schema.
- Response schema blocks converted to content keyed by the operation's declared produces[] (defaulting to application/json where produces was empty).
- '#/definitions/* references rewritten to #/components/schemas/*; schema names retained verbatim, including their dotted .NET namespace form.'
- x-nullable folded into JSON Schema 2020-12 type unions.
- 'deprecated: false was dropped as noise; no operation carried deprecated: true.'
- Split one document per tag (31 tags, 410 operations), carrying the transitive closure of the schemas each tag references.