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.
View Overlay File View on GitHub Overlay Specification

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

Raw ↑
# 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'