Files
riposte-marketplace/integrations/google-calendar/manifest.yaml
T
Guillaume BOURGEOIS dbb740f476 feat(google-calendar): new Google Calendar integration
Calendar API v3 ACL management: create access control rules (grant a
role to a user/group/domain/public) and list a calendar's ACL rules.
Service-account auth with domain-wide delegation (JWT RS256), runs on
a remote engine (requires PyJWT + cryptography).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 23:17:50 +02:00

63 lines
3.3 KiB
YAML

id: google_calendar
name: Google Calendar
version: 1.0.0
description: "Google Calendar (Calendar API v3) — manage calendar access control lists: grant a role on a calendar to a user, group, domain or the public, and list the existing ACL rules. Service-account authentication with domain-wide delegation. Runs on a remote engine. Requires the Python 'PyJWT' and 'cryptography' libraries on the engine host (pip install pyjwt cryptography)."
changelog: "1.0.0 — Initial release: ACL rule creation and listing on user calendars."
category: productivity
# Per-instance configuration. Create a Google Cloud service account with
# domain-wide delegation, authorize the https://www.googleapis.com/auth/calendar
# scope in the Workspace admin console, and paste the service account JSON key.
# The scripts sign a JWT (RS256) with the key and exchange it for an access
# token that impersonates user_id (or a per-command user override).
config_schema:
properties:
service_account_json:
type: string
description: "Service account key JSON (full file contents) with domain-wide delegation"
x-soar-sensitive: true
user_id:
type: string
description: "Default user to impersonate (primary email address)"
required:
- service_account_json
- user_id
commands:
- id: acl_add
name: google-calendar-acl-add
description: "Create an access control rule on a calendar (grant a role to a user, group, domain or the public)."
inputs_schema:
properties:
calendar_id: { type: string, description: "Calendar identifier — use 'primary' for the impersonated user's main calendar" }
role: { type: string, description: "Role: none, freeBusyReader, reader, writer or owner" }
scope_type: { type: string, description: "Grantee type: default (public), user, group or domain" }
scope_value: { type: string, description: "Email of the user/group or domain name (omit for scope_type=default)" }
send_notifications: { type: boolean, description: "Send notifications about the sharing change (default true)" }
user_id: { type: string, description: "Override the impersonated user" }
required: [calendar_id, role, scope_type]
outputs_schema: { properties: {} }
- id: acl_list
name: google-calendar-acl-list
description: "List the access control rules of a calendar."
risk: read
inputs_schema:
properties:
calendar_id: { type: string, description: "Calendar identifier — use 'primary' for the impersonated user's main calendar" }
max_results: { type: number, description: "Maximum entries per page (default 100, max 250)" }
page_token: { type: string, description: "Token of the results page to return" }
show_deleted: { type: boolean, description: "Include deleted ACL rules (role 'none')" }
sync_token: { type: string, description: "nextSyncToken from a previous listing — returns only entries changed since" }
user_id: { type: string, description: "Override the impersonated user" }
required: [calendar_id]
outputs_schema: { properties: {} }
- id: test_connection
name: google-calendar-test-connection
description: "Verify the service account key and delegation (used by the Test button)."
risk: read
inputs_schema:
properties: {}
required: []
outputs_schema: { properties: {} }