Act! CRM · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for act.web.api Contacts API

34 actions 34 updates phrasing extends openapi/act-contacts-api-openapi.yml
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.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 34 · first 16 shown; the file carries all of them

$.info
$.paths['/api/companies/{companyId}/associated-contacts/{contactId}'].put
$.paths['/api/companies/{companyId}/associated-contacts/{contactId}'].delete
$.paths['/api/companies/{companyId}/associated-contacts'].get
$.paths['/api/companies/{companyId}/associated-contacts'].put
$.paths['/api/companies/{companyId}/associated-contacts'].delete
$.paths['/api/groups/{groupId}/associated-contacts'].get
$.paths['/api/groups/{groupId}/associated-contacts'].put
$.paths['/api/groups/{groupId}/associated-contacts'].delete
$.paths['/api/groups/{groupId}/associated-contacts/{contactId}'].put
$.paths['/api/groups/{groupId}/associated-contacts/{contactId}'].delete
$.paths['/api/opportunities/{opportunityId}/associated-contacts'].get
$.paths['/api/opportunities/{opportunityId}/associated-contacts'].put
$.paths['/api/opportunities/{opportunityId}/associated-contacts'].delete
$.paths['/api/opportunities/{opportunityId}/associated-contacts/{contactId}'].put
$.paths['/api/opportunities/{opportunityId}/associated-contacts/{contactId}'].delete

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for act.web.api Contacts API
  version: 1.0.0
extends: openapi/act-contacts-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-10-01'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 33
- target: $.paths['/api/companies/{companyId}/associated-contacts/{contactId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Link one contact to a company
      effect: write
      questions:
      - Can I attach a single existing contact to a company record in Act!?
      - What's the call to add just one person to a company's associated contacts?
      instructions:
      - text: Link contact {contactId} to company {companyId}.
        slots:
          contactId: path.contactId
          companyId: path.companyId
      - text: Add the single contact {contactId} to the contacts of company {companyId}.
        slots:
          contactId: path.contactId
          companyId: path.companyId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/companies/{companyId}/associated-contacts/{contactId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unlink one contact from a company
      effect: destructive
      questions:
      - Can I remove one person from a company without deleting the contact itself?
      - What happens to a contact when I detach it from a single company?
      instructions:
      - text: Unlink contact {contactId} from company {companyId}.
        slots:
          contactId: path.contactId
          companyId: path.companyId
      - text: Remove just contact {contactId} from company {companyId}'s associated contacts.
        slots:
          contactId: path.contactId
          companyId: path.companyId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/companies/{companyId}/associated-contacts'].get
  update:
    x-apievangelist-phrasing:
      intent: List the contacts linked to a company
      effect: read
      questions:
      - Who are all the people associated with a particular company?
      - Can I filter a company's contacts with an OData query?
      - Is it possible to choose the phone number format when listing a company's contacts?
      instructions:
      - text: List the contacts associated with company {companyId}.
        slots:
          companyId: path.companyId
      - text: Show everyone linked to company {companyId} with phone numbers in {phoneFormat} format.
        slots:
          companyId: path.companyId
          phoneFormat: query.phoneFormat
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/companies/{companyId}/associated-contacts'].put
  update:
    x-apievangelist-phrasing:
      intent: Link several contacts to a company at once
      effect: write
      questions:
      - Can I attach a whole batch of contacts to a company in one request?
      - What's the bulk way to add many people to a company record?
      instructions:
      - text: Link contacts {contacts} to company {companyId}.
        slots:
          contacts: requestBody.contacts
          companyId: path.companyId
      - text: Bulk-add the list {contacts} as associated contacts of company {companyId}.
        slots:
          contacts: requestBody.contacts
          companyId: path.companyId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/companies/{companyId}/associated-contacts'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unlink several contacts from a company
      effect: destructive
      questions:
      - Can I detach a list of contacts from a company in a single call?
      - Is there a bulk way to clear several people off a company record?
      instructions:
      - text: Unlink contacts {contacts} from company {companyId}.
        slots:
          contacts: requestBody.contacts
          companyId: path.companyId
      - text: Bulk-remove the list {contacts} from company {companyId}'s associated contacts.
        slots:
          contacts: requestBody.contacts
          companyId: path.companyId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/groups/{groupId}/associated-contacts'].get
  update:
    x-apievangelist-phrasing:
      intent: List the contacts in a group
      effect: read
      questions:
      - Who are the members of a specific Act! group?
      - Can I run an OData filter over the contacts inside one group?
      instructions:
      - text: List the contacts in group {groupId}.
        slots:
          groupId: path.groupId
      - text: Show group {groupId}'s members with phone numbers formatted as {phoneFormat}.
        slots:
          groupId: path.groupId
          phoneFormat: query.phoneFormat
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/groups/{groupId}/associated-contacts'].put
  update:
    x-apievangelist-phrasing:
      intent: Add several contacts to a group
      effect: write
      questions:
      - Can I put a batch of contacts into a group in one request?
      - What's the bulk call for assigning many people to a group?
      instructions:
      - text: Add contacts {contacts} to group {groupId}.
        slots:
          contacts: requestBody.contacts
          groupId: path.groupId
      - text: Bulk-assign the list {contacts} as members of group {groupId}.
        slots:
          contacts: requestBody.contacts
          groupId: path.groupId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/groups/{groupId}/associated-contacts'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove several contacts from a group
      effect: destructive
      questions:
      - Can I take a list of contacts out of a group in one call?
      - Is there a bulk way to drop members from a group without deleting them?
      instructions:
      - text: Remove contacts {contacts} from group {groupId}.
        slots:
          contacts: requestBody.contacts
          groupId: path.groupId
      - text: Bulk-remove the members {contacts} from group {groupId}.
        slots:
          contacts: requestBody.contacts
          groupId: path.groupId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/groups/{groupId}/associated-contacts/{contactId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Add one contact to a group
      effect: write
      questions:
      - Can I add a single person to an existing group?
      - What's the call to make one contact a member of a group?
      instructions:
      - text: Add contact {contactId} to group {groupId}.
        slots:
          contactId: path.contactId
          groupId: path.groupId
      - text: Make contact {contactId} a member of group {groupId}.
        slots:
          contactId: path.contactId
          groupId: path.groupId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/groups/{groupId}/associated-contacts/{contactId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove one contact from a group
      effect: destructive
      questions:
      - Can I take a single person out of a group but keep their contact record?
      - What removes just one member from a group?
      instructions:
      - text: Remove contact {contactId} from group {groupId}.
        slots:
          contactId: path.contactId
          groupId: path.groupId
      - text: Drop the single member {contactId} from group {groupId}.
        slots:
          contactId: path.contactId
          groupId: path.groupId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/associated-contacts'].get
  update:
    x-apievangelist-phrasing:
      intent: List the contacts on an opportunity
      effect: read
      questions:
      - Which people are attached to a particular sales opportunity?
      - Can I filter an opportunity's contacts with an OData query?
      instructions:
      - text: List the contacts on opportunity {opportunityId}.
        slots:
          opportunityId: path.opportunityId
      - text: Show who is linked to opportunity {opportunityId}, with phones in {phoneFormat} format.
        slots:
          opportunityId: path.opportunityId
          phoneFormat: query.phoneFormat
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/associated-contacts'].put
  update:
    x-apievangelist-phrasing:
      intent: Link several contacts to an opportunity
      effect: write
      questions:
      - Can I attach a batch of contacts to a deal in one request?
      - What's the bulk call to add many people to an opportunity?
      instructions:
      - text: Link contacts {contacts} to opportunity {opportunityId}.
        slots:
          contacts: requestBody.contacts
          opportunityId: path.opportunityId
      - text: Bulk-attach the list {contacts} to deal {opportunityId}.
        slots:
          contacts: requestBody.contacts
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/associated-contacts'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unlink several contacts from an opportunity
      effect: destructive
      questions:
      - Can I detach a list of contacts from a deal in one call?
      - Is there a bulk way to clear people off an opportunity?
      instructions:
      - text: Unlink contacts {contacts} from opportunity {opportunityId}.
        slots:
          contacts: requestBody.contacts
          opportunityId: path.opportunityId
      - text: Bulk-remove the list {contacts} from deal {opportunityId}.
        slots:
          contacts: requestBody.contacts
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/associated-contacts/{contactId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Link one contact to an opportunity
      effect: write
      questions:
      - Can I add a single person to an existing sales opportunity?
      - What's the call to attach one contact to a deal?
      instructions:
      - text: Link contact {contactId} to opportunity {opportunityId}.
        slots:
          contactId: path.contactId
          opportunityId: path.opportunityId
      - text: Attach the single contact {contactId} to deal {opportunityId}.
        slots:
          contactId: path.contactId
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/associated-contacts/{contactId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unlink one contact from an opportunity
      effect: destructive
      questions:
      - Can I take one person off a deal without deleting the contact?
      - What detaches a single contact from an opportunity?
      instructions:
      - text: Unlink contact {contactId} from opportunity {opportunityId}.
        slots:
          contactId: path.contactId
          opportunityId: path.opportunityId
      - text: Remove just contact {contactId} from deal {opportunityId}.
        slots:
          contactId: path.contactId
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a contact's details
      effect: read
      questions:
      - How do I pull up the full record for one contact by its id?
      - Can I choose how phone numbers are formatted when fetching a contact?
      instructions:
      - text: Get contact {contactId}.
        slots:
          contactId: path.contactId
      - text: Show me the details of contact {contactId} with phones in {phoneFormat} format.
        slots:
          contactId: path.contactId
          phoneFormat: query.phoneFormat
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace a contact's record
      effect: write
      questions:
      - How do I overwrite an existing contact with a full set of new values?
      - Can I rewrite a contact's whole record, job title and addresses included, in one call?
      instructions:
      - text: Replace contact {contactId} with first name {firstName}, last name {lastName} and email {emailAddress}.
        slots:
          contactId: path.contactId
          firstName: requestBody.firstName
          lastName: requestBody.lastName
          emailAddress: requestBody.emailAddress
      - text: Do a full update of contact {contactId}, setting job title {jobTitle} and company {company}.
        slots:
          contactId: path.contactId
          jobTitle: requestBody.jobTitle
          company: requestBody.company
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a contact
      effect: destructive
      questions:
      - Can I permanently remove a contact from the database?
      - What happens when I delete a contact record by id?
      instructions:
      - text: Delete contact {contactId}.
        slots:
          contactId: path.contactId
      - text: Permanently remove contact {contactId} from Act!.
        slots:
          contactId: path.contactId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Change selected fields on a contact
      effect: write
      questions:
      - Can I change only a contact's mobile number without resending everything else?
      - Is there a partial update for a contact that leaves other fields untouched?
      instructions:
      - text: Change just the mobile phone of contact {contactId} to {mobilePhone}.
        slots:
          contactId: path.contactId
          mobilePhone: requestBody.mobilePhone
      - text: Patch contact {contactId} so their email is {emailAddress}, leaving everything else as is.
        slots:
          contactId: path.contactId
          emailAddress: requestBody.emailAddress
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/{entityName}/{id}/associated-contacts'].get
  update:
    x-apievangelist-phrasing:
      intent: List contacts linked to a custom entity record
      effect: read
      questions:
      - Which contacts are attached to a record in one of my custom tables?
      - Can I list the people linked to a custom entity item with an OData filter?
      instructions:
      - text: List the contacts linked to record {id} in custom entity {entityName}.
        slots:
          id: path.id
          entityName: path.entityName
      - text: Show who is associated with {entityName} record {id}.
        slots:
          entityName: path.entityName
          id: path.id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/by-ids'].get
  update:
    x-apievangelist-phrasing:
      intent: Fetch several contacts by their ids
      effect: read
      questions:
      - Can I fetch a handful of specific contacts in one request by id?
      - What's the way to look up multiple contacts when I already have their ids?
      instructions:
      - text: Fetch the contacts with ids {ids}.
        slots:
          ids: query.ids
      - text: Look up contacts {ids} and format their phone numbers as {phoneFormat}.
        slots:
          ids: query.ids
          phoneFormat: query.phoneFormat
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}/access'].get
  update:
    x-apievangelist-phrasing:
      intent: See who can access a contact
      effect: read
      questions:
      - Who has access to a particular contact record?
      - Is a contact public, private or limited to certain users?
      instructions:
      - text: Show the access level of contact {contactId}.
        slots:
          contactId: path.contactId
      - text: List who is allowed to see contact {contactId}.
        slots:
          contactId: path.contactId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}/access'].put
  update:
    x-apievangelist-phrasing:
      intent: Set who can access a contact
      effect: write
      questions:
      - Can I restrict a contact so only certain users can see it?
      - How do I change the access level on a contact record?
      instructions:
      - text: Set contact {contactId} to access level {type}.
        slots:
          contactId: path.contactId
          type: requestBody.type
      - text: Limit access to contact {contactId} to the users {accessors}.
        slots:
          contactId: path.contactId
          accessors: requestBody.accessors
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts'].get
  update:
    x-apievangelist-phrasing:
      intent: List or search all contacts
      effect: read
      questions:
      - Can I search my whole contact database with an OData filter?
      - What's the way to page through every contact I have?
      instructions:
      - text: List all my contacts.
      - text: Show every contact with phone numbers formatted as {phoneFormat}.
        slots:
          phoneFormat: query.phoneFormat
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new contact
      effect: write
      questions:
      - How do I add a brand-new person to my contacts?
      - Can I set custom fields when I create a contact?
      instructions:
      - text: Create a contact named {firstName} {lastName} with email {emailAddress}.
        slots:
          firstName: requestBody.firstName
          lastName: requestBody.lastName
          emailAddress: requestBody.emailAddress
      - text: Add a new contact {fullName} who works at {company} as {jobTitle}.
        slots:
          fullName: requestBody.fullName
          company: requestBody.company
          jobTitle: requestBody.jobTitle
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/group-contacts'].get
  update:
    x-apievangelist-phrasing:
      intent: List distinct contacts across several groups
      effect: read
      questions:
      - Can I get everyone in several groups at once without duplicates?
      - Which contacts belong to any of a set of groups?
      instructions:
      - text: List the distinct contacts across groups {ids}.
        slots:
          ids: query.ids
      - text: Combine the members of groups {ids} into one de-duplicated contact list.
        slots:
          ids: query.ids
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/nearby'].get
  update:
    x-apievangelist-phrasing:
      intent: Find contacts near a location
      effect: read
      questions:
      - Which of my contacts are within a few kilometers of a given point?
      - Can I search contacts by latitude, longitude and radius?
      instructions:
      - text: Find contacts within {radius} km of {latitude}, {longitude}.
        slots:
          radius: query.radius
          latitude: query.latitude
          longitude: query.longitude
      - text: Show me who is near latitude {latitude} longitude {longitude} inside a {radius} km radius.
        slots:
          latitude: query.latitude
          longitude: query.longitude
          radius: query.radius
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/webinfo'].get
  update:
    x-apievangelist-phrasing:
      intent: List contact web info links
      effect: read
      questions:
      - What web info hyperlinks are configured for contacts?
      - Can I see the web info link groups used on contact records?
      instructions:
      - text: List the contact web info hyperlinks.
      - text: Show all web info link groups for contacts.
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/myrecord'].get
  update:
    x-apievangelist-phrasing:
      intent: Get my own contact record
      effect: read
      questions:
      - Can I fetch the contact record that represents the logged-in user?
      - Where do I find my own My Record contact?
      instructions:
      - text: Show my own contact record.
      - text: Get the current user's My Record with phones in {phoneFormat} format.
        slots:
          phoneFormat: query.phoneFormat
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/duplicate'].put
  update:
    x-apievangelist-phrasing:
      intent: Duplicate several contacts
      effect: write
      questions:
      - Can I copy a batch of contacts in one go?
      - Is it possible to duplicate many contacts but copy only their primary fields?
      instructions:
      - text: Duplicate contacts {contacts}.
        slots:
          contacts: requestBody.contacts
      - text: 'Make copies of contacts {contacts}, primary fields only: {primaryFields}.'
        slots:
          contacts: requestBody.contacts
          primaryFields: query.primaryFields
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}/duplicate'].put
  update:
    x-apievangelist-phrasing:
      intent: Duplicate one contact
      effect: write
      questions:
      - Can I clone a single contact record?
      - When copying one contact, can I limit it to the primary fields?
      instructions:
      - text: Duplicate contact {contactId}.
        slots:
          contactId: path.contactId
      - text: 'Clone contact {contactId}, copying primary fields only: {primaryFields}.'
        slots:
          contactId: path.contactId
          primaryFields: query.primaryFields
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}/hotlead-subscription'].put
  update:
    x-apievangelist-phrasing:
      intent: Turn hot lead alerts on or off for a contact
      effect: write
      questions:
      - Can I subscribe to hot lead notifications for a specific contact?
      - How do I stop hot lead alerts for one contact?
      instructions:
      - text: Subscribe me to hot leads for contact {contactId}.
        slots:
          contactId: path.contactId
      - text: Set the hot lead subscription on contact {contactId} to {active}.
        slots:
          contactId: path.contactId
          active: query.active
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/webinfo/{id}/HyperLink/{linkId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Update a contact web info hyperlink
      effect: write
      questions:
      - Can I change the URL a web info link points to?
      - What's the way to rename a hyperlink inside a web info group?
      instructions:
      - text: Point web info link {linkId} in group {id} at {href}.
        slots:
          linkId: path.linkId
          id: path.id
          href: requestBody.href
      - text: Rename hyperlink {linkId} in web info group {id} to {name}.
        slots:
          linkId: path.linkId
          id: path.id
          name: requestBody.name
      method: generated
      generated: '2026-10-01'