Knock · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Knock App Guides API

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

What the actions change

x-apievangelist-phrasing

Targets 16

$.info
$.paths['/v1/guides/{guide_key}'].get
$.paths['/v1/guides/{guide_key}'].put
$.paths['/v1/guides/{guide_key}'].delete
$.paths['/v1/guides'].get
$.paths['/v1/guides/{guide_key}/activate'].put
$.paths['/v1/guides/{guide_key}/validate'].put
$.paths['/v1/users/{user_id}/guides/messages/seen'].put
$.paths['/v1/users/{user_id}/guides/messages/{message_id}/seen'].put
$.paths['/v1/users/{user_id}/guides/messages/archived'].put
$.paths['/v1/users/{user_id}/guides/messages/archived'].delete
$.paths['/v1/users/{user_id}/guides/messages/interacted'].put
$.paths['/v1/users/{user_id}/guides/engagements/reset'].put
$.paths['/v1/users/{user_id}/guides/{channel_id}'].get
$.paths['/v1/users/{user_id}/guides/messages/{message_id}/interacted'].put
$.paths['/v1/users/{user_id}/guides/messages/{message_id}/archived'].put

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 Knock App Guides API
  version: 1.0.0
extends: openapi/knock-app-guides-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['/v1/guides/{guide_key}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an in-app guide by key
      effect: read
      questions:
      - How do I view one guide's steps and targeting?
      - Can I fetch a guide as it exists on a branch?
      instructions:
      - text: Get guide {guide_key} in {environment}.
        slots:
          guide_key: path.guide_key
          environment: query.environment
      - text: Show the {guide_key} guide definition on branch {branch} in {environment}.
        slots:
          guide_key: path.guide_key
          branch: query.branch
          environment: query.environment
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/guides/{guide_key}'].put
  update:
    x-apievangelist-phrasing:
      intent: Create or update an in-app guide
      effect: write
      questions:
      - How do I create a new onboarding guide or edit an existing one?
      - Can I commit a guide change as soon as I save it?
      instructions:
      - text: Upsert guide {guide_key} in {environment} with {guide}.
        slots:
          guide_key: path.guide_key
          environment: query.environment
          guide: requestBody.guide
      - text: Save guide {guide_key} and commit with message {commit_message} in {environment}.
        slots:
          guide_key: path.guide_key
          commit_message: query.commit_message
          environment: query.environment
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/guides/{guide_key}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Archive a guide in every environment
      effect: destructive
      questions:
      - How do I retire a guide across all environments?
      - What happens to a guide when I archive it?
      instructions:
      - text: Archive guide {guide_key}.
        slots:
          guide_key: path.guide_key
      - text: Retire the {guide_key} guide everywhere.
        slots:
          guide_key: path.guide_key
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/guides'].get
  update:
    x-apievangelist-phrasing:
      intent: List guides in an environment
      effect: read
      questions:
      - Which in-app guides are defined in this environment?
      - Can I page through guides on a branch?
      instructions:
      - text: List guides in {environment}.
        slots:
          environment: query.environment
      - text: Show {limit} guides on branch {branch} in {environment}.
        slots:
          limit: query.limit
          branch: query.branch
          environment: query.environment
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/guides/{guide_key}/activate'].put
  update:
    x-apievangelist-phrasing:
      intent: Activate or deactivate a guide
      effect: write
      questions:
      - How do I turn a guide on so users start seeing it?
      - Can I schedule when a guide becomes active?
      instructions:
      - text: Activate guide {guide_key} in {environment}.
        slots:
          guide_key: path.guide_key
          environment: query.environment
      - text: Deactivate the {guide_key} guide in {environment}.
        slots:
          guide_key: path.guide_key
          environment: query.environment
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/guides/{guide_key}/validate'].put
  update:
    x-apievangelist-phrasing:
      intent: Validate a guide without saving
      effect: read
      questions:
      - Can I check a guide payload for errors before saving it?
      - Is there a dry run for guide definitions?
      instructions:
      - text: Validate guide payload {guide} for {guide_key} in {environment}.
        slots:
          guide: requestBody.guide
          guide_key: path.guide_key
          environment: query.environment
      - text: Check guide {guide_key} definition {guide} without persisting it in {environment}.
        slots:
          guide_key: path.guide_key
          guide: requestBody.guide
          environment: query.environment
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/guides/messages/seen'].put
  update:
    x-apievangelist-phrasing:
      intent: Record a guide as seen (no message ID)
      effect: write
      questions:
      - How do I record that a user saw a guide step when I don't have a guide message ID?
      - Can I log a guide view using only the guide key and step reference?
      instructions:
      - text: Mark step {guide_step_ref} of guide {guide_key} as seen for user {user_id}, without a message ID.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      - text: Log a seen event on guide {guide_key} step {guide_step_ref} for {user_id} via the message-less endpoint.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/guides/messages/{message_id}/seen'].put
  update:
    x-apievangelist-phrasing:
      intent: Record an existing guide message as seen
      effect: write
      questions:
      - How do I mark a specific guide message as seen for a user?
      - Does marking a guide message seen trigger the guide's seen events?
      instructions:
      - text: Mark guide message {message_id} for {guide_key} step {guide_step_ref} as seen by user {user_id}.
        slots:
          user_id: path.user_id
          message_id: path.message_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      - text: Record that user {user_id} viewed their existing guide message for {guide_key} step {guide_step_ref}.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/guides/messages/archived'].put
  update:
    x-apievangelist-phrasing:
      intent: Record a guide as dismissed (no message ID)
      effect: write
      questions:
      - How do I archive a guide for a user when I have no guide message ID?
      - Can a user dismiss a guide using just its key and step?
      instructions:
      - text: Mark guide {guide_key} step {guide_step_ref} as archived for user {user_id}, without a message ID.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      - text: Dismiss guide {guide_key} at step {guide_step_ref} for {user_id} via the message-less endpoint.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/guides/messages/archived'].delete
  update:
    x-apievangelist-phrasing:
      intent: Restore a dismissed guide
      effect: destructive
      questions:
      - How do I bring back a guide a user previously dismissed?
      - Can I undo a guide archive for one user?
      instructions:
      - text: Unarchive guide {guide_key} step {guide_step_ref} for user {user_id}.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      - text: Restore the dismissed {guide_key} guide for {user_id} at step {guide_step_ref}.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/guides/messages/interacted'].put
  update:
    x-apievangelist-phrasing:
      intent: Record a guide interaction (no message ID)
      effect: write
      questions:
      - How do I log a user clicking inside a guide when I lack a guide message ID?
      - Can I record a guide interaction from only the guide key and step?
      instructions:
      - text: Mark guide {guide_key} step {guide_step_ref} as interacted for user {user_id}, without a message ID.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      - text: Log an interaction on guide {guide_key} step {guide_step_ref} by {user_id} via the message-less endpoint.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/guides/engagements/reset'].put
  update:
    x-apievangelist-phrasing:
      intent: Reset a user's engagement with a guide
      effect: write
      questions:
      - How do I reset a guide so a user's next interaction starts fresh?
      - Can I clear a user's engagement history on one guide?
      instructions:
      - text: Reset engagement on guide {guide_key} step {guide_step_ref} for user {user_id}.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      - text: Clear user {user_id}'s engagement log for the {guide_key} guide at step {guide_step_ref}.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/guides/{channel_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: List guides a user is eligible for
      effect: read
      questions:
      - Which in-app guides should a particular user see right now?
      - Can I list a user's eligible guides for a specific tenant?
      instructions:
      - text: List eligible guides for user {user_id} on channel {channel_id}.
        slots:
          user_id: path.user_id
          channel_id: path.channel_id
      - text: Show guides user {user_id} qualifies for on channel {channel_id} in tenant {tenant}.
        slots:
          user_id: path.user_id
          channel_id: path.channel_id
          tenant: query.tenant
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/guides/messages/{message_id}/interacted'].put
  update:
    x-apievangelist-phrasing:
      intent: Record an interaction on a guide message
      effect: write
      questions:
      - How do I record that a user interacted with a specific guide message?
      - Does logging a guide message interaction trigger its interacted events?
      instructions:
      - text: Mark guide message {message_id} for {guide_key} step {guide_step_ref} as interacted by user {user_id}.
        slots:
          user_id: path.user_id
          message_id: path.message_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      - text: Record user {user_id} clicking their existing guide message for {guide_key} step {guide_step_ref}.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/guides/messages/{message_id}/archived'].put
  update:
    x-apievangelist-phrasing:
      intent: Archive an existing guide message
      effect: write
      questions:
      - How do I archive a specific guide message a user dismissed?
      - Will archiving a guide message fire its archived events?
      instructions:
      - text: Archive guide message {message_id} for {guide_key} step {guide_step_ref} for user {user_id}.
        slots:
          user_id: path.user_id
          message_id: path.message_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      - text: Record that user {user_id} dismissed their existing guide message for {guide_key} step {guide_step_ref}.
        slots:
          user_id: path.user_id
          guide_key: requestBody.guide_key
          guide_step_ref: requestBody.guide_step_ref
      method: generated
      generated: '2026-10-01'