Oracle Hospitality · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for OPERA Cloud Activity API
24 actions
24 updates
phrasing
extends
openapi/oracle-hospitality-activity-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Oracle Hospitality's API. It is a proposal applied on top of the contract, not a document Oracle Hospitality publishes.
What the actions change
x-apievangelist-phrasing
Targets 24 · first 16 shown; the file carries all of them
$.info
$.paths['/activities'].get
$.paths['/activities'].put
$.paths['/activities'].delete
$.paths['/activities/activitiesCompletion'].post
$.paths['/activities/emails'].get
$.paths['/activities/emails/searches'].post
$.paths['/activities/{activityId}'].get
$.paths['/activities/{activityId}'].delete
$.paths['/activities/{activityId}/attachments/{attachmentId}'].delete
$.paths['/hotels/{hotelId}/activities'].get
$.paths['/hotels/{hotelId}/activities'].post
$.paths['/hotels/{hotelId}/activities/statistics'].get
$.paths['/hotels/{hotelId}/activities/{activityId}'].get
$.paths['/hotels/{hotelId}/activities/{activityId}'].put
$.paths['/hotels/{hotelId}/activities/{activityId}'].delete
OpenAPI Overlay
# 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 Activity API
version: 1.0.0
extends: openapi/oracle-hospitality-activity-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: 23
- target: $.paths['/activities'].get
update:
x-apievangelist-phrasing:
intent: Search activities across several hotels
effect: read
questions:
- What sales activities are open across all the hotels in my portfolio?
- Can I pull activities for several properties at once, filtered by owner or date?
instructions:
- text: List activities across hotels {hotelIds} from {startDate} to {endDate}.
slots:
hotelIds: query.hotelIds
startDate: query.startDate
endDate: query.endDate
- text: Show high-priority activities owned by {ownerCode} across all my hotels.
slots:
ownerCode: query.ownerCode
method: generated
generated: '2026-09-26'
- target: $.paths['/activities'].put
update:
x-apievangelist-phrasing:
intent: Bulk update many activities at once
effect: write
questions:
- Can I update a batch of activities in one request instead of one by one?
- Is there a bulk edit for sales activities?
instructions:
- text: Apply bulk update {activitiesBulkUpdate} to the activities I list.
slots:
activitiesBulkUpdate: requestBody.activitiesBulkUpdate
- text: Bulk-edit all the selected activities with the same changes.
method: generated
generated: '2026-09-26'
- target: $.paths['/activities'].delete
update:
x-apievangelist-phrasing:
intent: Delete several activities by their IDs
effect: destructive
questions:
- Can I delete a whole list of activities in one call?
- What do I need to remove several activities together?
instructions:
- text: Delete activities {activityIds}.
slots:
activityIds: query.activityIds
- text: Remove every activity in the ID list {activityIds} in one go.
slots:
activityIds: query.activityIds
method: generated
generated: '2026-09-26'
- target: $.paths['/activities/activitiesCompletion'].post
update:
x-apievangelist-phrasing:
intent: Mark several activities as completed
effect: write
questions:
- How do I close out a batch of finished activities in one request?
- Can completing activities also update the linked activities?
instructions:
- text: Mark the activities in {activitiesInformation} as completed.
slots:
activitiesInformation: requestBody.activitiesInformation
- text: Complete all the activities I list and update their linked activities too.
method: generated
generated: '2026-09-26'
- target: $.paths['/activities/emails'].get
update:
x-apievangelist-phrasing:
intent: Retrieve stored emails for accounts and contacts
effect: read
questions:
- Which emails from our external mail system are stored against a sales account in OPERA?
- Can I fetch emails linked to a particular contact with a simple GET?
instructions:
- text: Get stored emails for account {accountIdId}.
slots:
accountIdId: query.accountIdId
- text: List emails filed against contact {contactIdId}.
slots:
contactIdId: query.contactIdId
method: generated
generated: '2026-09-26'
- target: $.paths['/activities/emails/searches'].post
update:
x-apievangelist-phrasing:
intent: Search stored emails by posting search criteria
effect: read
questions:
- Is there a POST search for stored emails when my criteria are too long for a query string?
- Can I submit an email search in a request body and page through results?
instructions:
- text: Run an email search in the request body for account {accountIdId}.
slots:
accountIdId: requestBody.accountIdId
- text: Search stored emails via POST for contact {contactIdId}, {limit} at a time.
slots:
contactIdId: requestBody.contactIdId
limit: requestBody.limit
method: generated
generated: '2026-09-26'
- target: $.paths['/activities/{activityId}'].get
update:
x-apievangelist-phrasing:
intent: Get an activity by ID without naming a hotel
effect: read
questions:
- Can I look up an activity by its OPERA ID when I don't know which hotel it belongs to?
- What does a single activity record contain if I fetch it by ID alone?
instructions:
- text: Get activity {activityId} without specifying a hotel.
slots:
activityId: path.activityId
- text: Fetch activity {activityId} by its OPERA ID only.
slots:
activityId: path.activityId
method: generated
generated: '2026-09-26'
- target: $.paths['/activities/{activityId}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an activity by ID without naming a hotel
effect: destructive
questions:
- Can I mark an activity deleted using only its ID, no hotel code?
- What's needed to delete an activity when the hotel isn't known?
instructions:
- text: Delete activity {activityId} without a hotel ID.
slots:
activityId: path.activityId
- text: Mark activity {activityId} as deleted using its OPERA ID alone.
slots:
activityId: path.activityId
method: generated
generated: '2026-09-26'
- target: $.paths['/activities/{activityId}/attachments/{attachmentId}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an activity attachment without a hotel ID
effect: destructive
questions:
- Can I remove a file attached to an activity without giving the hotel?
- What IDs do I need to delete an activity attachment by ID alone?
instructions:
- text: Delete attachment {attachmentId} from activity {activityId}, no hotel needed.
slots:
attachmentId: path.attachmentId
activityId: path.activityId
- text: Remove file {attachmentId} on activity {activityId} using IDs only.
slots:
attachmentId: path.attachmentId
activityId: path.activityId
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/activities'].get
update:
x-apievangelist-phrasing:
intent: List activities for one hotel
effect: read
questions:
- What activities are on the books for a single property?
- Can I see only incomplete activities of a certain type at my hotel?
instructions:
- text: List activities at hotel {hotelId}.
slots:
hotelId: path.hotelId
- text: Show activities of type {activityType} at {hotelId} between {startDate} and {endDate}.
slots:
activityType: query.activityType
hotelId: path.hotelId
startDate: query.startDate
endDate: query.endDate
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/activities'].post
update:
x-apievangelist-phrasing:
intent: Create a new activity at a hotel
effect: write
questions:
- How do I log a sales appointment or to-do for a hotel in OPERA?
- Which activity types, like appointments or TODOs, can I create for a property?
instructions:
- text: Create a new activity at hotel {hotelId}.
slots:
hotelId: path.hotelId
- text: Add activity {activitiesInformation} to hotel {hotelId}.
slots:
activitiesInformation: requestBody.activitiesInformation
hotelId: path.hotelId
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/activities/statistics'].get
update:
x-apievangelist-phrasing:
intent: Get activity statistics for a hotel
effect: read
questions:
- How many activities has each salesperson logged?
- Can I get activity counts by type starting from a report date?
instructions:
- text: Get activity statistics for hotel {hotelId} from {reportStartDate}.
slots:
hotelId: path.hotelId
reportStartDate: query.reportStartDate
- text: Show activity stats at {hotelId} for owners {ownerCodeList}.
slots:
hotelId: path.hotelId
ownerCodeList: query.ownerCodeList
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/activities/{activityId}'].get
update:
x-apievangelist-phrasing:
intent: Get one activity at a specific hotel
effect: read
questions:
- What are the details of a specific activity at my hotel?
- Can I read an activity by ID scoped to a given property?
instructions:
- text: Get activity {activityId} at hotel {hotelId}.
slots:
activityId: path.activityId
hotelId: path.hotelId
- text: Show the details of hotel {hotelId}'s activity {activityId}.
slots:
hotelId: path.hotelId
activityId: path.activityId
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/activities/{activityId}'].put
update:
x-apievangelist-phrasing:
intent: Update an activity at a hotel
effect: write
questions:
- How do I change the date or notes on an existing activity?
- Can updating an activity also change its linked activities?
instructions:
- text: Update activity {activityId} at hotel {hotelId}.
slots:
activityId: path.activityId
hotelId: path.hotelId
- text: Change activity {activityId}'s details to {activitiesInformation}.
slots:
activityId: path.activityId
activitiesInformation: requestBody.activitiesInformation
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/activities/{activityId}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an activity at a specific hotel
effect: destructive
questions:
- How do I delete an activity from a particular hotel?
- Is a deleted activity at a property only marked deleted rather than purged?
instructions:
- text: Delete activity {activityId} at hotel {hotelId}.
slots:
activityId: path.activityId
hotelId: path.hotelId
- text: Mark hotel {hotelId}'s activity {activityId} as deleted.
slots:
hotelId: path.hotelId
activityId: path.activityId
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/activities/{activityId}/activityCompletion'].post
update:
x-apievangelist-phrasing:
intent: Mark one activity as completed
effect: write
questions:
- How do I mark a single appointment as done?
- Can I complete just one activity at a hotel by its ID?
instructions:
- text: Complete activity {activityId} at hotel {hotelId}.
slots:
activityId: path.activityId
hotelId: path.hotelId
- text: Mark activity {activityId} as finished.
slots:
activityId: path.activityId
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/activities/{activityId}/attachments'].get
update:
x-apievangelist-phrasing:
intent: List attachments on an activity
effect: read
questions:
- What files are attached to this activity?
- Can I find an activity attachment by its file name?
instructions:
- text: List attachments on activity {activityId} at hotel {hotelId}.
slots:
activityId: path.activityId
hotelId: path.hotelId
- text: Find the attachment named {attachedFileName} on activity {activityId}.
slots:
attachedFileName: query.attachedFileName
activityId: path.activityId
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/activities/{activityId}/attachments/{attachmentId}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an attachment from an activity at a hotel
effect: destructive
questions:
- How do I remove a wrong file from an activity at my hotel?
- Can I delete an activity attachment scoped to a property?
instructions:
- text: Delete attachment {attachmentId} from activity {activityId} at hotel {hotelId}.
slots:
attachmentId: path.attachmentId
activityId: path.activityId
hotelId: path.hotelId
- text: Remove file {attachmentId} from hotel {hotelId}'s activity {activityId}.
slots:
attachmentId: path.attachmentId
hotelId: path.hotelId
activityId: path.activityId
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/activities/{activityId}/linkedActivities'].post
update:
x-apievangelist-phrasing:
intent: Invite other owners to an activity
effect: write
questions:
- How do I invite a colleague to an appointment I own?
- Can one activity be shared with multiple owners?
instructions:
- text: Invite additional owners to activity {activityId} at hotel {hotelId}.
slots:
activityId: path.activityId
hotelId: path.hotelId
- text: Create linked activities {linkedActivityDetails} for activity {activityId}.
slots:
linkedActivityDetails: requestBody.linkedActivityDetails
activityId: path.activityId
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/activityLog'].get
update:
x-apievangelist-phrasing:
intent: View the change log for activities
effect: read
questions:
- Who changed this activity and when?
- Can I see the activity change history for a date range or by user?
instructions:
- text: Show the activity change log at hotel {hotelId} from {fromDate} to {toDate}.
slots:
hotelId: path.hotelId
fromDate: query.fromDate
toDate: query.toDate
- text: Get log entries for activity type {activityType} changed by user {userByIdUserIds}.
slots:
activityType: query.activityType
userByIdUserIds: query.userByIdUserIds
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/recentlyAccessedActivities'].get
update:
x-apievangelist-phrasing:
intent: List recently opened activities at a hotel
effect: read
questions:
- Which activities did I open recently at this property?
- Can I get a quick list of recently viewed activities for one hotel?
instructions:
- text: Show recently accessed activities at hotel {hotelId}.
slots:
hotelId: path.hotelId
- text: List the activities I recently opened for {hotelId}.
slots:
hotelId: path.hotelId
method: generated
generated: '2026-09-26'
- target: $.paths['/recentlyAccessedActivities'].get
update:
x-apievangelist-phrasing:
intent: List recently opened activities across hotels
effect: read
questions:
- What activities have I looked at recently, regardless of hotel?
- Is there a recent-activities list that doesn't need a hotel ID?
instructions:
- text: Show my recently accessed activities across all hotels.
- text: List recently viewed activities without a hotel path, logged in at {hotelid}.
slots:
hotelid: header.x-hotelid
method: generated
generated: '2026-09-26'
- target: $.paths['/services/activity/status'].get
update:
x-apievangelist-phrasing:
intent: Check the activity service health
effect: read
questions:
- Is the OPERA activity service currently up?
- How can I health-check the activity API?
instructions:
- text: Ping the activity service.
- text: Check activity API health for hotel {hotelid}.
slots:
hotelid: header.x-hotelid
method: generated
generated: '2026-09-26'