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.
View Overlay File View on GitHub Overlay Specification

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

Raw ↑
# 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'

Work with this as data

Every overlay 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 openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • 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 overlay
curl "https://apis.io/api/v1/overlays/common-room-contacts-api-phrasing-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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.