generated: '2026-07-15' method: generated source: openapi/rubygems-activity-api-openapi.yml, openapi/rubygems-api-v2-openapi.yml, openapi/rubygems-downloads-api-openapi.yml, openapi/rubygems-gems-api-openapi.yml, openapi/rubygems-search-api-openapi.yml, openapi/rubygems-webhooks-api-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: 28 by_action_class: connected: 19 acting: 9 by_consequence: read: 19 write: 9 human_in_the_loop_required: 0 operations: - path: /activity/latest.json method: get operationId: getLatestGems x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /activity/just_updated.json method: get operationId: getJustUpdatedGems x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /rubygems/{gemName}/versions/{versionNumber}.json method: get operationId: getGemVersionDetails x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /downloads.json method: get operationId: getTotalDownloads x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /downloads/{gemNameVersion}.json method: get operationId: getVersionDownloads x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /gems/{gemName}.json method: get operationId: getGemInfo x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /gems.json method: get operationId: listOwnedGems x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /gems method: post operationId: pushGem 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: /gems/yank method: delete operationId: yankGem 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: /gems/{gemName}/reverse_dependencies.json method: get operationId: getReverseDependencies x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /versions/{gemName}.json method: get operationId: getGemVersions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /versions/{gemName}/latest.json method: get operationId: getLatestGemVersion x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /timeframe_versions.json method: get operationId: getTimeframeVersions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /owners/{userHandle}/gems.json method: get operationId: listGemsByOwner x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /gems/{gemName}/owners.json method: get operationId: listGemOwners x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /gems/{gemName}/owners method: post operationId: addGemOwner 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: /gems/{gemName}/owners method: delete operationId: removeGemOwner 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: /gems/{gemName}/owners method: patch operationId: updateGemOwner 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: /profiles/{userHandle}.json method: get operationId: getUserProfile x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /profile/me.json method: get operationId: getMyProfile x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /dependencies method: get operationId: getDependencies x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api_key.json method: get operationId: getApiKey x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /oidc/trusted_publisher/exchange_token method: post operationId: exchangeOidcToken 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: /search.json method: get operationId: searchGems x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /web_hooks.json method: get operationId: listWebhooks x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /web_hooks method: post operationId: createWebhook 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: /web_hooks/remove method: delete operationId: removeWebhook 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: /web_hooks/fire method: post operationId: fireWebhook 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