# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Console Experiments (Warehouse Native) API version: 1.0.0 extends: openapi/statsig-experiments-warehouse-native-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: 20 - target: $.paths['/console/v1/experiments/{id}/load_pulse'].post update: x-apievangelist-phrasing: intent: Load Pulse results for a warehouse experiment effect: write questions: - How do I trigger a fresh Pulse computation for an experiment in my warehouse? - Can I reload Pulse for only a few metrics? - Is there a faster turbo mode for loading Pulse? instructions: - text: Load Pulse for experiment {id}. slots: id: path.id - text: Reload Pulse for experiment {id} on metrics {metricIDs} with turbo mode {turboMode}. slots: id: path.id metricIDs: requestBody.metricIDs turboMode: requestBody.turboMode method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/{id}/pulse_load_history'].get update: x-apievangelist-phrasing: intent: List an experiment's Pulse load runs effect: read questions: - When was Pulse last computed for an experiment? - Can I see past Pulse load jobs for one experiment? instructions: - text: Show the Pulse load history for experiment {id}. slots: id: path.id - text: List page {page} of Pulse loads for experiment {id}. slots: id: path.id page: query.page method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/{id}/pulse_load_history/{dagID}'].get update: x-apievangelist-phrasing: intent: Inspect one Pulse load run effect: read questions: - Why did a particular Pulse load fail? - What steps ran in a specific Pulse load job? instructions: - text: Show details of Pulse load {dagID} for experiment {id}. slots: id: path.id dagID: path.dagID - text: Get the status of load run {dagID} on experiment {id}. slots: id: path.id dagID: path.dagID method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/{id}/pulse_load_history/{dagID}/cancel'].post update: x-apievangelist-phrasing: intent: Cancel a running Pulse load effect: destructive questions: - Can I stop a Pulse load that is taking too long? - What's the way to abort an in-progress warehouse Pulse job? instructions: - text: Cancel Pulse load {dagID} for experiment {id}. slots: id: path.id dagID: path.dagID - text: Stop the running load job {dagID} on experiment {id}. slots: id: path.id dagID: path.dagID method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/assignment_source/{name}'].post update: x-apievangelist-phrasing: intent: Fully update an assignment source effect: write questions: - How do I replace the SQL and column mapping of an existing assignment source? - Can I dry-run an assignment source update before saving it? instructions: - text: Overwrite assignment source {name} with SQL {sql}, timestamp column {timestampColumn}, experiment column {experimentIDColumn}, group column {groupIDColumn}. slots: name: path.name sql: requestBody.sql timestampColumn: requestBody.timestampColumn experimentIDColumn: requestBody.experimentIDColumn groupIDColumn: requestBody.groupIDColumn - text: Dry-run {dryRun} a full rewrite of assignment source {name} using unit mapping {idTypeMapping}. slots: name: path.name dryRun: requestBody.dryRun idTypeMapping: requestBody.idTypeMapping method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/assignment_source/{name}'].delete update: x-apievangelist-phrasing: intent: Delete an assignment source effect: destructive questions: - Can I remove an assignment source we no longer query? - Is deleting an assignment source permanent? instructions: - text: Delete assignment source {name}. slots: name: path.name - text: Remove the experiment assignment source called {name}. slots: name: path.name method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/assignment_source/{name}'].patch update: x-apievangelist-phrasing: intent: Change selected fields of an assignment source effect: write questions: - Can I mark an assignment source as verified without resending its SQL? - Is it possible to change only the scheduled reload hour on an assignment source? instructions: - text: Mark assignment source {name} as verified {isVerified}. slots: name: path.name isVerified: requestBody.isVerified - text: Set assignment source {name} to reload daily at UTC hour {scheduledReloadHour}. slots: name: path.name scheduledReloadHour: requestBody.scheduledReloadHour method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/assignment_sources'].get update: x-apievangelist-phrasing: intent: List assignment sources effect: read questions: - Which warehouse tables feed experiment assignments? - Can I page through all our assignment sources? instructions: - text: List all assignment sources. - text: Show assignment sources page {page}, {limit} per page. slots: page: query.page limit: query.limit method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/assignment_sources'].post update: x-apievangelist-phrasing: intent: Create an assignment source effect: write questions: - How do I register a warehouse query that tells Statsig which group each user was in? - What columns does a new assignment source need? instructions: - text: Create assignment source {name} from SQL {sql} with timestamp column {timestampColumn}, experiment column {experimentIDColumn}, group column {groupIDColumn}. slots: name: requestBody.name sql: requestBody.sql timestampColumn: requestBody.timestampColumn experimentIDColumn: requestBody.experimentIDColumn groupIDColumn: requestBody.groupIDColumn - text: Register new assignment source {name} mapping units as {idTypeMapping}. slots: name: requestBody.name idTypeMapping: requestBody.idTypeMapping method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/entity_properties'].get update: x-apievangelist-phrasing: intent: List entity property sources effect: read questions: - Which entity property sources describe our users? - Can I page through entity property sources? instructions: - text: List all entity property sources. - text: Show entity property sources page {page}, {limit} per page. slots: page: query.page limit: query.limit method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/entity_properties'].post update: x-apievangelist-phrasing: intent: Create an entity property source effect: write questions: - How do I bring user attributes from my warehouse in for experiment analysis? - Can I validate a new entity property source without saving it? instructions: - text: Create entity property source {name} from SQL {sql} with unit mapping {idTypeMapping}. slots: name: requestBody.name sql: requestBody.sql idTypeMapping: requestBody.idTypeMapping - text: Dry-run {dryRun} a new entity property source {name} using query {sql} and mapping {idTypeMapping}. slots: name: requestBody.name sql: requestBody.sql idTypeMapping: requestBody.idTypeMapping dryRun: requestBody.dryRun method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/entity_property/{name}'].get update: x-apievangelist-phrasing: intent: Get an entity property source effect: read questions: - What SQL backs a particular entity property source? - Can I read one entity property source by name? instructions: - text: Show entity property source {name}. slots: name: path.name - text: Get the query and mapping of entity property source {name}. slots: name: path.name method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/entity_property/{name}'].post update: x-apievangelist-phrasing: intent: Fully update an entity property source effect: write questions: - How do I replace the query behind an entity property source? - Must I resend the unit mapping on a full entity property update? instructions: - text: Overwrite entity property source {name} with SQL {sql} and mapping {idTypeMapping}. slots: name: path.name sql: requestBody.sql idTypeMapping: requestBody.idTypeMapping - text: Rewrite entity property source {name} using {sql}, mapping {idTypeMapping}, timestamp column {timestampColumn}. slots: name: path.name sql: requestBody.sql idTypeMapping: requestBody.idTypeMapping timestampColumn: requestBody.timestampColumn method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/entity_property/{name}'].delete update: x-apievangelist-phrasing: intent: Delete an entity property source effect: destructive questions: - Can I remove an entity property source we stopped using? - Is deleting an entity property source reversible? instructions: - text: Delete entity property source {name}. slots: name: path.name - text: Remove the user-attribute source called {name}. slots: name: path.name method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/entity_property/{name}'].patch update: x-apievangelist-phrasing: intent: Change selected fields of an entity property source effect: write questions: - Can I just retag an entity property source? - Is it possible to treat an entity property timestamp as a day without resending the SQL? instructions: - text: Set tags {tags} on entity property source {name}. slots: name: path.name tags: requestBody.tags - text: Treat timestamps as days ({timestampAsDay}) on entity property source {name}. slots: name: path.name timestampAsDay: requestBody.timestampAsDay method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/qualifying_events'].get update: x-apievangelist-phrasing: intent: List qualifying events effect: read questions: - Which qualifying events decide who counts in an experiment? - Can I page through our qualifying events? instructions: - text: List all qualifying events. - text: Show qualifying events page {page}, {limit} per page. slots: page: query.page limit: query.limit method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/qualifying_events'].post update: x-apievangelist-phrasing: intent: Create a qualifying event effect: write questions: - How do I define a qualifying event from a warehouse table or query? - Can I skip SQL validation when creating a qualifying event? instructions: - text: Create qualifying event {name} from SQL {sql} with timestamp column {timestampColumn} and mapping {idTypeMapping}. slots: name: requestBody.name sql: requestBody.sql timestampColumn: requestBody.timestampColumn idTypeMapping: requestBody.idTypeMapping - text: Add qualifying event {name} reading table {tableName} partitioned by {datePartitionColumn}, query {sql}, time {timestampColumn}, units {idTypeMapping}. slots: name: requestBody.name tableName: requestBody.tableName datePartitionColumn: requestBody.datePartitionColumn sql: requestBody.sql timestampColumn: requestBody.timestampColumn idTypeMapping: requestBody.idTypeMapping method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/qualifying_events/{name}'].get update: x-apievangelist-phrasing: intent: Read a qualifying event effect: read questions: - What query defines a particular qualifying event? - Can I look up one qualifying event by name? instructions: - text: Show qualifying event {name}. slots: name: path.name - text: Get the SQL and mapping for qualifying event {name}. slots: name: path.name method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/qualifying_events/{name}'].post update: x-apievangelist-phrasing: intent: Update a qualifying event effect: write questions: - How do I change the SQL behind a qualifying event? - Can a qualifying event be renamed during an update? instructions: - text: Update qualifying event {name} with SQL {sql}, timestamp column {timestampColumn} and mapping {idTypeMapping}. slots: name: path.name sql: requestBody.sql timestampColumn: requestBody.timestampColumn idTypeMapping: requestBody.idTypeMapping - text: Change qualifying event {name} to query {sql} at time column {timestampColumn}, units {idTypeMapping}, verified {isVerified}. slots: name: path.name sql: requestBody.sql timestampColumn: requestBody.timestampColumn idTypeMapping: requestBody.idTypeMapping isVerified: requestBody.isVerified method: generated generated: '2026-10-01' - target: $.paths['/console/v1/experiments/qualifying_events/{name}'].delete update: x-apievangelist-phrasing: intent: Delete a qualifying event effect: destructive questions: - Can I remove a qualifying event we no longer use? - Is deleting a qualifying event permanent? instructions: - text: Delete qualifying event {name}. slots: name: path.name - text: Remove the qualifying event named {name}. slots: name: path.name method: generated generated: '2026-10-01'