# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for DoiT Insights API version: 1.0.0 extends: openapi/doit-insights-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: 9 - target: $.paths['/insights/v1/results'].get update: x-apievangelist-phrasing: intent: List optimization insights effect: read questions: - What cost savings opportunities has DoiT found for us? - Can I filter insights to only easy wins or by cloud provider? - Can I search insights by category or priority? instructions: - text: List insights in category {category}. slots: category: query.category - text: Show insights with priority {priority} for {cloudProvider}. slots: priority: query.priority cloudProvider: query.cloudProvider method: generated generated: '2026-10-01' - target: $.paths['/insights/v1/results'].post update: x-apievangelist-phrasing: intent: Create or update insights in bulk effect: write questions: - Can I push many custom insights in a single request? - How do I upload my own optimization findings in batch? instructions: - text: Upload insights batch {results}. slots: results: requestBody.results - text: 'Create or update these insights in bulk: {results}.' slots: results: requestBody.results method: generated generated: '2026-10-01' - target: $.paths['/insights/v1/results'].delete update: x-apievangelist-phrasing: intent: Delete insights by key in bulk effect: destructive questions: - How do I remove every insight with a given key from my batch source? - Does bulk deleting also remove resource results? instructions: - text: Delete all insights with key {insightKey}. slots: insightKey: query.insightKey - text: Bulk remove insights keyed {insightKey} and their resource results. slots: insightKey: query.insightKey method: generated generated: '2026-10-01' - target: $.paths['/insights/v1/results/source/{sourceID}/insight/{insightKey}'].get update: x-apievangelist-phrasing: intent: Retrieve one insight summary effect: read questions: - How do I see the savings summary for a single insight? - Does fetching one insight include its resource-level results? instructions: - text: Get insight {insightKey} from source {sourceID}. slots: insightKey: path.insightKey sourceID: path.sourceID - text: Show the summary of insight {insightKey} in {sourceID}. slots: insightKey: path.insightKey sourceID: path.sourceID method: generated generated: '2026-10-01' - target: $.paths['/insights/v1/results/source/{sourceID}/insight/{insightKey}'].post update: x-apievangelist-phrasing: intent: Create or update a single insight effect: write questions: - How do I publish one custom insight for a source? - What happens if an insight with the same key already exists? instructions: - text: 'Upsert insight {key} titled {title} in source {sourceID} under key {insightKey} for {cloudProvider}, categories {categories}: {shortDescription}.' slots: key: requestBody.key title: requestBody.title sourceID: path.sourceID insightKey: path.insightKey cloudProvider: requestBody.cloudProvider categories: requestBody.categories shortDescription: requestBody.shortDescription - text: Save insight {insightKey} for source {sourceID} with title {title}. slots: insightKey: path.insightKey sourceID: path.sourceID title: requestBody.title method: generated generated: '2026-10-01' - target: $.paths['/insights/v1/results/source/{sourceID}/insight/{insightKey}'].delete update: x-apievangelist-phrasing: intent: Delete a single insight effect: destructive questions: - How do I permanently delete one insight I created via the API? - Can I delete insights that weren't created through the public API? instructions: - text: Delete insight {insightKey} from source {sourceID}. slots: insightKey: path.insightKey sourceID: path.sourceID - text: Permanently remove insight {insightKey} in {sourceID}. slots: insightKey: path.insightKey sourceID: path.sourceID method: generated generated: '2026-10-01' - target: $.paths['/insights/v1/results/source/{sourceID}/insight/{insightKey}/status'].put update: x-apievangelist-phrasing: intent: Acknowledge or dismiss an insight effect: write questions: - How do I mark an insight as acknowledged or dismissed? - Can I record why I dismissed an insight? instructions: - text: Set insight {insightKey} in {sourceID} to {status}. slots: insightKey: path.insightKey sourceID: path.sourceID status: requestBody.status - text: Dismiss insight {insightKey} from {sourceID} with status {status} and details {dismissalDetails}. slots: insightKey: path.insightKey sourceID: path.sourceID status: requestBody.status dismissalDetails: requestBody.dismissalDetails method: generated generated: '2026-10-01' - target: $.paths['/insights/v1/results/source/{sourceID}/insight/{insightKey}/resource-results'].get update: x-apievangelist-phrasing: intent: List affected resources for an insight effect: read questions: - Which individual cloud resources does an insight apply to? - Can I page through an insight's resource-level results? instructions: - text: List resource results for insight {insightKey} in {sourceID}. slots: insightKey: path.insightKey sourceID: path.sourceID - text: Show the affected resources of insight {insightKey} from {sourceID}. slots: insightKey: path.insightKey sourceID: path.sourceID method: generated generated: '2026-10-01' - target: $.paths['/insights/v1/results/source/{sourceID}/insight/{insightKey}/resource-results'].post update: x-apievangelist-phrasing: intent: Replace an insight's resource results effect: write questions: - How do I overwrite the list of resources attached to an insight? - What happens to existing resource results not in my new set? instructions: - text: Replace resource results of insight {insightKey} in {sourceID} with {resourceResults}. slots: insightKey: path.insightKey sourceID: path.sourceID resourceResults: requestBody.resourceResults - text: 'Overwrite affected resources on {insightKey} for source {sourceID}: {resourceResults}.' slots: insightKey: path.insightKey sourceID: path.sourceID resourceResults: requestBody.resourceResults method: generated generated: '2026-10-01'