Unify · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Unify Data API
32 actions
32 updates
phrasing
extends
openapi/unify-data-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Unify's API. It is a proposal applied on top of the contract, not a document Unify publishes.
What the actions change
x-apievangelist-phrasing
Targets 32 · first 16 shown; the file carries all of them
$.info
$.paths['/data/v1/events/query-jobs'].get
$.paths['/data/v1/events/query-jobs'].post
$.paths['/data/v1/events/query-jobs/{job_id}'].get
$.paths['/data/v1/events/query-jobs/{job_id}/cancel'].post
$.paths['/data/v1/events/query-jobs/{job_id}/results'].get
$.paths['/data/v1/objects'].get
$.paths['/data/v1/objects'].post
$.paths['/data/v1/objects/{object_name}'].get
$.paths['/data/v1/objects/{object_name}'].delete
$.paths['/data/v1/objects/{object_name}'].patch
$.paths['/data/v1/objects/{object_name}/attributes'].get
$.paths['/data/v1/objects/{object_name}/attributes'].post
$.paths['/data/v1/objects/{object_name}/attributes/{attribute_name}'].get
$.paths['/data/v1/objects/{object_name}/attributes/{attribute_name}'].delete
$.paths['/data/v1/objects/{object_name}/attributes/{attribute_name}'].patch
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 Unify Data API
version: 1.0.0
extends: openapi/unify-data-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: 31
- target: $.paths['/data/v1/events/query-jobs'].get
update:
x-apievangelist-phrasing:
intent: List analytics event export jobs
effect: read
questions:
- Which analytics event export jobs have I started recently?
- Can I see only the event export jobs that are still in progress?
instructions:
- text: List my analytics event export jobs.
- text: Show event export jobs with status {status}.
slots:
status: query.status
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/events/query-jobs'].post
update:
x-apievangelist-phrasing:
intent: Start a bulk export of analytics events
effect: write
questions:
- How do I export all my website page, track and identify events from Unify in bulk?
- Can I export only analytics events newer than a certain timestamp for an incremental sync?
- Do exported website events include the revealed company and person for each visit?
instructions:
- text: Start an export job for all analytics events.
- text: Start an analytics event export filtered by {filter}.
slots:
filter: requestBody.filter
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/events/query-jobs/{job_id}'].get
update:
x-apievangelist-phrasing:
intent: Check the status of an event export job
effect: read
questions:
- Has my analytics event export job finished yet?
- When does an event export job expire after I create it?
instructions:
- text: Check whether event export job {job_id} is finished.
slots:
job_id: path.job_id
- text: Poll the status of analytics event export {job_id}.
slots:
job_id: path.job_id
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/events/query-jobs/{job_id}/cancel'].post
update:
x-apievangelist-phrasing:
intent: Cancel a running event export job
effect: destructive
questions:
- Can I stop an analytics event export that is still running?
- Which event export jobs are allowed to be canceled?
instructions:
- text: Cancel analytics event export job {job_id}.
slots:
job_id: path.job_id
- text: Stop the in-progress event export {job_id}.
slots:
job_id: path.job_id
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/events/query-jobs/{job_id}/results'].get
update:
x-apievangelist-phrasing:
intent: Download results of an event export job
effect: read
questions:
- How do I page through the rows of a finished analytics event export?
- Can I stream exported website events as newline-delimited JSON?
- What is the largest page size for downloading event export results?
instructions:
- text: Fetch the exported events from job {job_id}.
slots:
job_id: path.job_id
- text: Get page {page} of event export {job_id} with {page_size} rows per page.
slots:
page: query.page
job_id: path.job_id
page_size: query.page_size
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects'].get
update:
x-apievangelist-phrasing:
intent: List the objects in a workspace
effect: read
questions:
- What standard and custom objects exist in my Unify workspace?
- Which kinds of records, like company, person or opportunity, can my workspace store?
instructions:
- text: List every object defined in my workspace.
- text: Show me all standard and custom object types.
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects'].post
update:
x-apievangelist-phrasing:
intent: Create a custom object
effect: write
questions:
- How do I add a custom object to store a new kind of record?
- Can I change a custom object's API name after I create it?
instructions:
- text: Create a custom object {api_name} called {display_name} described as {description}, provided by {provider}.
slots:
api_name: requestBody.api_name
display_name: requestBody.display_name
description: requestBody.description
provider: requestBody.provider
- text: Add a new custom object type named {display_name} with API name {api_name}, provider {provider} and description {description}.
slots:
display_name: requestBody.display_name
api_name: requestBody.api_name
provider: requestBody.provider
description: requestBody.description
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}'].get
update:
x-apievangelist-phrasing:
intent: Get an object definition
effect: read
questions:
- What does the definition of one of my workspace objects look like?
- Can I look up a single object type by its API name?
instructions:
- text: Show the definition of object {object_name}.
slots:
object_name: path.object_name
- text: Get the {object_name} object's display name and description.
slots:
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an object
effect: destructive
questions:
- How do I remove a custom object type I no longer need?
- Can an entire object be deleted by its API name?
instructions:
- text: Delete the object {object_name}.
slots:
object_name: path.object_name
- text: Remove the custom object type {object_name} from my workspace.
slots:
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}'].patch
update:
x-apievangelist-phrasing:
intent: Rename or redescribe an object
effect: write
questions:
- Can I rename an object's display name without changing its API name?
- How do I update the description shown for an object in the UI?
instructions:
- text: Rename object {object_name} to {display_name} with description {description}.
slots:
object_name: path.object_name
display_name: requestBody.display_name
description: requestBody.description
- text: Update the {object_name} object's description to {description} and display name to {display_name}.
slots:
object_name: path.object_name
description: requestBody.description
display_name: requestBody.display_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/attributes'].get
update:
x-apievangelist-phrasing:
intent: List the attributes on an object
effect: read
questions:
- Which fields are defined on my company object?
- What attributes can records of a given object hold values for?
instructions:
- text: List all attributes on the {object_name} object.
slots:
object_name: path.object_name
- text: Show me the fields defined for {object_name}.
slots:
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/attributes'].post
update:
x-apievangelist-phrasing:
intent: Add an attribute to an object
effect: write
questions:
- How do I add a new field to an object, like a select or a reference to another object?
- Can I change an attribute's value type after creating it?
- Can a new attribute be marked unique so I can upsert records by it?
instructions:
- text: Add a new attribute to the {object_name} object.
slots:
object_name: path.object_name
- text: Create a reference field on {object_name} that links to another object's records.
slots:
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/attributes/{attribute_name}'].get
update:
x-apievangelist-phrasing:
intent: Get one attribute on an object
effect: read
questions:
- How can I see the type and settings of a single field on an object?
- Is a particular attribute on my object unique or required?
instructions:
- text: Show attribute {attribute_name} on object {object_name}.
slots:
attribute_name: path.attribute_name
object_name: path.object_name
- text: Get the definition of the {attribute_name} field of {object_name}.
slots:
attribute_name: path.attribute_name
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/attributes/{attribute_name}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an attribute from an object
effect: destructive
questions:
- How do I remove a field I no longer use from an object?
- Can I delete an attribute by its API name?
instructions:
- text: Delete attribute {attribute_name} from object {object_name}.
slots:
attribute_name: path.attribute_name
object_name: path.object_name
- text: Remove the {attribute_name} field from {object_name}.
slots:
attribute_name: path.attribute_name
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/attributes/{attribute_name}'].patch
update:
x-apievangelist-phrasing:
intent: Update an attribute's display name or description
effect: write
questions:
- Can I rename a field's display name on an object after it exists?
- Is it possible to downgrade a reference attribute from many to one?
instructions:
- text: Update the display name and description of attribute {attribute_name} on {object_name}.
slots:
attribute_name: path.attribute_name
object_name: path.object_name
- text: Edit the {attribute_name} field settings on object {object_name}.
slots:
attribute_name: path.attribute_name
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/attributes/{attribute_name}/options'].get
update:
x-apievangelist-phrasing:
intent: List the options of a select attribute
effect: read
questions:
- What values can I pick from in a select or multi-select field?
- Which predefined options exist on a dropdown attribute?
instructions:
- text: List the options of select field {attribute_name} on {object_name}.
slots:
attribute_name: path.attribute_name
object_name: path.object_name
- text: Show the allowed values for the {attribute_name} dropdown on object {object_name}.
slots:
attribute_name: path.attribute_name
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/attributes/{attribute_name}/options'].post
update:
x-apievangelist-phrasing:
intent: Add an option to a select attribute
effect: write
questions:
- How do I add a new choice to a select or multi-select field?
- Can I give a dropdown option a separate API name and display name?
instructions:
- text: Add option {display_name} with API name {api_name} to the {attribute_name} field on {object_name}.
slots:
display_name: requestBody.display_name
api_name: requestBody.api_name
attribute_name: path.attribute_name
object_name: path.object_name
- text: Create a new choice {api_name} labeled {display_name} on select attribute {attribute_name} of {object_name}.
slots:
api_name: requestBody.api_name
display_name: requestBody.display_name
attribute_name: path.attribute_name
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/attributes/{attribute_name}/options/{option_name}'].get
update:
x-apievangelist-phrasing:
intent: Get one option of a select attribute
effect: read
questions:
- How can I look up a single dropdown option by its API name?
- What is the display label of a specific select option?
instructions:
- text: Show option {option_name} of field {attribute_name} on {object_name}.
slots:
option_name: path.option_name
attribute_name: path.attribute_name
object_name: path.object_name
- text: Get the {option_name} choice from select attribute {attribute_name} of object {object_name}.
slots:
option_name: path.option_name
attribute_name: path.attribute_name
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/attributes/{attribute_name}/options/{option_name}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an option from a select attribute
effect: destructive
questions:
- How do I remove a choice from a select or multi-select field?
- Can I delete one dropdown value without deleting the whole attribute?
instructions:
- text: Delete option {option_name} from field {attribute_name} on {object_name}.
slots:
option_name: path.option_name
attribute_name: path.attribute_name
object_name: path.object_name
- text: Remove the {option_name} choice from the {attribute_name} dropdown of {object_name}.
slots:
option_name: path.option_name
attribute_name: path.attribute_name
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/attributes/{attribute_name}/options/{option_name}'].patch
update:
x-apievangelist-phrasing:
intent: Rename an option of a select attribute
effect: write
questions:
- Can I relabel a dropdown option without changing its API name?
- How do I change the display name of a select field choice?
instructions:
- text: Rename option {option_name} on field {attribute_name} of {object_name} to {display_name}.
slots:
option_name: path.option_name
attribute_name: path.attribute_name
object_name: path.object_name
display_name: requestBody.display_name
- text: Change the label of the {option_name} choice in {object_name}.{attribute_name} to {display_name}.
slots:
option_name: path.option_name
object_name: path.object_name
attribute_name: path.attribute_name
display_name: requestBody.display_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/query-jobs'].get
update:
x-apievangelist-phrasing:
intent: List record export jobs for an object
effect: read
questions:
- Which record export jobs have I run against my company object?
- Can I filter an object's record export jobs by status?
instructions:
- text: List record export jobs for object {object_name}.
slots:
object_name: path.object_name
- text: Show {object_name} record export jobs with status {status}.
slots:
object_name: path.object_name
status: query.status
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/query-jobs'].post
update:
x-apievangelist-phrasing:
intent: Start a bulk export of an object's records
effect: write
questions:
- How do I bulk export all person records with only the fields I choose?
- Can a record export filter on attribute values and sort by last updated for incremental syncs?
- Can I expand a reference field into nested records when exporting an object?
instructions:
- text: Start an export of {object_name} records using query {query}.
slots:
object_name: path.object_name
query: requestBody.query
- text: Kick off a bulk record export job on {object_name} selecting and filtering with {query}.
slots:
object_name: path.object_name
query: requestBody.query
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/query-jobs/{job_id}'].get
update:
x-apievangelist-phrasing:
intent: Check the status of a record export job
effect: read
questions:
- Is my company record export job done yet?
- How long do object record export jobs stay available?
instructions:
- text: Check the status of {object_name} record export job {job_id}.
slots:
object_name: path.object_name
job_id: path.job_id
- text: Poll record export {job_id} on object {object_name} until it finishes.
slots:
job_id: path.job_id
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/query-jobs/{job_id}/cancel'].post
update:
x-apievangelist-phrasing:
intent: Cancel a running record export job
effect: destructive
questions:
- Can I stop a record export on an object that is taking too long?
- What happens if I try to cancel a record export that already finished?
instructions:
- text: Cancel record export job {job_id} on {object_name}.
slots:
job_id: path.job_id
object_name: path.object_name
- text: Stop the in-progress {object_name} record export {job_id}.
slots:
object_name: path.object_name
job_id: path.job_id
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/query-jobs/{job_id}/results'].get
update:
x-apievangelist-phrasing:
intent: Download results of a record export job
effect: read
questions:
- How do I page through the records a finished object export returned?
- Why are some attributes missing from rows in my record export results?
- Can I download exported records as NDJSON with up to 10,000 rows per page?
instructions:
- text: Fetch the exported {object_name} records from job {job_id}.
slots:
object_name: path.object_name
job_id: path.job_id
- text: Get page {page} of record export {job_id} on {object_name} with {page_size} rows.
slots:
page: query.page
job_id: path.job_id
object_name: path.object_name
page_size: query.page_size
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/records'].post
update:
x-apievangelist-phrasing:
intent: Create a record of an object
effect: write
questions:
- How do I add a brand-new company or person record?
- What happens if I create a record whose unique field duplicates an existing one?
instructions:
- text: Create a new {object_name} record with values {data}.
slots:
object_name: path.object_name
data: requestBody.data
- text: Insert a {object_name} record with {data} using validation mode {validation_mode}.
slots:
object_name: path.object_name
data: requestBody.data
validation_mode: query.validation_mode
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/records/find-unique'].post
update:
x-apievangelist-phrasing:
intent: Find one record by a unique attribute
effect: read
questions:
- How can I look up a person record by their email instead of its ID?
- What comes back when no record matches the unique value I search for?
instructions:
- text: Find the {object_name} record matching {match}.
slots:
object_name: path.object_name
match: requestBody.match
- text: Look up the single {object_name} whose unique field values are {match}.
slots:
object_name: path.object_name
match: requestBody.match
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/records/upsert'].post
update:
x-apievangelist-phrasing:
intent: Create or update a record by a unique match
effect: write
questions:
- How do I sync a company into Unify without knowing whether it already exists?
- Can I only fill in fields that are empty when the record already exists?
- Is there a way to set different values on create versus on update in one call?
instructions:
- text: Upsert a {object_name} record matched on {match}.
slots:
object_name: path.object_name
match: requestBody.match
- text: Upsert {object_name} matching {match}, setting {create_or_update} whether it is new or existing.
slots:
object_name: path.object_name
match: requestBody.match
create_or_update: requestBody.create_or_update
- text: Upsert {object_name} by {match} and only fill {update_if_empty} where those fields are blank.
slots:
object_name: path.object_name
match: requestBody.match
update_if_empty: requestBody.update_if_empty
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/records/{record_id}'].get
update:
x-apievangelist-phrasing:
intent: Get a record by its ID
effect: read
questions:
- How do I fetch a single record when I already have its ID?
- Can I read all attribute values of one specific record?
instructions:
- text: Get {object_name} record {record_id}.
slots:
object_name: path.object_name
record_id: path.record_id
- text: Show me the details of record {record_id} in {object_name}.
slots:
record_id: path.record_id
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/records/{record_id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a record by its ID
effect: destructive
questions:
- How do I permanently remove one company or person record?
- Can I delete a record if I know its ID?
instructions:
- text: Delete {object_name} record {record_id}.
slots:
object_name: path.object_name
record_id: path.record_id
- text: Remove record {record_id} from the {object_name} object.
slots:
record_id: path.record_id
object_name: path.object_name
method: generated
generated: '2026-10-01'
- target: $.paths['/data/v1/objects/{object_name}/records/{record_id}'].patch
update:
x-apievangelist-phrasing:
intent: Update fields on a record by its ID
effect: write
questions:
- How do I change a few fields on an existing record without touching the others?
- Does updating a record by ID clear the attributes I leave out?
instructions:
- text: Update {object_name} record {record_id} with {data}.
slots:
object_name: path.object_name
record_id: path.record_id
data: requestBody.data
- text: Set {data} on record {record_id} of {object_name} using validation mode {validation_mode}.
slots:
data: requestBody.data
record_id: path.record_id
object_name: path.object_name
validation_mode: query.validation_mode
method: generated
generated: '2026-10-01'