# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for OPERA Cloud CRM Asynchronous CRM Async API version: 1.0.0 extends: openapi/oracle-hospitality-crmasync-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['/stayRecords'].post update: x-apievangelist-phrasing: intent: Upload stay records for loyalty processing effect: write questions: - How do I bulk upload guest stay records into OPERA Cloud CRM? - Can I send past stays asynchronously so members get credit for them? - What stay record columns does the stay upload accept? instructions: - text: Upload these stay records {stayRecords} for asynchronous processing. slots: stayRecords: requestBody.stayRecords - text: Submit a batch of guest stays to the CRM stay record upload queue. method: generated generated: '2026-09-26' - target: $.paths['/stayRecords/{requestId}'].get update: x-apievangelist-phrasing: intent: Get the result of a stay record upload effect: read questions: - Has my stay record upload finished processing yet? - Where do I see the outcome of an uploaded batch of stay records? instructions: - text: Fetch the processing result for stay record upload request {requestId}. slots: requestId: path.requestId - text: Show me what happened to stay upload {requestId}. slots: requestId: path.requestId method: generated generated: '2026-09-26' - target: $.paths['/stayRecords/{requestId}'].head update: x-apievangelist-phrasing: intent: Check stay upload job status without a body effect: read questions: - Is there a lightweight HEAD check for whether a stay record upload job is done? - Can I poll just the status header of an asynchronous stay upload? instructions: - text: Poll the HEAD status of stay upload job {requestId}. slots: requestId: path.requestId - text: Do a header-only status check on stay record request {requestId}. slots: requestId: path.requestId method: generated generated: '2026-09-26' - target: $.paths['/deleteSuspendedStays'].delete update: x-apievangelist-phrasing: intent: Bulk delete suspended stay records effect: destructive questions: - How do I clear out suspended stay records that failed to import? - Can I delete suspended stays by import date range or arrival date? - Which filters can I use to purge suspended stays, like membership number or error description? instructions: - text: Delete all suspended stays for hotel {hotelId} imported between {importDateFrom} and {importDateTo}. slots: hotelId: query.hotelId importDateFrom: query.importDateFrom importDateTo: query.importDateTo - text: Purge suspended stay records for membership number {membershipNo}. slots: membershipNo: query.membershipNo - text: Remove suspended stays with PMS confirmation number {pmsResvConfNo}. slots: pmsResvConfNo: query.pmsResvConfNo method: generated generated: '2026-09-26' - target: $.paths['/deleteSuspendedStays/{requestId}'].get update: x-apievangelist-phrasing: intent: Get the result of a suspended stay deletion effect: read questions: - Did my bulk delete of suspended stays complete? - Where can I see the outcome of a suspended stays purge request? instructions: - text: Fetch the result of suspended stays delete request {requestId}. slots: requestId: path.requestId - text: Show me how suspended stay purge {requestId} turned out. slots: requestId: path.requestId method: generated generated: '2026-09-26' - target: $.paths['/deleteSuspendedStays/{requestId}'].head update: x-apievangelist-phrasing: intent: Check suspended stay deletion job status effect: read questions: - Can I poll a HEAD status for the suspended stays delete job using the Location header id? - Is the asynchronous suspended stay deletion still running? instructions: - text: Poll the HEAD status of suspended stays delete job {requestId}. slots: requestId: path.requestId - text: Do a header-only check on whether suspended stay deletion {requestId} is done. slots: requestId: path.requestId method: generated generated: '2026-09-26'