generated: '2026-07-15' method: generated source: openapi/petexec-openapi.yml description: Recommended x-agentic-access execution contracts, classified heuristically from the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind audience per deployment. See research/curity/agentic-governance/. summary: operations: 51 by_action_class: acting: 8 connected: 43 by_consequence: write: 8 read: 43 human_in_the_loop_required: 0 operations: - path: /token method: post operationId: getAccessToken x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /owner method: get operationId: listOwners x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /owner/{owner_id} method: get operationId: getOwner x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /search/owners/{search_criteria}/page/{page_number}/data/{data_per_page} method: get operationId: searchOwners x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pet/{pet_id} method: get operationId: getPet x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pet/{pet_id} method: delete operationId: deletePet x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /pet-type/ method: get operationId: listPetTypes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /breed/pet-type/{pet_type_id} method: get operationId: listBreedsForPetType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /search/pets/{search_criteria}/page/{page_number}/data/{data_per_page} method: get operationId: searchPets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /vet/ method: get operationId: listVets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /boarding/{boarding_id} method: get operationId: getBoarding x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /boarding/{boarding_id} method: delete operationId: deleteFutureBoarding x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /boarding/packages/owner/{owner_id} method: get operationId: getOwnerBoardingPackages x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /boarding/services method: get operationId: listBoardingServices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /daycare/{daycare_id} method: get operationId: getDaycare x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /daycare/{daycare_id} method: delete operationId: deleteFutureDaycare x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /daycare/services/ method: get operationId: listDaycareServices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /grooming/{grooming_id} method: get operationId: getGrooming x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /grooming/{grooming_id} method: delete operationId: deleteFutureGrooming x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /grooming/groomers method: get operationId: listGroomers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /grooming/services/ method: get operationId: listGroomingServices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /scheduled-service/{scheduled_service_id} method: delete operationId: deleteFutureScheduledService x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /scheduled-service/service-types/ method: get operationId: listScheduledServiceTypes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /scheduled-service/services/ method: get operationId: listScheduledServices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /scheduled-service/services/{service_type_id} method: get operationId: listServicesByServiceType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /calendar/boarding/start/{start_date}/end/{end_date} method: get operationId: getCompanyBoardingsScheduled x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /calendar/daycare/start/{start_date}/end/{end_date} method: get operationId: getCompanyDaycaresScheduled x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /calendar/grooming/start/{start_date}/end/{end_date} method: get operationId: getCompanyGroomingsScheduled x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /calendar/scheduled-service/start/{start_date}/end/{end_date} method: get operationId: getCompanyScheduledServicesScheduled x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /calendar/owner/{owner_id}/boarding/start/{start_date}/end/{end_date} method: get operationId: getOwnerBoardingsScheduled x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /calendar/owner/{owner_id}/daycare/start/{start_date}/end/{end_date} method: get operationId: getOwnerDaycaresScheduled x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /calendar/owner/{owner_id}/grooming/start/{start_date}/end/{end_date} method: get operationId: getOwnerGroomingsScheduled x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /calendar/owner/{owner_id}/scheduled-service/start/{start_date}/end/{end_date} method: get operationId: getOwnerScheduledServicesScheduled x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /shot/{shot_id} method: get operationId: getShot x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /shot/{shot_id} method: delete operationId: deleteShot x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /shot/pet-type/{pet_id} method: get operationId: getShotsForPetType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /user-card/owner/{owner_id} method: get operationId: getOwnerCreditCards x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /user-card/{card_id}/owner/{owner_id} method: get operationId: getOwnerCreditCard x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /userCard/{card_id} method: delete operationId: deleteCreditCard x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /purchase-history/owner/{owner_id} method: get operationId: getPurchaseHistory x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /report/billing-report/{start_date}/{end_date}/{pay_type}/{owner_portal} method: get operationId: getBillingReport x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /report/statistics-report/{start_date}/{end_date}/{taxable_only} method: get operationId: getStatisticsReport x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /report/statistics-report/{start_date}/{end_date}/breakdown/{pay_type} method: get operationId: getStatisticsReportByPayType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /report/statistics-report/{start_date}/{end_date}/breakdown/service/{service_id} method: get operationId: getStatisticsReportByServiceType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /company/locations method: get operationId: getCompanyLocations x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /company/employees/ method: get operationId: getCompanyEmployees x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /company/how-found/ method: get operationId: getAllHowFound x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /preference method: get operationId: getAllCompanyPreferences x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /preference/{preference_name} method: get operationId: getCompanyPreferenceValue x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /profile/ method: get operationId: getAuthenticatedUserProfile x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /menu method: get operationId: getMenu x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none