lemlist · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Lemlist Inbox API

16 actions 16 updates phrasing extends openapi/lemlist-inbox-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for lemlist's API. It is a proposal applied on top of the contract, not a document lemlist publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 16

$.info
$.paths['/inbox'].get
$.paths['/inbox/{contactId}'].get
$.paths['/inbox/email'].post
$.paths['/inbox/linkedin'].post
$.paths['/inbox/whatsapp'].post
$.paths['/inbox/labels'].get
$.paths['/inbox/labels'].post
$.paths['/inbox/labels/{labelId}'].get
$.paths['/inbox/conversations/labels/{contactId}'].post
$.paths['/inbox/conversations/labels/{contactId}'].delete
$.paths['/inbox/{contactId}/drafts'].get
$.paths['/inbox/{contactId}/drafts'].post
$.paths['/inbox/{contactId}/drafts/{draftId}'].get
$.paths['/inbox/{contactId}/drafts/{draftId}'].delete
$.paths['/inbox/{contactId}/drafts/{draftId}'].patch

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 Lemlist Inbox API
  version: 1.0.0
extends: openapi/lemlist-inbox-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: 15
- target: $.paths['/inbox'].get
  update:
    x-apievangelist-phrasing:
      intent: List my inbox conversations
      effect: read
      questions:
      - Which conversations are waiting in my lemlist unified inbox?
      - Can I page through the inbox for one teammate?
      instructions:
      - text: List my inbox conversations.
      - text: Show page {page} of the inbox for user {userId}, {limit} at a time.
        slots:
          page: query.page
          userId: requestBody.userId
          limit: query.limit
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/{contactId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Read the message thread with a contact
      effect: read
      questions:
      - How do I read the full conversation history with one contact?
      - Can I mark a conversation as read when I fetch its messages?
      instructions:
      - text: Show the messages exchanged with contact {contactId}.
        slots:
          contactId: path.contactId
      - text: Open the conversation with {contactId} and set markAsRead to {markAsRead}.
        slots:
          contactId: path.contactId
          markAsRead: query.markAsRead
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/email'].post
  update:
    x-apievangelist-phrasing:
      intent: Send an email to a contact from the inbox
      effect: write
      questions:
      - How do I send a one-off email reply to a lead from the inbox?
      - Can I CC someone when emailing a contact directly?
      instructions:
      - text: Email contact {contactId} with subject {subject} and message {message}.
        slots:
          contactId: requestBody.contactId
          subject: requestBody.subject
          message: requestBody.message
      - text: Send lead {leadId} an email saying {message}, CC {cc}, from {sendUserEmail}.
        slots:
          leadId: requestBody.leadId
          message: requestBody.message
          cc: requestBody.cc
          sendUserEmail: requestBody.sendUserEmail
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/linkedin'].post
  update:
    x-apievangelist-phrasing:
      intent: Send a LinkedIn message to a contact
      effect: write
      questions:
      - Can I send a LinkedIn DM to a lead through the API?
      - How do I reply to a prospect on LinkedIn from lemlist?
      instructions:
      - text: 'Send a LinkedIn message to contact {contactId}: {message}.'
        slots:
          contactId: requestBody.contactId
          message: requestBody.message
      - text: Message lead {leadId} on LinkedIn as user {sendUserId} saying {message}.
        slots:
          leadId: requestBody.leadId
          sendUserId: requestBody.sendUserId
          message: requestBody.message
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/whatsapp'].post
  update:
    x-apievangelist-phrasing:
      intent: Send a WhatsApp message to a contact
      effect: write
      questions:
      - Is it possible to text a prospect on WhatsApp from lemlist?
      - Which WhatsApp account will my message go out from?
      instructions:
      - text: 'Send a WhatsApp message to contact {contactId}: {message}.'
        slots:
          contactId: requestBody.contactId
          message: requestBody.message
      - text: WhatsApp lead {leadId} from account {sendUserWhatsappAccountId} saying {message}.
        slots:
          leadId: requestBody.leadId
          sendUserWhatsappAccountId: requestBody.sendUserWhatsappAccountId
          message: requestBody.message
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/labels'].get
  update:
    x-apievangelist-phrasing:
      intent: List my team's inbox labels
      effect: read
      questions:
      - What labels can I use to tag inbox conversations?
      - Which conversation tags has my team already created?
      instructions:
      - text: List all inbox labels.
      - text: Show the labels my team uses for conversations.
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/labels'].post
  update:
    x-apievangelist-phrasing:
      intent: Create an inbox label
      effect: write
      questions:
      - How do I add a new label for sorting conversations?
      - Can I create a team-wide tag like 'Hot lead' for the inbox?
      instructions:
      - text: Create an inbox label called {labelName}.
        slots:
          labelName: requestBody.labelName
      - text: Add a new conversation label named {labelName} for the team.
        slots:
          labelName: requestBody.labelName
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/labels/{labelId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get details of one inbox label
      effect: read
      questions:
      - What's stored on a particular inbox label?
      - Can I look up a label's name from its id?
      instructions:
      - text: Show inbox label {labelId}.
        slots:
          labelId: path.labelId
      - text: Get the name and info of label {labelId}.
        slots:
          labelId: path.labelId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/conversations/labels/{contactId}'].post
  update:
    x-apievangelist-phrasing:
      intent: Tag a conversation with labels
      effect: write
      questions:
      - How do I tag a conversation with one or more labels?
      - Can I replace a conversation's existing labels instead of adding to them?
      instructions:
      - text: Attach labels {labelIds} to the conversation with {contactId}, appendLabels {appendLabels}.
        slots:
          labelIds: requestBody.labelIds
          contactId: path.contactId
          appendLabels: requestBody.appendLabels
      - text: Label conversation {contactId} with {labelIds} on top of its current labels, appendLabels {appendLabels}.
        slots:
          contactId: path.contactId
          labelIds: requestBody.labelIds
          appendLabels: requestBody.appendLabels
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/conversations/labels/{contactId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove labels from a conversation
      effect: destructive
      questions:
      - How do I untag a conversation that was labeled by mistake?
      - Can I strip specific labels off one conversation?
      instructions:
      - text: Remove labels {labelIds} from the conversation with {contactId}.
        slots:
          labelIds: requestBody.labelIds
          contactId: path.contactId
      - text: Untag conversation {contactId} of {labelIds}.
        slots:
          contactId: path.contactId
          labelIds: requestBody.labelIds
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/{contactId}/drafts'].get
  update:
    x-apievangelist-phrasing:
      intent: List message drafts for a contact
      effect: read
      questions:
      - Which unsent drafts do I have for a given contact?
      - Can I see the drafts a teammate wrote for a prospect?
      instructions:
      - text: List drafts for contact {contactId} owned by {draftOwner}.
        slots:
          contactId: path.contactId
          draftOwner: query.draftOwner
      - text: Show {draftOwner}'s pending drafts to {contactId}.
        slots:
          draftOwner: query.draftOwner
          contactId: path.contactId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/{contactId}/drafts'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a message draft for a contact
      effect: write
      questions:
      - How do I prepare a draft reply for a contact without sending it?
      - What's the size limit on a draft's content?
      instructions:
      - text: 'Draft a {channel} message to {contactId} for {draftOwner}: {content}.'
        slots:
          channel: requestBody.channel
          contactId: path.contactId
          draftOwner: query.draftOwner
          content: requestBody.content
      - text: Create an email draft for {contactId} as {draftOwner} with subject {subject}, channel {channel}, body {content}.
        slots:
          contactId: path.contactId
          draftOwner: query.draftOwner
          subject: requestBody.subject
          channel: requestBody.channel
          content: requestBody.content
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/{contactId}/drafts/{draftId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one draft with its full content
      effect: read
      questions:
      - Can I read the full text and attachments of a single draft?
      - Where do I open a specific saved draft for a contact?
      instructions:
      - text: Open draft {draftId} for contact {contactId} owned by {draftOwner}.
        slots:
          draftId: path.draftId
          contactId: path.contactId
          draftOwner: query.draftOwner
      - text: Show the content of {draftOwner}'s draft {draftId} to {contactId}.
        slots:
          draftOwner: query.draftOwner
          draftId: path.draftId
          contactId: path.contactId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/{contactId}/drafts/{draftId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a draft
      effect: destructive
      questions:
      - How do I throw away a draft I don't want to send?
      - Is a deleted draft actually erased or just marked deleted?
      instructions:
      - text: Delete draft {draftId} for contact {contactId} owned by {draftOwner}.
        slots:
          draftId: path.draftId
          contactId: path.contactId
          draftOwner: query.draftOwner
      - text: Discard {draftOwner}'s draft {draftId} to {contactId}.
        slots:
          draftOwner: query.draftOwner
          draftId: path.draftId
          contactId: path.contactId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/inbox/{contactId}/drafts/{draftId}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Edit an existing draft
      effect: write
      questions:
      - Can I change the subject or body of a draft I already saved?
      - How do I add a CC to an existing draft?
      instructions:
      - text: Change the subject of draft {draftId} for {contactId} (owner {draftOwner}) to {subject}.
        slots:
          draftId: path.draftId
          contactId: path.contactId
          draftOwner: query.draftOwner
          subject: requestBody.subject
      - text: Rewrite {draftOwner}'s draft {draftId} to {contactId} as {content}.
        slots:
          draftOwner: query.draftOwner
          draftId: path.draftId
          contactId: path.contactId
          content: requestBody.content
      method: generated
      generated: '2026-10-01'