naftiko: 1.0.0-alpha2 info: label: Discourse API Documentation — Discourse Calendar - Events description: 'Discourse API Documentation — Discourse Calendar - Events. 2 operations. Lead operation: Export calendar events in iCalendar format. Self-contained Naftiko capability covering one Discourse business surface.' tags: - Discourse - Discourse Calendar - Events created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: DISCOURSE_API_KEY: DISCOURSE_API_KEY capability: consumes: - type: http namespace: discourse-discourse-calendar-events baseUri: https://{defaultHost} description: Discourse API Documentation — Discourse Calendar - Events business capability. Self-contained, no shared references. resources: - name: discourse-post-event-events.ics path: /discourse-post-event/events.ics operations: - name: exporteventsics method: GET description: Export calendar events in iCalendar format outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: category_id in: query type: integer description: Filter events by category ID - name: include_subcategories in: query type: string description: Include events from subcategories when filtering by category - name: attending_user in: query type: string description: Filter to events where the specified user (username) has RSVP'd - name: before in: query type: string description: Return events starting before this date/time (ISO 8601 format) - name: after in: query type: string description: Return events starting after this date/time (ISO 8601 format) - name: order in: query type: string description: 'Sort order for events by start date (default: asc)' - name: limit in: query type: integer description: 'Maximum number of events to return (default: 200)' - name: discourse-post-event-events.json path: /discourse-post-event/events.json operations: - name: listevents method: GET description: List calendar events outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: include_details in: query type: string description: Include detailed event information (creator, invitees, stats, - name: category_id in: query type: integer description: Filter events by category ID - name: include_subcategories in: query type: string description: Include events from subcategories when filtering by category - name: post_id in: query type: integer description: Filter to events associated with a specific post ID - name: attending_user in: query type: string description: Filter to events where the specified user (username) has RSVP'd - name: before in: query type: string description: Return events starting before this date/time (ISO 8601 format) - name: after in: query type: string description: Return events starting after this date/time (ISO 8601 format) - name: order in: query type: string description: 'Sort order for events by start date (default: asc)' - name: limit in: query type: integer description: 'Maximum number of events to return (default: 200)' exposes: - type: rest namespace: discourse-discourse-calendar-events-rest port: 8080 description: REST adapter for Discourse API Documentation — Discourse Calendar - Events. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/discourse-post-event/events-ics name: discourse-post-event-events-ics description: REST surface for discourse-post-event-events.ics. operations: - method: GET name: exporteventsics description: Export calendar events in iCalendar format call: discourse-discourse-calendar-events.exporteventsics with: category_id: rest.category_id include_subcategories: rest.include_subcategories attending_user: rest.attending_user before: rest.before after: rest.after order: rest.order limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/discourse-post-event/events-json name: discourse-post-event-events-json description: REST surface for discourse-post-event-events.json. operations: - method: GET name: listevents description: List calendar events call: discourse-discourse-calendar-events.listevents with: include_details: rest.include_details category_id: rest.category_id include_subcategories: rest.include_subcategories post_id: rest.post_id attending_user: rest.attending_user before: rest.before after: rest.after order: rest.order limit: rest.limit outputParameters: - type: object mapping: $. - type: mcp namespace: discourse-discourse-calendar-events-mcp port: 9090 transport: http description: MCP adapter for Discourse API Documentation — Discourse Calendar - Events. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: export-calendar-events-icalendar-format description: Export calendar events in iCalendar format hints: readOnly: true destructive: false idempotent: true call: discourse-discourse-calendar-events.exporteventsics with: category_id: tools.category_id include_subcategories: tools.include_subcategories attending_user: tools.attending_user before: tools.before after: tools.after order: tools.order limit: tools.limit outputParameters: - type: object mapping: $. - name: list-calendar-events description: List calendar events hints: readOnly: true destructive: false idempotent: true call: discourse-discourse-calendar-events.listevents with: include_details: tools.include_details category_id: tools.category_id include_subcategories: tools.include_subcategories post_id: tools.post_id attending_user: tools.attending_user before: tools.before after: tools.after order: tools.order limit: tools.limit outputParameters: - type: object mapping: $.