Loops · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Loops OpenAPI Spec Contacts API

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

What the actions change

x-apievangelist-phrasing

Targets 7

$.info
$.paths['/v1/contacts/create'].post
$.paths['/v1/contacts/update'].put
$.paths['/v1/contacts/find'].get
$.paths['/v1/contacts/delete'].post
$.paths['/v1/contacts/suppression'].get
$.paths['/v1/contacts/suppression'].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 Loops OpenAPI Spec Contacts API
  version: 1.0.0
extends: openapi/loops-contacts-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-09-26'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 6
- target: $.paths['/v1/contacts/create'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a new contact
      effect: write
      questions:
      - How do I add a new subscriber to my audience?
      - Can I put a new contact on mailing lists when I create them?
      instructions:
      - text: Add contact {email} named {firstName} {lastName}.
        slots:
          email: requestBody.email
          firstName: requestBody.firstName
          lastName: requestBody.lastName
      - text: Create a new contact {email} with user ID {userId} in group {userGroup}.
        slots:
          email: requestBody.email
          userId: requestBody.userId
          userGroup: requestBody.userGroup
      - text: Create contact {email} and subscribe them to lists {mailingLists}.
        slots:
          email: requestBody.email
          mailingLists: requestBody.mailingLists
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/contacts/update'].put
  update:
    x-apievangelist-phrasing:
      intent: Update or upsert a contact
      effect: write
      questions:
      - How do I change an existing contact's name or properties?
      - Can I change a contact's email address if they have a user ID?
      - Will updating a contact create one if it doesn't exist yet?
      instructions:
      - text: Update the contact with user ID {userId} to email {email}.
        slots:
          userId: requestBody.userId
          email: requestBody.email
      - text: Unsubscribe existing contact {email} by setting subscribed to {subscribed}.
        slots:
          email: requestBody.email
          subscribed: requestBody.subscribed
      - text: Upsert contact {email} with first name {firstName}.
        slots:
          email: requestBody.email
          firstName: requestBody.firstName
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/contacts/find'].get
  update:
    x-apievangelist-phrasing:
      intent: Find a contact by email or user ID
      effect: read
      questions:
      - Is a given email address already a contact?
      - Can I look up a contact using my app's user ID?
      instructions:
      - text: Find the contact with email {email}.
        slots:
          email: query.email
      - text: Look up the contact whose user ID is {userId}.
        slots:
          userId: query.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/contacts/delete'].post
  update:
    x-apievangelist-phrasing:
      intent: Delete a contact
      effect: destructive
      questions:
      - How do I permanently remove someone from my audience?
      - Can I delete a contact using their user ID?
      instructions:
      - text: Delete the contact {email}.
        slots:
          email: requestBody.email
      - text: Remove contact with user ID {userId} from my audience.
        slots:
          userId: requestBody.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/contacts/suppression'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a contact's suppression status
      effect: read
      questions:
      - Is this contact suppressed from receiving emails?
      - How many suppression removals do I have left?
      instructions:
      - text: Check whether {email} is suppressed.
        slots:
          email: query.email
      - text: Get suppression status for user ID {userId}.
        slots:
          userId: query.userId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/contacts/suppression'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove a contact from the suppression list
      effect: destructive
      questions:
      - How do I unsuppress a contact so they can get emails again?
      - Can I take a user ID off the suppression list?
      instructions:
      - text: Remove {email} from the suppression list.
        slots:
          email: query.email
      - text: Unsuppress the contact with user ID {userId}.
        slots:
          userId: query.userId
      method: generated
      generated: '2026-09-26'