Common Room · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Common Room Contacts API
8 actions
8 updates
phrasing
extends
openapi/common-room-contacts-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Common Room's API. It is a proposal applied on top of the contract, not a document Common Room publishes.
What the actions change
x-apievangelist-phrasing
Targets 8
$.info
$.paths['/source/{destinationSourceId}/user'].post
$.paths['/members/customFields'].get
$.paths['/user/{email}'].get
$.paths['/user/{email}'].delete
$.paths['/members'].get
$.paths['/contacts/{id}'].get
$.paths['/contacts'].get
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Common Room Contacts API
version: 1.0.0
extends: openapi/common-room-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: 7
- target: $.paths['/source/{destinationSourceId}/user'].post
update:
x-apievangelist-phrasing:
intent: Add or update a user in an API signal source
effect: write
questions:
- How do I add a person from my own system into Common Room as a contact?
- Can I update a user I already sent by reusing the same ID?
- What profile details, like company, location or social handles, can I send for a user?
instructions:
- text: Add user {id} to source {destinationSourceId}.
slots:
id: requestBody.id
destinationSourceId: path.destinationSourceId
- text: Add user {id} named {fullName} with email {email} to source {destinationSourceId}.
slots:
id: requestBody.id
fullName: requestBody.fullName
email: requestBody.email
destinationSourceId: path.destinationSourceId
- text: Update user {id} in source {destinationSourceId} with title {titleAtCompany} at {companyName}.
slots:
id: requestBody.id
destinationSourceId: path.destinationSourceId
titleAtCompany: requestBody.titleAtCompany
companyName: requestBody.companyName
method: generated
generated: '2026-10-01'
- target: $.paths['/members/customFields'].get
update:
x-apievangelist-phrasing:
intent: List contact custom fields for a room
effect: read
questions:
- What custom fields are defined on contacts in our room?
- Can I see the contact custom fields tied to one destination source?
instructions:
- text: List all contact custom fields in our room.
- text: List the contact custom fields for source {destinationSourceId}.
slots:
destinationSourceId: query.destinationSourceId
method: generated
generated: '2026-10-01'
- target: $.paths['/user/{email}'].get
update:
x-apievangelist-phrasing:
intent: Look up a contact's profile by email
effect: read
questions:
- How do I find a contact's full profile when all I have is their email address?
- Can I retrieve someone's Common Room profile from a single email?
instructions:
- text: Get the contact profile for email {email}.
slots:
email: path.email
- text: Pull up the person whose email address is {email}.
slots:
email: path.email
method: generated
generated: '2026-10-01'
- target: $.paths['/user/{email}'].delete
update:
x-apievangelist-phrasing:
intent: Request anonymization of a contact by email
effect: destructive
questions:
- How do I remove a contact's personal data when they ask to be forgotten?
- Does anonymizing a contact happen immediately or is it queued?
instructions:
- text: Anonymize the contact with email {email}.
slots:
email: path.email
- text: Queue removal of all personal information for {email}.
slots:
email: path.email
method: generated
generated: '2026-10-01'
- target: $.paths['/members'].get
update:
x-apievangelist-phrasing:
intent: Find a contact by email or social handle
effect: read
questions:
- Can I find a contact by their GitHub, Twitter or LinkedIn handle?
- Which lookup works when I have a social handle instead of a contact ID?
instructions:
- text: Find the contact with GitHub handle {github}.
slots:
github: query.github
- text: Look up the member whose Twitter handle is {twitter} or LinkedIn is {linkedin}.
slots:
twitter: query.twitter
linkedin: query.linkedin
method: generated
generated: '2026-10-01'
- target: $.paths['/contacts/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a contact by its ID
effect: read
questions:
- How do I fetch one contact when I have its c_ ID?
- Can I include columns like primary email or location when retrieving a contact by ID?
instructions:
- text: Get contact {id}.
slots:
id: path.id
- text: Fetch contact {id} with columns {cols}.
slots:
id: path.id
cols: query.cols
method: generated
generated: '2026-10-01'
- target: $.paths['/contacts'].get
update:
x-apievangelist-phrasing:
intent: List contacts with filters and paging
effect: read
questions:
- What's the way to page through every contact in our community?
- Can I list only the contacts in a given segment or organization?
- Is it possible to sort contacts by latest activity or a lead score?
instructions:
- text: List the contacts in segment {segmentId}.
slots:
segmentId: query.segmentId
- text: List contacts at organization {organizationId} sorted by {sort}.
slots:
organizationId: query.organizationId
sort: query.sort
- text: Show {limit} contacts starting from cursor {cursor}.
slots:
limit: query.limit
cursor: query.cursor
method: generated
generated: '2026-10-01'