# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Salesforce Collections API version: 1.0.0 extends: openapi/salesforce-collections-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: 6 - target: $.paths['/services/data/v64.0/apps/oauth/credentials/'].get update: x-apievangelist-phrasing: intent: List consumer credentials for a client app effect: read questions: - Where can I get consumer credentials for my external client app? - Can I list all consumer keys tied to an external client app? instructions: - text: List consumer credentials for my external client app. - text: Get the OAuth consumer keys and secrets for the app. method: generated generated: '2026-09-26' - target: $.paths['/data/v64.0/composite/sobjects'].post update: x-apievangelist-phrasing: intent: Create many records in one request effect: write questions: - How do I create many records in one request? - Can I roll back all inserts if one record in the batch fails? instructions: - text: Create the records {records} in one request. slots: records: requestBody.records - text: Insert {records} with all-or-none set to {allOrNone}. slots: records: requestBody.records allOrNone: requestBody.allOrNone method: generated generated: '2026-09-26' - target: $.paths['/data/v64.0/composite/sobjects'].delete update: x-apievangelist-phrasing: intent: Delete several records by ID effect: destructive questions: - Can I delete several records by ID in one call? - Is it possible to make a multi-record delete all-or-nothing? instructions: - text: Delete records {ids} in one request. slots: ids: query.ids - text: Delete {ids} with all-or-none {allOrNone}. slots: ids: query.ids allOrNone: query.allOrNone method: generated generated: '2026-09-26' - target: $.paths['/data/v64.0/composite/sobjects'].patch update: x-apievangelist-phrasing: intent: Update many existing records at once effect: write questions: - What's the way to update multiple existing records in one call? - Can a batch update be rolled back entirely when any record errors? instructions: - text: Update the records {records} in a single request. slots: records: requestBody.records - text: Apply updates {records} with all-or-none {allOrNone}. slots: records: requestBody.records allOrNone: requestBody.allOrNone method: generated generated: '2026-09-26' - target: $.paths['/data/v64.0/composite/sobjects/{SOBJECT_API_NAME}'].get update: x-apievangelist-phrasing: intent: Fetch several records of one object effect: read questions: - Can I fetch several records of one object by ID with chosen fields? - Which fields come back when I retrieve a set of records together? instructions: - text: Get {SOBJECT_API_NAME} records {ids} with fields {fields}. slots: SOBJECT_API_NAME: path.SOBJECT_API_NAME ids: query.ids fields: query.fields - text: Retrieve the {SOBJECT_API_NAME} records with IDs {ids}. slots: SOBJECT_API_NAME: path.SOBJECT_API_NAME ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/data/v64.0/composite/sobjects/{SOBJECT_API_NAME}/{FIELD_NAME}'].patch update: x-apievangelist-phrasing: intent: Upsert records by external ID effect: write questions: - Can I upsert up to 200 records matched on an external ID field? - How do I create-or-update many records keyed by my own ID? instructions: - text: Upsert {records} into {SOBJECT_API_NAME} matching on {FIELD_NAME}. slots: records: requestBody.records SOBJECT_API_NAME: path.SOBJECT_API_NAME FIELD_NAME: path.FIELD_NAME - text: Upsert {SOBJECT_API_NAME} records by external ID {FIELD_NAME} with all-or-none {allOrNone}. slots: SOBJECT_API_NAME: path.SOBJECT_API_NAME FIELD_NAME: path.FIELD_NAME allOrNone: requestBody.allOrNone method: generated generated: '2026-09-26'