# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Soda Cloud API v4 Secrets API version: 1.0.0 extends: openapi/soda-data-secrets-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: 5 - target: $.paths['/api/v1/secrets'].get update: x-apievangelist-phrasing: intent: List secrets effect: read questions: - Which stored secrets can my data source configurations reference? - Can I search my secrets by name? instructions: - text: List all secrets. - text: Search secrets for {search}. slots: search: query.search method: generated generated: '2026-09-26' - target: $.paths['/api/v1/secrets'].post update: x-apievangelist-phrasing: intent: Create a secret effect: write questions: - How do I store a database password so it stays out of plain-text data source config? - Must a secret value be encrypted before I send it? instructions: - text: Create secret {name} with encrypted value {encryptedValue} and key {encryptionKey}. slots: name: requestBody.name encryptedValue: requestBody.encryptedValue encryptionKey: requestBody.encryptionKey - text: Store new secret {name} using encryption key {encryptionKey} and value {encryptedValue}. slots: name: requestBody.name encryptionKey: requestBody.encryptionKey encryptedValue: requestBody.encryptedValue method: generated generated: '2026-09-26' - target: $.paths['/api/v1/secrets/{secretId}'].post update: x-apievangelist-phrasing: intent: Rotate a secret's value effect: write questions: - Can I rotate the value of an existing secret without renaming it? - Do I have to send both the encryption key and value when updating a secret? instructions: - text: Update secret {secretId} with new encrypted value {encryptedValue} and key {encryptionKey}. slots: secretId: path.secretId encryptedValue: requestBody.encryptedValue encryptionKey: requestBody.encryptionKey - text: Rotate secret {secretId} to {encryptedValue} using key {encryptionKey}. slots: secretId: path.secretId encryptedValue: requestBody.encryptedValue encryptionKey: requestBody.encryptionKey method: generated generated: '2026-09-26' - target: $.paths['/api/v1/secrets/{secretId}'].delete update: x-apievangelist-phrasing: intent: Delete a secret effect: destructive questions: - How do I delete a stored secret? - Why can't I delete a secret that a data source still uses? instructions: - text: Delete secret {secretId}. slots: secretId: path.secretId - text: Remove stored secret {secretId}. slots: secretId: path.secretId method: generated generated: '2026-09-26' - target: $.paths['/api/v1/secretsPublicKey'].get update: x-apievangelist-phrasing: intent: Get the public key for encrypting secrets effect: read questions: - Which public key should I use to encrypt a secret client-side? - Where do I get the RSA JWK for secret encryption? instructions: - text: Fetch the secrets encryption public key. - text: Get the RSA public key in JWK format for encrypting secret values. method: generated generated: '2026-09-26'