generated: '2026-07-15' method: generated source: openapi/grubhub-deliveries-openapi.yml, openapi/grubhub-menu-openapi.yml, openapi/grubhub-merchant-data-openapi.yml, openapi/grubhub-merchant-schedules-openapi.yml, openapi/grubhub-onboarding-openapi.yml, openapi/grubhub-orders-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: 35 by_action_class: connected: 17 acting: 18 by_consequence: read: 17 physical: 3 write: 12 safety-critical: 3 human_in_the_loop_required: 3 operations: - path: /pos/v1/merchant/{merchant_long_id}/orders/{order_uuid}/delivery method: get operationId: getDeliveryStatus x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchant/{merchant_long_id}/orders/{order_uuid}/delivery/proxy-phone method: post operationId: createProxyCourierPhone x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /pos/v1/menu/ingestion method: post operationId: ingestMenu 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: /pos/v1/menu/ingestion/jobs/{job_id} method: get operationId: getMenuIngestionStatus x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchant/{merchant_id}/ingestion/menu method: get operationId: getMerchantMenu x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchant/{merchant_id}/menu/schedules/overrides/external method: put operationId: updateMenuScheduleOverrides x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /pos/v1/merchant/{merchant_id}/menu/schedules/overrides/{job_id}/status method: get operationId: getMenuScheduleOverrideStatus x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchants method: get operationId: listMerchants x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchant/{merchant_id} method: get operationId: getMerchant x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchant/{merchant_id}/fulfillment method: get operationId: getMerchantFulfillment x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchants/status method: put operationId: updateMerchantStatus 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: /pos/v1/merchants/status/{batch_id} method: get operationId: getMerchantStatusBatch x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchants/properties method: put operationId: updateMerchantProperties 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: /pos/v1/merchants/properties/{batch_id} method: get operationId: getMerchantPropertiesBatch x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchant/{merchant_id}/schedules/delivery method: get operationId: getDeliverySchedule x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchant/{merchant_id}/schedules/delivery method: put operationId: updateDeliverySchedule 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: /pos/v1/merchant/{merchant_id}/schedules/pickup method: get operationId: getPickupSchedule x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchant/{merchant_id}/schedules/pickup method: put operationId: updatePickupSchedule 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: /pos/v1/merchant/{merchant_id}/schedules/catering method: get operationId: getCateringSchedule x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchant/{merchant_id}/schedules/catering method: put operationId: updateCateringSchedule 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: /pos/v1/merchant/{merchant_id}/schedules/overrides method: post operationId: createScheduleOverride x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /pos/v1/merchant/{merchant_id}/schedules/overrides method: delete operationId: cancelScheduleOverride x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /pos/v1/onboarding/referral method: post operationId: createMerchantReferral 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: /pos/v1/onboarding/activate method: post operationId: activateMerchant 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: /pos/v1/onboarding/deactivate method: post operationId: deactivateMerchant 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: /pos/v1/onboarding/deactivate/partner method: post operationId: deactivateMerchantPartner 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: /pos/v1/onboarding/associate method: post operationId: associateMerchants 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: /pos/v1/onboarding/eligibility/{merchant_id} method: get operationId: getMerchantEligibility x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/onboarding/issue method: post operationId: reportOnboardingIssue 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: /pos/v1/merchant/{merchant_long_id}/orders/{order_uuid} method: get operationId: getOrder x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchant/{merchant_long_id}/orders method: get operationId: listMerchantOrders x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/orders/poll method: get operationId: pollOrders x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pos/v1/merchant/{merchant_long_id}/orders/{order_uuid}/confirm method: post operationId: confirmOrder x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /pos/v1/merchant/{merchant_long_id}/orders/{order_uuid}/status method: put operationId: updateOrderStatus x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /pos/v1/merchant/{merchant_long_id}/orders/{order_uuid}/changerequests method: get operationId: getOrderChangeRequests x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none