{
  "openapi": "3.0.3",
  "info": {
    "title": "Project NEXUS v2 API",
    "version": "2.0.0",
    "description": "REST API for the Project NEXUS v2 member, admin and super-admin surfaces. This document does NOT cover the partner-facing federation protocols — the Komunitin, Credit Commons and Native V1 route families, the Partner API under /api/partner/v1, and the cross-node aggregates, inbound hour-transfer and external webhook receiver endpoints are all absent from it. Those surfaces are additionally switched off by default and answer 503 until an operator enables them. See docs/FEDERATION_API_MANUAL.md, which is the reference for building a federated integration."
  },
  "servers": [
    {
      "url": "https://api.project-nexus.ie",
      "description": "Production Server"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Sanctum or legacy JWT"
      },
      "federationBearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Federation API key",
        "description": "Tenant-bound federation partner API key with the required ingest permission."
      }
    },
    "schemas": {
      "MarketplaceOrderCreateInput": {
        "type": "object",
        "required": [
          "listing_id",
          "idempotency_key"
        ],
        "properties": {
          "listing_id": {
            "type": "integer",
            "minimum": 1
          },
          "offer_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Accepted offer belonging to the buyer.",
            "nullable": true
          },
          "quantity": {
            "type": "integer",
            "minimum": 1,
            "default": 1
          },
          "shipping_option_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Seller-owned option; its current server price and currency are authoritative.",
            "nullable": true
          },
          "shipping_method": {
            "type": "string",
            "enum": [
              "pickup",
              "community_delivery"
            ],
            "description": "Used only for zero-cost pickup or community delivery.",
            "nullable": true
          },
          "pickup_slot_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Optional seller-owned pickup slot reserved atomically with order creation; valid only for pickup fulfilment.",
            "nullable": true
          },
          "delivery_address": {
            "type": "object",
            "additionalProperties": true,
            "nullable": true
          },
          "delivery_notes": {
            "type": "string",
            "maxLength": 500,
            "nullable": true
          },
          "coupon_code": {
            "type": "string",
            "maxLength": 64,
            "nullable": true
          },
          "idempotency_key": {
            "type": "string",
            "minLength": 16,
            "maxLength": 100
          },
          "loyalty_redemption_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Pending redemption validated and applied atomically by the server; cannot be combined with a coupon.",
            "nullable": true
          },
          "payment_method": {
            "type": "string",
            "enum": [
              "cash",
              "time_credits",
              "free"
            ],
            "default": "cash",
            "nullable": true
          }
        }
      },
      "MarketplacePerson": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "avatar_url": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "MarketplaceListingSummary": {
        "type": "object",
        "required": [
          "id",
          "title"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "price": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "price_currency": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "delivery_method": {
            "type": "string",
            "nullable": true
          },
          "image": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "nullable": true
              },
              "thumbnail_url": {
                "type": "string",
                "nullable": true
              }
            },
            "nullable": true
          }
        }
      },
      "MarketplaceOrder": {
        "type": "object",
        "required": [
          "id",
          "order_number",
          "status",
          "quantity",
          "unit_price",
          "total_price",
          "currency",
          "payment_method",
          "requires_payment",
          "listing"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "order_number": {
            "type": "string",
            "pattern": "^MKT-[0-9A-HJKMNP-TV-Z]{26}$"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending_payment",
              "paid",
              "shipped",
              "delivered",
              "completed",
              "cancelled",
              "refunded",
              "disputed"
            ]
          },
          "quantity": {
            "type": "integer",
            "minimum": 1
          },
          "unit_price": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "total_price": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "currency": {
            "type": "string"
          },
          "time_credits_used": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "nullable": true
          },
          "wallet_transaction_id": {
            "type": "integer",
            "nullable": true
          },
          "wallet_refund_transaction_id": {
            "type": "integer",
            "description": "Present after a time-credit refund; null for cash, free, and historical orders.",
            "nullable": true
          },
          "loyalty_redemption_id": {
            "type": "integer",
            "nullable": true
          },
          "payment_method": {
            "type": "string",
            "enum": [
              "cash",
              "time_credits",
              "free"
            ]
          },
          "requires_payment": {
            "type": "boolean"
          },
          "payment_expires_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "shipping_method": {
            "type": "string",
            "nullable": true
          },
          "shipping_option_id": {
            "type": "integer",
            "nullable": true
          },
          "shipping_cost": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "nullable": true
          },
          "tracking_number": {
            "type": "string",
            "nullable": true
          },
          "tracking_url": {
            "type": "string",
            "nullable": true
          },
          "delivery_address": {
            "type": "object",
            "additionalProperties": true,
            "nullable": true
          },
          "delivery_notes": {
            "type": "string",
            "nullable": true
          },
          "buyer_confirmed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "seller_confirmed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "auto_complete_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cancelled_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cancellation_reason": {
            "type": "string",
            "nullable": true
          },
          "escrow_released_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "listing": {
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/MarketplaceListingSummary"
              }
            ],
            "nullable": true,
            "description": "Null when a historical order outlives its deleted listing."
          },
          "buyer": {
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/MarketplacePerson"
              }
            ],
            "nullable": true
          },
          "seller": {
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/MarketplacePerson"
              }
            ],
            "nullable": true
          },
          "ratings": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "dispute": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer"
              },
              "reason": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            },
            "nullable": true
          }
        }
      },
      "MarketplaceReport": {
        "type": "object",
        "required": [
          "id",
          "marketplace_listing_id",
          "status",
          "can_appeal",
          "viewer_role",
          "listing"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "marketplace_listing_id": {
            "type": "integer"
          },
          "reason": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "description": "Hidden from the affected seller.",
            "nullable": true
          },
          "evidence_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "description": "Hidden from the affected seller.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "received",
              "acknowledged",
              "under_review",
              "action_taken",
              "no_action",
              "appealed",
              "appeal_resolved"
            ]
          },
          "acknowledged_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "resolved_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "resolution_reason": {
            "type": "string",
            "nullable": true
          },
          "action_taken": {
            "type": "string",
            "enum": [
              "none",
              "warning",
              "listing_removed",
              "seller_suspended"
            ],
            "nullable": true
          },
          "appeal_text": {
            "type": "string",
            "description": "Visible only to the user who lodged the appeal.",
            "nullable": true
          },
          "appeal_resolved_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "can_appeal": {
            "type": "boolean"
          },
          "viewer_role": {
            "type": "string",
            "enum": [
              "reporter",
              "seller"
            ]
          },
          "listing": {
            "type": "object",
            "required": [
              "id",
              "title",
              "status"
            ],
            "properties": {
              "id": {
                "type": "integer"
              },
              "title": {
                "type": "string"
              },
              "status": {
                "type": "string"
              }
            },
            "nullable": true,
            "description": "Null when the referenced historical listing no longer exists."
          }
        }
      },
      "MarketplaceDisputeOrder": {
        "type": "object",
        "required": [
          "id",
          "order_number",
          "total_price",
          "time_credits_used",
          "currency",
          "status",
          "listing"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "order_number": {
            "type": "string"
          },
          "total_price": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "time_credits_used": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "listing": {
            "type": "object",
            "required": [
              "id",
              "title"
            ],
            "properties": {
              "id": {
                "type": "integer"
              },
              "title": {
                "type": "string"
              }
            },
            "nullable": true,
            "description": "Null when the order references a deleted historical listing."
          },
          "buyer": {
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/MarketplacePerson"
              }
            ],
            "nullable": true
          },
          "seller": {
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/MarketplacePerson"
              }
            ],
            "nullable": true
          }
        }
      },
      "MarketplaceDispute": {
        "type": "object",
        "required": [
          "id",
          "order_id",
          "reason",
          "description",
          "status",
          "order"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "order_id": {
            "type": "integer"
          },
          "reason": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "evidence_urls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "under_review",
              "resolved_buyer",
              "resolved_seller",
              "escalated",
              "closed"
            ]
          },
          "prior_order_status": {
            "type": "string",
            "nullable": true
          },
          "resolution_notes": {
            "type": "string",
            "nullable": true
          },
          "refund_amount": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "description": "Null until a buyer refund is recorded, including on historical disputes.",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "resolved_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "opened_by": {
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/MarketplacePerson"
              }
            ],
            "nullable": true
          },
          "order": {
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/MarketplaceDisputeOrder"
              }
            ],
            "nullable": true,
            "description": "Null only for a historical dispute whose order is unavailable."
          }
        }
      },
      "MarketplaceOrderResponse": {
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MarketplaceOrder"
          },
          "meta": {
            "type": "object",
            "required": [
              "base_url"
            ],
            "properties": {
              "base_url": {
                "type": "string"
              }
            }
          }
        }
      },
      "MarketplaceReportResponse": {
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MarketplaceReport"
          },
          "meta": {
            "type": "object",
            "required": [
              "base_url"
            ],
            "properties": {
              "base_url": {
                "type": "string"
              }
            }
          }
        }
      },
      "MarketplaceReportCollectionResponse": {
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MarketplaceReport"
            }
          },
          "meta": {
            "type": "object",
            "required": [
              "base_url"
            ],
            "properties": {
              "base_url": {
                "type": "string"
              }
            }
          }
        }
      },
      "MarketplaceDisputeCollectionResponse": {
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MarketplaceDispute"
            }
          },
          "meta": {
            "type": "object",
            "required": [
              "base_url",
              "current_page",
              "per_page",
              "total",
              "total_pages",
              "has_more"
            ],
            "properties": {
              "base_url": {
                "type": "string"
              },
              "current_page": {
                "type": "integer",
                "minimum": 1
              },
              "per_page": {
                "type": "integer",
                "minimum": 1
              },
              "total": {
                "type": "integer",
                "minimum": 0
              },
              "total_pages": {
                "type": "integer",
                "minimum": 0
              },
              "has_more": {
                "type": "boolean"
              }
            }
          }
        }
      },
      "MarketplaceActionResponse": {
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "object",
            "required": [
              "message",
              "status"
            ],
            "properties": {
              "message": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "action_taken": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "meta": {
            "type": "object",
            "required": [
              "base_url"
            ],
            "properties": {
              "base_url": {
                "type": "string"
              }
            }
          }
        }
      },
      "EventRecurrenceCapabilities": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "contract_version",
          "engine",
          "structured_input",
          "supported_frequencies",
          "max_occurrences",
          "supported_end_types",
          "supports_rolling_never",
          "supports_effective_revisions",
          "supports_definition_blueprints",
          "schema_ready",
          "rollout_state"
        ],
        "properties": {
          "contract_version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "engine": {
            "type": "string",
            "enum": [
              "legacy",
              "v2"
            ]
          },
          "structured_input": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "supported_frequencies": {
            "type": "array",
            "minItems": 4,
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "daily",
                "weekly",
                "monthly",
                "yearly"
              ]
            }
          },
          "max_occurrences": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5000
          },
          "supported_end_types": {
            "type": "array",
            "minItems": 2,
            "maxItems": 3,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "after_count",
                "on_date",
                "never"
              ]
            }
          },
          "supports_rolling_never": {
            "type": "boolean"
          },
          "supports_effective_revisions": {
            "type": "boolean"
          },
          "supports_definition_blueprints": {
            "type": "boolean"
          },
          "schema_ready": {
            "type": "boolean"
          },
          "rollout_state": {
            "type": "string",
            "enum": [
              "legacy",
              "v2_degraded",
              "v2_finite",
              "v2_rolling"
            ]
          }
        }
      },
      "EventRecurrenceCapabilitiesEnvelope": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EventRecurrenceCapabilities"
          },
          "meta": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "base_url"
            ],
            "properties": {
              "base_url": {
                "type": "string"
              }
            }
          }
        }
      },
      "EventRecurrenceProjection": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "parent_event_id",
          "root_event_id",
          "is_template",
          "recurrence_id",
          "engine",
          "engine_version",
          "frequency",
          "interval",
          "rrule",
          "occurrence_count",
          "occurrences"
        ],
        "properties": {
          "parent_event_id": {
            "type": "integer",
            "minimum": 1,
            "nullable": true
          },
          "root_event_id": {
            "type": "integer",
            "minimum": 0
          },
          "is_template": {
            "type": "boolean"
          },
          "recurrence_id": {
            "type": "string",
            "pattern": "^[0-9]{8}T[0-9]{6}Z$",
            "nullable": true,
            "description": "Stable identity exposed only for a concrete maintained V2 occurrence."
          },
          "engine": {
            "type": "string",
            "enum": [
              "sabre-vobject"
            ],
            "nullable": true
          },
          "engine_version": {
            "type": "string",
            "enum": [
              "2"
            ],
            "nullable": true
          },
          "frequency": {
            "type": "string",
            "nullable": true
          },
          "interval": {
            "type": "integer",
            "minimum": 1
          },
          "rrule": {
            "type": "string",
            "nullable": true
          },
          "occurrence_count": {
            "type": "integer",
            "minimum": 0
          },
          "occurrences": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "id",
                "start_at",
                "date"
              ],
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 0
                },
                "start_at": {
                  "type": "string",
                  "nullable": true
                },
                "date": {
                  "type": "string",
                  "nullable": true
                }
              }
            }
          }
        }
      },
      "EventCanonicalDetailEnvelope": {
        "type": "object",
        "required": [
          "data"
        ],
        "additionalProperties": true,
        "properties": {
          "data": {
            "type": "object",
            "required": [
              "contract_version",
              "series"
            ],
            "additionalProperties": true,
            "properties": {
              "contract_version": {
                "type": "integer",
                "enum": [
                  2
                ]
              },
              "series": {
                "type": "object",
                "required": [
                  "recurrence"
                ],
                "additionalProperties": true,
                "properties": {
                  "recurrence": {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/EventRecurrenceProjection"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          }
        }
      },
      "PodcastShowInput": {
        "type": "object",
        "required": [
          "title"
        ],
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200
          },
          "slug": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]+$"
          },
          "summary": {
            "type": "string",
            "nullable": true,
            "maxLength": 600
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "artwork_url": {
            "type": "string",
            "nullable": true,
            "description": "Platform-owned upload URL only"
          },
          "language": {
            "type": "string",
            "maxLength": 20
          },
          "category": {
            "type": "string",
            "nullable": true,
            "maxLength": 120
          },
          "author_name": {
            "type": "string",
            "nullable": true,
            "maxLength": 200
          },
          "owner_email": {
            "type": "string",
            "nullable": true,
            "format": "email",
            "maxLength": 320,
            "description": "Private RSS owner contact exposed only to the creator studio and administrators."
          },
          "copyright": {
            "type": "string",
            "nullable": true,
            "maxLength": 300
          },
          "funding_url": {
            "type": "string",
            "nullable": true,
            "format": "uri"
          },
          "explicit": {
            "type": "boolean",
            "default": false
          },
          "visibility": {
            "type": "string",
            "enum": [
              "public",
              "members",
              "private"
            ]
          }
        }
      },
      "PodcastArtworkUploadResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "object",
            "required": [
              "url"
            ],
            "properties": {
              "url": {
                "type": "string",
                "description": "Tenant-scoped platform upload path",
                "pattern": "^/(uploads|storage)/"
              }
            }
          }
        }
      },
      "PodcastEpisodeInput": {
        "type": "object",
        "required": [
          "title"
        ],
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200
          },
          "slug": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]+$"
          },
          "summary": {
            "type": "string",
            "nullable": true,
            "maxLength": 600
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "audio_url": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "description": "HTTPS URL (HTTP is accepted only for localhost in development/testing)"
          },
          "audio_mime": {
            "type": "string",
            "nullable": true,
            "maxLength": 120
          },
          "audio_bytes": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "duration_seconds": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "episode_number": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "season_number": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "explicit": {
            "type": "boolean",
            "default": false
          },
          "episode_type": {
            "type": "string",
            "enum": [
              "full",
              "trailer",
              "bonus"
            ],
            "default": "full"
          },
          "visibility": {
            "type": "string",
            "enum": [
              "inherit",
              "public",
              "members",
              "private"
            ]
          },
          "transcript": {
            "type": "string",
            "nullable": true
          },
          "transcript_language": {
            "type": "string",
            "nullable": true,
            "maxLength": 20
          },
          "cover_image_url": {
            "type": "string",
            "nullable": true,
            "description": "Platform-owned upload URL only"
          },
          "scheduled_for": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "chapters": {
            "type": "array",
            "maxItems": 200,
            "items": {
              "type": "object",
              "required": [
                "starts_at_seconds",
                "title"
              ],
              "properties": {
                "starts_at_seconds": {
                  "type": "integer",
                  "minimum": 0
                },
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "nullable": true,
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "PodcastChapter": {
        "type": "object",
        "required": [
          "starts_at_seconds",
          "title"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "starts_at_seconds": {
            "type": "integer",
            "minimum": 0
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "nullable": true,
            "format": "uri"
          }
        }
      },
      "PodcastEpisode": {
        "type": "object",
        "required": [
          "id",
          "show_id",
          "title",
          "slug",
          "status",
          "visibility"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "show_id": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "audio_url": {
            "type": "string",
            "nullable": true,
            "format": "uri"
          },
          "audio_mime": {
            "type": "string",
            "nullable": true
          },
          "audio_bytes": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "duration_seconds": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "episode_number": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "season_number": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "explicit": {
            "type": "boolean"
          },
          "episode_type": {
            "type": "string",
            "enum": [
              "full",
              "trailer",
              "bonus"
            ]
          },
          "visibility": {
            "type": "string",
            "enum": [
              "inherit",
              "public",
              "members",
              "private"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "moderation_status": {
            "type": "string",
            "enum": [
              "pending",
              "approved",
              "rejected",
              "flagged"
            ]
          },
          "media_processing_status": {
            "type": "string",
            "enum": [
              "pending",
              "processing",
              "complete",
              "failed"
            ]
          },
          "media_scan_status": {
            "type": "string",
            "enum": [
              "pending",
              "clean",
              "infected",
              "scan_unavailable",
              "not_required"
            ]
          },
          "transcript": {
            "type": "string",
            "nullable": true
          },
          "transcript_language": {
            "type": "string",
            "nullable": true
          },
          "cover_image_url": {
            "type": "string",
            "nullable": true
          },
          "scheduled_for": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "published_at": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "chapters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PodcastChapter"
            }
          }
        }
      },
      "PodcastShow": {
        "type": "object",
        "required": [
          "id",
          "title",
          "slug",
          "status",
          "visibility"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "artwork_url": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "author_name": {
            "type": "string",
            "nullable": true
          },
          "copyright": {
            "type": "string",
            "nullable": true
          },
          "funding_url": {
            "type": "string",
            "nullable": true,
            "format": "uri"
          },
          "explicit": {
            "type": "boolean"
          },
          "visibility": {
            "type": "string",
            "enum": [
              "public",
              "members",
              "private"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "archived"
            ]
          },
          "moderation_status": {
            "type": "string",
            "enum": [
              "pending",
              "approved",
              "rejected",
              "flagged"
            ]
          },
          "published_at": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "rss_enabled": {
            "type": "boolean"
          },
          "episodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PodcastEpisode"
            }
          }
        }
      },
      "PodcastStudioShow": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PodcastShow"
          },
          {
            "type": "object",
            "properties": {
              "owner_email": {
                "type": "string",
                "nullable": true,
                "format": "email"
              },
              "moderation_feedback": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "PodcastShowResponse": {
        "type": "object",
        "required": [
          "success",
          "data"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/PodcastShow"
          }
        }
      },
      "PodcastStudioShowResponse": {
        "type": "object",
        "required": [
          "success",
          "data"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/PodcastStudioShow"
          }
        }
      },
      "PodcastEpisodeResponse": {
        "type": "object",
        "required": [
          "success",
          "data"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/PodcastEpisode"
          }
        }
      },
      "PodcastShowCollectionResponse": {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PodcastShow"
            }
          },
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaginationMeta"
              },
              {
                "type": "object",
                "properties": {
                  "categories": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            ]
          }
        }
      },
      "PodcastStudioCollectionResponse": {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PodcastStudioShow"
            }
          },
          "meta": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "PodcastAdminIndexResponse": {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "type": "object",
            "required": [
              "shows",
              "episodes",
              "reports",
              "totals"
            ],
            "properties": {
              "shows": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PodcastStudioShow"
                }
              },
              "episodes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PodcastEpisode"
                }
              },
              "reports": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              },
              "totals": {
                "type": "object",
                "additionalProperties": {
                  "type": "integer"
                }
              }
            }
          },
          "meta": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "PodcastConfigResponse": {
        "type": "object",
        "required": [
          "success",
          "data"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "PodcastOperationResponse": {
        "type": "object",
        "required": [
          "success",
          "data"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "ApiErrorItem": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "field": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApiErrorResponse": {
        "type": "object",
        "required": [
          "errors"
        ],
        "properties": {
          "errors": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/ApiErrorItem"
            }
          }
        }
      },
      "MessageVoiceResponse": {
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "The newly created voice-message record, including its participant-authorized media URL."
          },
          "meta": {
            "type": "object",
            "required": [
              "base_url"
            ],
            "properties": {
              "base_url": {
                "type": "string",
                "format": "uri"
              }
            },
            "additionalProperties": true
          }
        }
      },
      "MessageMediaBinary": {
        "type": "string",
        "format": "binary",
        "description": "Private message media returned with its stored MIME type. The response is never publicly cacheable."
      },
      "CspViolationDetails": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "document-uri": {
            "type": "string",
            "format": "uri"
          },
          "documentURL": {
            "type": "string",
            "format": "uri"
          },
          "blocked-uri": {
            "type": "string"
          },
          "blockedURL": {
            "type": "string"
          },
          "violated-directive": {
            "type": "string",
            "maxLength": 120
          },
          "effectiveDirective": {
            "type": "string",
            "maxLength": 120
          },
          "source-file": {
            "type": "string",
            "format": "uri"
          },
          "sourceFile": {
            "type": "string",
            "format": "uri"
          },
          "line-number": {
            "type": "integer",
            "minimum": 0
          },
          "lineNumber": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "CspReportEnvelope": {
        "type": "object",
        "additionalProperties": true,
        "description": "A legacy CSP report, Reporting API report body, or raw violation object. Unknown browser fields are accepted and ignored.",
        "properties": {
          "csp-report": {
            "$ref": "#/components/schemas/CspViolationDetails"
          },
          "body": {
            "$ref": "#/components/schemas/CspViolationDetails"
          }
        }
      },
      "PaginationMeta": {
        "type": "object",
        "properties": {
          "current_page": {
            "type": "integer",
            "minimum": 1
          },
          "per_page": {
            "type": "integer",
            "minimum": 1
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "last_page": {
            "type": "integer",
            "minimum": 1
          }
        }
      }
    },
    "parameters": {
      "TenantId": {
        "name": "X-Tenant-ID",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "PodcastId": {
        "name": "id",
        "in": "path",
        "required": true,
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "PodcastShowId": {
        "name": "showId",
        "in": "path",
        "required": true,
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "PodcastEpisodeId": {
        "name": "episodeId",
        "in": "path",
        "required": true,
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "PodcastTenantId": {
        "name": "tenantId",
        "in": "path",
        "required": true,
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "PodcastShowSlug": {
        "name": "showSlug",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]+$"
        }
      },
      "PodcastShowReference": {
        "name": "showReference",
        "in": "path",
        "required": true,
        "description": "Show slug for GET; numeric show ID for PUT and DELETE.",
        "schema": {
          "type": "string",
          "pattern": "^(?:[1-9][0-9]*|[A-Za-z0-9_-]+)$"
        }
      },
      "PodcastEpisodeSlug": {
        "name": "episodeSlug",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]+$"
        }
      },
      "PodcastReportId": {
        "name": "reportId",
        "in": "path",
        "required": true,
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      }
    },
    "requestBodies": {
      "PodcastShowInput": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/PodcastShowInput"
            }
          }
        }
      },
      "PodcastEpisodeInput": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/PodcastEpisodeInput"
            }
          },
          "multipart/form-data": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/PodcastEpisodeInput"
                },
                {
                  "type": "object",
                  "properties": {
                    "audio": {
                      "type": "string",
                      "format": "binary"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "PodcastArtworkUpload": {
        "required": true,
        "content": {
          "multipart/form-data": {
            "schema": {
              "type": "object",
              "required": [
                "image"
              ],
              "properties": {
                "image": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      },
      "PodcastModerationInput": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "action"
              ],
              "properties": {
                "action": {
                  "type": "string",
                  "enum": [
                    "approve",
                    "reject",
                    "flag"
                  ]
                },
                "notes": {
                  "type": "string",
                  "nullable": true
                }
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "paths": {
    "/api/csp-report": {
      "post": {
        "summary": "Collect a browser Content Security Policy violation",
        "description": "Unauthenticated browser reporting endpoint used by the platform CSP. It accepts legacy report-uri envelopes and Reporting API batches, sanitizes logged URLs to origin and path, and returns no content. Requests declaring a body larger than 32 KiB are rejected.",
        "operationId": "SecurityReport_collectCspViolation",
        "tags": [
          "Security"
        ],
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/csp-report": {
              "schema": {
                "$ref": "#/components/schemas/CspReportEnvelope"
              }
            },
            "application/reports+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CspReportEnvelope"
                }
              }
            },
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CspReportEnvelope"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CspReportEnvelope"
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Report accepted, ignored, or malformed without exposing processing details"
          },
          "413": {
            "description": "Declared request body exceeds 32 KiB"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\SecurityReportController@csp"
      }
    },
    "/api/v2/marketplace/orders": {
      "post": {
        "operationId": "createMarketplaceOrder",
        "summary": "Create or replay a marketplace order",
        "description": "Prices, shipping cost, inventory, coupons, and loyalty value are resolved and validated by the server. The idempotency key is scoped to the authenticated buyer and tenant.",
        "tags": [
          "Marketplace Orders"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarketplaceOrderCreateInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Order created, settled, or safely replayed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketplaceOrderResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Marketplace unavailable or purchase prohibited"
          },
          "422": {
            "description": "Invalid, unavailable, or inconsistent checkout selection"
          }
        }
      }
    },
    "/api/v2/marketplace/reports": {
      "get": {
        "operationId": "listMyMarketplaceReports",
        "summary": "List reports filed by or affecting the current user",
        "tags": [
          "Marketplace Reports"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          }
        ],
        "responses": {
          "200": {
            "description": "Privacy-filtered report collection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketplaceReportCollectionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          }
        }
      }
    },
    "/api/v2/marketplace/reports/{id}": {
      "get": {
        "operationId": "getMarketplaceReport",
        "summary": "Get one privacy-filtered marketplace report",
        "tags": [
          "Marketplace Reports"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Report visible to its reporter or affected seller",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketplaceReportResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "User is not a report participant"
          },
          "404": {
            "description": "Report not found"
          }
        }
      }
    },
    "/api/v2/marketplace/reports/{id}/appeal": {
      "post": {
        "operationId": "appealMarketplaceReport",
        "summary": "Appeal an eligible marketplace report decision",
        "tags": [
          "Marketplace Reports"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "appeal_text"
                ],
                "properties": {
                  "appeal_text": {
                    "type": "string",
                    "minLength": 20,
                    "maxLength": 5000
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Appeal accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketplaceActionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "User is not eligible to appeal this report"
          },
          "422": {
            "description": "Report state or appeal text is invalid"
          }
        }
      }
    },
    "/api/v2/admin/marketplace/disputes": {
      "get": {
        "operationId": "listMarketplaceDisputes",
        "summary": "List tenant marketplace disputes for administrators",
        "tags": [
          "Marketplace Administration"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "open",
                "under_review",
                "resolved_buyer",
                "resolved_seller",
                "escalated",
                "closed"
              ]
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated dispute queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketplaceDisputeCollectionResponse"
                }
              }
            }
          },
          "403": {
            "description": "Administrator required"
          }
        }
      }
    },
    "/api/v2/admin/marketplace/disputes/{id}/resolve": {
      "put": {
        "operationId": "resolveMarketplaceDispute",
        "summary": "Resolve a marketplace dispute and optionally refund the buyer",
        "tags": [
          "Marketplace Administration"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "resolution",
                  "resolution_notes"
                ],
                "properties": {
                  "resolution": {
                    "type": "string",
                    "enum": [
                      "buyer",
                      "seller",
                      "closed"
                    ]
                  },
                  "resolution_notes": {
                    "type": "string",
                    "maxLength": 5000
                  },
                  "refund_amount": {
                    "type": "number",
                    "format": "double",
                    "minimum": 0.01,
                    "description": "Buyer resolutions only; time-credit orders require a full refund.",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Dispute resolved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketplaceActionResponse"
                }
              }
            }
          },
          "403": {
            "description": "Administrator required"
          },
          "409": {
            "description": "Refund or resolution could not be completed safely"
          },
          "422": {
            "description": "Resolution is invalid for the dispute or payment type"
          }
        }
      }
    },
    "/api/v2/admin/marketplace/reports/{id}/resolve-appeal": {
      "put": {
        "operationId": "resolveMarketplaceReportAppeal",
        "summary": "Resolve a marketplace report appeal",
        "tags": [
          "Marketplace Administration"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "action_taken",
                  "resolution_reason"
                ],
                "properties": {
                  "action_taken": {
                    "type": "string",
                    "enum": [
                      "none",
                      "warning",
                      "listing_removed",
                      "seller_suspended"
                    ]
                  },
                  "resolution_reason": {
                    "type": "string",
                    "maxLength": 5000
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Appeal resolved and enforcement reconciled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketplaceActionResponse"
                }
              }
            }
          },
          "403": {
            "description": "Administrator required"
          },
          "422": {
            "description": "Report is not awaiting appeal resolution"
          }
        }
      }
    },
    "/api/v2/admin/dashboard/stats": {
      "get": {
        "summary": "GET /api/v2/admin/dashboard/stats",
        "tags": [
          "Admin Dashboard"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/dashboard/trends": {
      "get": {
        "summary": "GET /api/v2/admin/dashboard/trends",
        "tags": [
          "Admin Dashboard"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/dashboard/activity": {
      "get": {
        "summary": "GET /api/v2/admin/dashboard/activity",
        "tags": [
          "Admin Dashboard"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/users": {
      "get": {
        "summary": "GET /api/v2/admin/users",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/users",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/users/import": {
      "post": {
        "summary": "POST /api/v2/admin/users/import",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/users/import/template": {
      "get": {
        "summary": "GET /api/v2/admin/users/import/template",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/users/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/users/{id}",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/users/{id}",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/users/{id}",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/approve": {
      "post": {
        "summary": "POST /api/v2/admin/users/{id}/approve",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/suspend": {
      "post": {
        "summary": "POST /api/v2/admin/users/{id}/suspend",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/ban": {
      "post": {
        "summary": "POST /api/v2/admin/users/{id}/ban",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/reactivate": {
      "post": {
        "summary": "POST /api/v2/admin/users/{id}/reactivate",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/reset-2fa": {
      "post": {
        "summary": "POST /api/v2/admin/users/{id}/reset-2fa",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/badges/recheck-all": {
      "post": {
        "summary": "POST /api/v2/admin/users/badges/recheck-all",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/users/{id}/badges": {
      "post": {
        "summary": "POST /api/v2/admin/users/{id}/badges",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "get": {
        "summary": "GET /api/v2/admin/users/{id}/badges",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/badges/{badgeId}": {
      "delete": {
        "summary": "DELETE /api/v2/admin/users/{id}/badges/{badgeId}",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "badgeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/impersonate": {
      "post": {
        "summary": "POST /api/v2/admin/users/{id}/impersonate",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/super-admin": {
      "put": {
        "summary": "PUT /api/v2/admin/users/{id}/super-admin",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/badges/recheck": {
      "post": {
        "summary": "POST /api/v2/admin/users/{id}/badges/recheck",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/consents": {
      "get": {
        "summary": "GET /api/v2/admin/users/{id}/consents",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/password": {
      "post": {
        "summary": "POST /api/v2/admin/users/{id}/password",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/send-password-reset": {
      "post": {
        "summary": "POST /api/v2/admin/users/{id}/send-password-reset",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/users/{id}/send-welcome-email": {
      "post": {
        "summary": "POST /api/v2/admin/users/{id}/send-welcome-email",
        "tags": [
          "Admin Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/listings": {
      "get": {
        "summary": "GET /api/v2/admin/listings",
        "tags": [
          "Admin Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/listings/moderation-queue": {
      "get": {
        "summary": "GET /api/v2/admin/listings/moderation-queue",
        "tags": [
          "Admin Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/listings/moderation-stats": {
      "get": {
        "summary": "GET /api/v2/admin/listings/moderation-stats",
        "tags": [
          "Admin Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/listings/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/listings/{id}",
        "tags": [
          "Admin Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/listings/{id}",
        "tags": [
          "Admin Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/listings/{id}/approve": {
      "post": {
        "summary": "POST /api/v2/admin/listings/{id}/approve",
        "tags": [
          "Admin Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/categories": {
      "get": {
        "summary": "GET /api/v2/admin/categories",
        "tags": [
          "Admin Categories"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/categories",
        "tags": [
          "Admin Categories"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/categories/{id}": {
      "put": {
        "summary": "PUT /api/v2/admin/categories/{id}",
        "tags": [
          "Admin Categories"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/categories/{id}",
        "tags": [
          "Admin Categories"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/attributes": {
      "get": {
        "summary": "GET /api/v2/admin/attributes",
        "tags": [
          "Admin Attributes"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/attributes",
        "tags": [
          "Admin Attributes"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/attributes/{id}": {
      "put": {
        "summary": "PUT /api/v2/admin/attributes/{id}",
        "tags": [
          "Admin Attributes"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/attributes/{id}",
        "tags": [
          "Admin Attributes"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/config": {
      "get": {
        "summary": "GET /api/v2/admin/config",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/config/features": {
      "put": {
        "summary": "PUT /api/v2/admin/config/features",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/config/modules": {
      "put": {
        "summary": "PUT /api/v2/admin/config/modules",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/cache/stats": {
      "get": {
        "summary": "GET /api/v2/admin/cache/stats",
        "tags": [
          "Admin Cache"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/cache/clear": {
      "post": {
        "summary": "POST /api/v2/admin/cache/clear",
        "tags": [
          "Admin Cache"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/background-jobs": {
      "get": {
        "summary": "GET /api/v2/admin/background-jobs",
        "tags": [
          "Admin Background-jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/background-jobs/{id}/run": {
      "post": {
        "summary": "POST /api/v2/admin/background-jobs/{id}/run",
        "tags": [
          "Admin Background-jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/settings": {
      "get": {
        "summary": "GET /api/v2/admin/settings",
        "tags": [
          "Admin Settings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/settings",
        "tags": [
          "Admin Settings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/config/ai": {
      "get": {
        "summary": "GET /api/v2/admin/config/ai",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/config/ai",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/config/feed-algorithm": {
      "get": {
        "summary": "GET /api/v2/admin/config/feed-algorithm",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/config/feed-algorithm",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/config/algorithms": {
      "get": {
        "summary": "GET /api/v2/admin/config/algorithms",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/config/algorithm/{area}": {
      "put": {
        "summary": "PUT /api/v2/admin/config/algorithm/{area}",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "area",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/config/algorithm-health": {
      "get": {
        "summary": "GET /api/v2/admin/config/algorithm-health",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/config/images": {
      "get": {
        "summary": "GET /api/v2/admin/config/images",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/config/images",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/config/seo": {
      "get": {
        "summary": "GET /api/v2/admin/config/seo",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/config/seo",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/config/languages": {
      "get": {
        "summary": "GET /api/v2/admin/config/languages",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/config/languages",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/config/native-app": {
      "get": {
        "summary": "GET /api/v2/admin/config/native-app",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/config/native-app",
        "tags": [
          "Admin Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/system/cron-jobs": {
      "get": {
        "summary": "GET /api/v2/admin/system/cron-jobs",
        "tags": [
          "Admin System"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/system/cron-jobs/{id}/run": {
      "post": {
        "summary": "POST /api/v2/admin/system/cron-jobs/{id}/run",
        "tags": [
          "Admin System"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/system/cron-jobs/logs": {
      "get": {
        "summary": "GET /api/v2/admin/system/cron-jobs/logs",
        "tags": [
          "Admin System"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/system/cron-jobs/logs",
        "tags": [
          "Admin System"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/system/cron-jobs/logs/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/system/cron-jobs/logs/{id}",
        "tags": [
          "Admin System"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/system/cron-jobs/settings": {
      "get": {
        "summary": "GET /api/v2/admin/system/cron-jobs/settings",
        "tags": [
          "Admin System"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/system/cron-jobs/settings",
        "tags": [
          "Admin System"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/system/cron-jobs/health": {
      "get": {
        "summary": "GET /api/v2/admin/system/cron-jobs/health",
        "tags": [
          "Admin System"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/system/cron-jobs/{jobId}/settings": {
      "get": {
        "summary": "GET /api/v2/admin/system/cron-jobs/{jobId}/settings",
        "tags": [
          "Admin System"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/system/cron-jobs/{jobId}/settings",
        "tags": [
          "Admin System"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/system/activity-log": {
      "get": {
        "summary": "GET /api/v2/admin/system/activity-log",
        "tags": [
          "Admin System"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/email/status": {
      "get": {
        "summary": "GET /api/v2/admin/email/status",
        "tags": [
          "Admin Email"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/email/test": {
      "post": {
        "summary": "POST /api/v2/admin/email/test",
        "tags": [
          "Admin Email"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/email/test-gmail": {
      "post": {
        "summary": "POST /api/v2/admin/email/test-gmail",
        "tags": [
          "Admin Email"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/matching/config": {
      "get": {
        "summary": "GET /api/v2/admin/matching/config",
        "tags": [
          "Admin Matching"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/matching/config",
        "tags": [
          "Admin Matching"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/matching/cache/clear": {
      "post": {
        "summary": "POST /api/v2/admin/matching/cache/clear",
        "tags": [
          "Admin Matching"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/matching/stats": {
      "get": {
        "summary": "GET /api/v2/admin/matching/stats",
        "tags": [
          "Admin Matching"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/matching/approvals": {
      "get": {
        "summary": "GET /api/v2/admin/matching/approvals",
        "tags": [
          "Admin Matching"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/matching/approvals/stats": {
      "get": {
        "summary": "GET /api/v2/admin/matching/approvals/stats",
        "tags": [
          "Admin Matching"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/matching/approvals/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/matching/approvals/{id}",
        "tags": [
          "Admin Matching"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/matching/approvals/{id}/approve": {
      "post": {
        "summary": "POST /api/v2/admin/matching/approvals/{id}/approve",
        "tags": [
          "Admin Matching"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/matching/approvals/{id}/reject": {
      "post": {
        "summary": "POST /api/v2/admin/matching/approvals/{id}/reject",
        "tags": [
          "Admin Matching"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/help/faqs": {
      "get": {
        "summary": "GET /api/v2/admin/help/faqs",
        "tags": [
          "Admin Help"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/help/faqs",
        "tags": [
          "Admin Help"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/help/faqs/{id}": {
      "put": {
        "summary": "PUT /api/v2/admin/help/faqs/{id}",
        "tags": [
          "Admin Help"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/help/faqs/{id}",
        "tags": [
          "Admin Help"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/blog": {
      "get": {
        "summary": "GET /api/v2/admin/blog",
        "tags": [
          "Admin Blog"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/blog",
        "tags": [
          "Admin Blog"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/blog/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/blog/{id}",
        "tags": [
          "Admin Blog"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/blog/{id}",
        "tags": [
          "Admin Blog"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/blog/{id}",
        "tags": [
          "Admin Blog"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/blog/{id}/toggle-status": {
      "post": {
        "summary": "POST /api/v2/admin/blog/{id}/toggle-status",
        "tags": [
          "Admin Blog"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/feed/posts": {
      "get": {
        "summary": "GET /api/v2/admin/feed/posts",
        "tags": [
          "Admin Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/feed/posts/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/feed/posts/{id}",
        "tags": [
          "Admin Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/feed/posts/{id}",
        "tags": [
          "Admin Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/feed/posts/{id}/hide": {
      "post": {
        "summary": "POST /api/v2/admin/feed/posts/{id}/hide",
        "tags": [
          "Admin Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/feed/stats": {
      "get": {
        "summary": "GET /api/v2/admin/feed/stats",
        "tags": [
          "Admin Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/comments": {
      "get": {
        "summary": "GET /api/v2/admin/comments",
        "tags": [
          "Admin Comments"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/comments/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/comments/{id}",
        "tags": [
          "Admin Comments"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/comments/{id}",
        "tags": [
          "Admin Comments"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/comments/{id}/hide": {
      "post": {
        "summary": "POST /api/v2/admin/comments/{id}/hide",
        "tags": [
          "Admin Comments"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/reviews": {
      "get": {
        "summary": "GET /api/v2/admin/reviews",
        "tags": [
          "Admin Reviews"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/reviews/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/reviews/{id}",
        "tags": [
          "Admin Reviews"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/reviews/{id}",
        "tags": [
          "Admin Reviews"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/reviews/{id}/flag": {
      "post": {
        "summary": "POST /api/v2/admin/reviews/{id}/flag",
        "tags": [
          "Admin Reviews"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/reviews/{id}/hide": {
      "post": {
        "summary": "POST /api/v2/admin/reviews/{id}/hide",
        "tags": [
          "Admin Reviews"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/reports": {
      "get": {
        "summary": "GET /api/v2/admin/reports",
        "tags": [
          "Admin Reports"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/reports/stats": {
      "get": {
        "summary": "GET /api/v2/admin/reports/stats",
        "tags": [
          "Admin Reports"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/reports/social-value": {
      "get": {
        "summary": "GET /api/v2/admin/reports/social-value",
        "tags": [
          "Admin Reports"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/reports/social-value/config": {
      "put": {
        "summary": "PUT /api/v2/admin/reports/social-value/config",
        "tags": [
          "Admin Reports"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/reports/members": {
      "get": {
        "summary": "GET /api/v2/admin/reports/members",
        "tags": [
          "Admin Reports"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/reports/hours": {
      "get": {
        "summary": "GET /api/v2/admin/reports/hours",
        "tags": [
          "Admin Reports"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/reports/export-types": {
      "get": {
        "summary": "GET /api/v2/admin/reports/export-types",
        "tags": [
          "Admin Reports"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/reports/{type}/export": {
      "get": {
        "summary": "GET /api/v2/admin/reports/{type}/export",
        "tags": [
          "Admin Reports"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/reports/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/reports/{id}",
        "tags": [
          "Admin Reports"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/reports/{id}/resolve": {
      "post": {
        "summary": "POST /api/v2/admin/reports/{id}/resolve",
        "tags": [
          "Admin Reports"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/reports/{id}/dismiss": {
      "post": {
        "summary": "POST /api/v2/admin/reports/{id}/dismiss",
        "tags": [
          "Admin Reports"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/gamification/stats": {
      "get": {
        "summary": "GET /api/v2/admin/gamification/stats",
        "tags": [
          "Admin Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/gamification/badges": {
      "get": {
        "summary": "GET /api/v2/admin/gamification/badges",
        "tags": [
          "Admin Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/gamification/badges",
        "tags": [
          "Admin Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/gamification/badges/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/admin/gamification/badges/{id}",
        "tags": [
          "Admin Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/gamification/campaigns": {
      "get": {
        "summary": "GET /api/v2/admin/gamification/campaigns",
        "tags": [
          "Admin Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/gamification/campaigns",
        "tags": [
          "Admin Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/gamification/campaigns/{id}": {
      "put": {
        "summary": "PUT /api/v2/admin/gamification/campaigns/{id}",
        "tags": [
          "Admin Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/gamification/campaigns/{id}",
        "tags": [
          "Admin Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/gamification/recheck-all": {
      "post": {
        "summary": "POST /api/v2/admin/gamification/recheck-all",
        "tags": [
          "Admin Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/gamification/bulk-award": {
      "post": {
        "summary": "POST /api/v2/admin/gamification/bulk-award",
        "tags": [
          "Admin Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/groups": {
      "get": {
        "summary": "GET /api/v2/admin/groups",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/groups/analytics": {
      "get": {
        "summary": "GET /api/v2/admin/groups/analytics",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/groups/approvals": {
      "get": {
        "summary": "GET /api/v2/admin/groups/approvals",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/groups/approvals/{id}/approve": {
      "post": {
        "summary": "POST /api/v2/admin/groups/approvals/{id}/approve",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/groups/approvals/{id}/reject": {
      "post": {
        "summary": "POST /api/v2/admin/groups/approvals/{id}/reject",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/groups/moderation": {
      "get": {
        "summary": "GET /api/v2/admin/groups/moderation",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/groups/types": {
      "get": {
        "summary": "GET /api/v2/admin/groups/types",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/groups/types",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/groups/types/{id}": {
      "put": {
        "summary": "PUT /api/v2/admin/groups/types/{id}",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/groups/types/{id}",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/groups/types/{id}/policies": {
      "get": {
        "summary": "GET /api/v2/admin/groups/types/{id}/policies",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/groups/types/{id}/policies",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/groups/batch-geocode": {
      "post": {
        "summary": "POST /api/v2/admin/groups/batch-geocode",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/groups/recommendations": {
      "get": {
        "summary": "GET /api/v2/admin/groups/recommendations",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/groups/featured": {
      "get": {
        "summary": "GET /api/v2/admin/groups/featured",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/groups/featured/update": {
      "post": {
        "summary": "POST /api/v2/admin/groups/featured/update",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/groups/{id}/status": {
      "put": {
        "summary": "PUT /api/v2/admin/groups/{id}/status",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/groups/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/admin/groups/{id}",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "get": {
        "summary": "GET /api/v2/admin/groups/{id}",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/groups/{id}",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/groups/{id}/toggle-featured": {
      "put": {
        "summary": "PUT /api/v2/admin/groups/{id}/toggle-featured",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/groups/{id}/geocode": {
      "post": {
        "summary": "POST /api/v2/admin/groups/{id}/geocode",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/groups/{groupId}/members": {
      "get": {
        "summary": "GET /api/v2/admin/groups/{groupId}/members",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/groups/{groupId}/members/{userId}/promote": {
      "post": {
        "summary": "POST /api/v2/admin/groups/{groupId}/members/{userId}/promote",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/groups/{groupId}/members/{userId}/demote": {
      "post": {
        "summary": "POST /api/v2/admin/groups/{groupId}/members/{userId}/demote",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/groups/{groupId}/members/{userId}": {
      "delete": {
        "summary": "DELETE /api/v2/admin/groups/{groupId}/members/{userId}",
        "tags": [
          "Admin Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/timebanking/stats": {
      "get": {
        "summary": "GET /api/v2/admin/timebanking/stats",
        "tags": [
          "Admin Timebanking"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/timebanking/alerts": {
      "get": {
        "summary": "GET /api/v2/admin/timebanking/alerts",
        "tags": [
          "Admin Timebanking"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/timebanking/alerts/{id}": {
      "put": {
        "summary": "PUT /api/v2/admin/timebanking/alerts/{id}",
        "tags": [
          "Admin Timebanking"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/timebanking/adjust-balance": {
      "post": {
        "summary": "POST /api/v2/admin/timebanking/adjust-balance",
        "tags": [
          "Admin Timebanking"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/timebanking/org-wallets": {
      "get": {
        "summary": "GET /api/v2/admin/timebanking/org-wallets",
        "tags": [
          "Admin Timebanking"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/timebanking/user-report": {
      "get": {
        "summary": "GET /api/v2/admin/timebanking/user-report",
        "tags": [
          "Admin Timebanking"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/timebanking/user-statement": {
      "get": {
        "summary": "GET /api/v2/admin/timebanking/user-statement",
        "tags": [
          "Admin Timebanking"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/dashboard": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/dashboard",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/roles": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/roles",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/enterprise/roles",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/roles/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/roles/{id}",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/enterprise/roles/{id}",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/enterprise/roles/{id}",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/enterprise/permissions": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/permissions",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/gdpr/dashboard": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/gdpr/dashboard",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/gdpr/requests": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/gdpr/requests",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/gdpr/requests/{id}": {
      "put": {
        "summary": "PUT /api/v2/admin/enterprise/gdpr/requests/{id}",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/enterprise/gdpr/consents": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/gdpr/consents",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/gdpr/breaches": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/gdpr/breaches",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/enterprise/gdpr/breaches",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/gdpr/audit": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/gdpr/audit",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/monitoring": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/monitoring",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/monitoring/health": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/monitoring/health",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/monitoring/logs": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/monitoring/logs",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/config": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/config",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/enterprise/config",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/enterprise/config/secrets": {
      "get": {
        "summary": "GET /api/v2/admin/enterprise/config/secrets",
        "tags": [
          "Admin Enterprise"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/legal-documents": {
      "get": {
        "summary": "GET /api/v2/admin/legal-documents",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/legal-documents",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/legal-documents/compliance": {
      "get": {
        "summary": "GET /api/v2/admin/legal-documents/compliance",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/legal-documents/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/legal-documents/{id}",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/legal-documents/{id}",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/legal-documents/{id}",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/legal-documents/{docId}/versions": {
      "get": {
        "summary": "GET /api/v2/admin/legal-documents/{docId}/versions",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/admin/legal-documents/{docId}/versions",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/legal-documents/{docId}/versions/compare": {
      "get": {
        "summary": "GET /api/v2/admin/legal-documents/{docId}/versions/compare",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/legal-documents/{docId}/versions/{versionId}": {
      "put": {
        "summary": "PUT /api/v2/admin/legal-documents/{docId}/versions/{versionId}",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/legal-documents/{docId}/versions/{versionId}",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/legal-documents/versions/{versionId}/publish": {
      "post": {
        "summary": "POST /api/v2/admin/legal-documents/versions/{versionId}/publish",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/legal-documents/versions/{versionId}/acceptances": {
      "get": {
        "summary": "GET /api/v2/admin/legal-documents/versions/{versionId}/acceptances",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/legal-documents/{docId}/acceptances/export": {
      "get": {
        "summary": "GET /api/v2/admin/legal-documents/{docId}/acceptances/export",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/legal-documents/{docId}/versions/{versionId}/notify": {
      "post": {
        "summary": "POST /api/v2/admin/legal-documents/{docId}/versions/{versionId}/notify",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/legal-documents/{docId}/versions/{versionId}/pending-count": {
      "get": {
        "summary": "GET /api/v2/admin/legal-documents/{docId}/versions/{versionId}/pending-count",
        "tags": [
          "Admin Legal-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/broker/dashboard": {
      "get": {
        "summary": "GET /api/v2/admin/broker/dashboard",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/broker/exchanges": {
      "get": {
        "summary": "GET /api/v2/admin/broker/exchanges",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/broker/exchanges/{id}/approve": {
      "post": {
        "summary": "POST /api/v2/admin/broker/exchanges/{id}/approve",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/broker/exchanges/{id}/reject": {
      "post": {
        "summary": "POST /api/v2/admin/broker/exchanges/{id}/reject",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/broker/risk-tags": {
      "get": {
        "summary": "GET /api/v2/admin/broker/risk-tags",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/broker/messages": {
      "get": {
        "summary": "GET /api/v2/admin/broker/messages",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/broker/messages/unreviewed-count": {
      "get": {
        "summary": "GET /api/v2/admin/broker/messages/unreviewed-count",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/broker/messages/{id}/review": {
      "post": {
        "summary": "POST /api/v2/admin/broker/messages/{id}/review",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/broker/monitoring": {
      "get": {
        "summary": "GET /api/v2/admin/broker/monitoring",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/broker/messages/{id}/flag": {
      "post": {
        "summary": "POST /api/v2/admin/broker/messages/{id}/flag",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/broker/monitoring/{userId}": {
      "post": {
        "summary": "POST /api/v2/admin/broker/monitoring/{userId}",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/broker/risk-tags/{listingId}": {
      "post": {
        "summary": "POST /api/v2/admin/broker/risk-tags/{listingId}",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "listingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/broker/risk-tags/{listingId}",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "listingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/broker/configuration": {
      "get": {
        "summary": "GET /api/v2/admin/broker/configuration",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/broker/configuration",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/broker/exchanges/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/broker/exchanges/{id}",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/broker/messages/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/broker/messages/{id}",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/broker/messages/{id}/approve": {
      "post": {
        "summary": "POST /api/v2/admin/broker/messages/{id}/approve",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/broker/archives": {
      "get": {
        "summary": "GET /api/v2/admin/broker/archives",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/broker/archives/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/broker/archives/{id}",
        "tags": [
          "Admin Broker"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/vetting/stats": {
      "get": {
        "summary": "GET /api/v2/admin/vetting/stats",
        "tags": [
          "Admin Vetting"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/vetting/user/{userId}": {
      "get": {
        "summary": "GET /api/v2/admin/vetting/user/{userId}",
        "tags": [
          "Admin Vetting"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/vetting": {
      "get": {
        "summary": "GET /api/v2/admin/vetting",
        "tags": [
          "Admin Vetting"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/vetting",
        "tags": [
          "Admin Vetting"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/vetting/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/vetting/{id}",
        "tags": [
          "Admin Vetting"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/vetting/{id}",
        "tags": [
          "Admin Vetting"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/vetting/{id}",
        "tags": [
          "Admin Vetting"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/vetting/bulk": {
      "post": {
        "summary": "POST /api/v2/admin/vetting/bulk",
        "tags": [
          "Admin Vetting"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/vetting/{id}/verify": {
      "post": {
        "summary": "POST /api/v2/admin/vetting/{id}/verify",
        "tags": [
          "Admin Vetting"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/vetting/{id}/reject": {
      "post": {
        "summary": "POST /api/v2/admin/vetting/{id}/reject",
        "tags": [
          "Admin Vetting"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/vetting/{id}/upload": {
      "post": {
        "summary": "POST /api/v2/admin/vetting/{id}/upload",
        "tags": [
          "Admin Vetting"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/insurance/stats": {
      "get": {
        "summary": "GET /api/v2/admin/insurance/stats",
        "tags": [
          "Admin Insurance"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/insurance/user/{userId}": {
      "get": {
        "summary": "GET /api/v2/admin/insurance/user/{userId}",
        "tags": [
          "Admin Insurance"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/insurance": {
      "get": {
        "summary": "GET /api/v2/admin/insurance",
        "tags": [
          "Admin Insurance"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/insurance",
        "tags": [
          "Admin Insurance"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/insurance/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/insurance/{id}",
        "tags": [
          "Admin Insurance"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/insurance/{id}",
        "tags": [
          "Admin Insurance"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/insurance/{id}",
        "tags": [
          "Admin Insurance"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/insurance/{id}/verify": {
      "post": {
        "summary": "POST /api/v2/admin/insurance/{id}/verify",
        "tags": [
          "Admin Insurance"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/insurance/{id}/reject": {
      "post": {
        "summary": "POST /api/v2/admin/insurance/{id}/reject",
        "tags": [
          "Admin Insurance"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/newsletters": {
      "get": {
        "summary": "GET /api/v2/admin/newsletters",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/newsletters",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/newsletters/subscribers": {
      "get": {
        "summary": "GET /api/v2/admin/newsletters/subscribers",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/newsletters/segments": {
      "get": {
        "summary": "GET /api/v2/admin/newsletters/segments",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/newsletters/templates": {
      "get": {
        "summary": "GET /api/v2/admin/newsletters/templates",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/newsletters/analytics": {
      "get": {
        "summary": "GET /api/v2/admin/newsletters/analytics",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/newsletters/bounces": {
      "get": {
        "summary": "GET /api/v2/admin/newsletters/bounces",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/newsletters/suppression-list": {
      "get": {
        "summary": "GET /api/v2/admin/newsletters/suppression-list",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/newsletters/suppression-list/{email}/unsuppress": {
      "post": {
        "summary": "POST /api/v2/admin/newsletters/suppression-list/{email}/unsuppress",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "email",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/newsletters/suppression-list/{email}/suppress": {
      "post": {
        "summary": "POST /api/v2/admin/newsletters/suppression-list/{email}/suppress",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "email",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/newsletters/send-time-optimizer": {
      "get": {
        "summary": "GET /api/v2/admin/newsletters/send-time-optimizer",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/newsletters/diagnostics": {
      "get": {
        "summary": "GET /api/v2/admin/newsletters/diagnostics",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/newsletters/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/newsletters/{id}",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/newsletters/{id}",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/newsletters/{id}",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/newsletters/{id}/resend-info": {
      "get": {
        "summary": "GET /api/v2/admin/newsletters/{id}/resend-info",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/newsletters/{id}/resend": {
      "post": {
        "summary": "POST /api/v2/admin/newsletters/{id}/resend",
        "tags": [
          "Admin Newsletters"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/volunteering": {
      "get": {
        "summary": "GET /api/v2/admin/volunteering",
        "tags": [
          "Admin Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/volunteering/approvals": {
      "get": {
        "summary": "GET /api/v2/admin/volunteering/approvals",
        "tags": [
          "Admin Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/volunteering/organizations": {
      "get": {
        "summary": "GET /api/v2/admin/volunteering/organizations",
        "tags": [
          "Admin Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/volunteering/approvals/{id}/approve": {
      "post": {
        "summary": "POST /api/v2/admin/volunteering/approvals/{id}/approve",
        "tags": [
          "Admin Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/volunteering/approvals/{id}/decline": {
      "post": {
        "summary": "POST /api/v2/admin/volunteering/approvals/{id}/decline",
        "tags": [
          "Admin Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/events": {
      "get": {
        "summary": "GET /api/v2/admin/events",
        "description": "Maintained Events operation served by AdminEventsController@index.",
        "operationId": "AdminEvents_index",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventsController@index"
      }
    },
    "/api/v2/admin/events/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/events/{id}",
        "description": "Maintained Events operation served by AdminEventsController@show.",
        "operationId": "AdminEvents_show",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventsController@show",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/events/{id}",
        "description": "Maintained Events operation served by AdminEventsController@destroy.",
        "operationId": "AdminEvents_destroy",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventsController@destroy",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/events/{id}/cancel": {
      "post": {
        "summary": "POST /api/v2/admin/events/{id}/cancel",
        "description": "Maintained Events operation served by AdminEventsController@cancel.",
        "operationId": "AdminEvents_cancel",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventsController@cancel",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/polls": {
      "get": {
        "summary": "GET /api/v2/admin/polls",
        "tags": [
          "Admin Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/polls/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/polls/{id}",
        "tags": [
          "Admin Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/polls/{id}",
        "tags": [
          "Admin Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/goals": {
      "get": {
        "summary": "GET /api/v2/admin/goals",
        "tags": [
          "Admin Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/goals/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/goals/{id}",
        "tags": [
          "Admin Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/goals/{id}",
        "tags": [
          "Admin Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/resources": {
      "get": {
        "summary": "GET /api/v2/admin/resources",
        "tags": [
          "Admin Resources"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/resources/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/resources/{id}",
        "tags": [
          "Admin Resources"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/resources/{id}",
        "tags": [
          "Admin Resources"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/jobs": {
      "get": {
        "summary": "GET /api/v2/admin/jobs",
        "tags": [
          "Admin Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/jobs/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/jobs/{id}",
        "tags": [
          "Admin Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/jobs/{id}",
        "tags": [
          "Admin Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/jobs/{id}/feature": {
      "post": {
        "summary": "POST /api/v2/admin/jobs/{id}/feature",
        "tags": [
          "Admin Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/jobs/{id}/unfeature": {
      "post": {
        "summary": "POST /api/v2/admin/jobs/{id}/unfeature",
        "tags": [
          "Admin Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/ideation": {
      "get": {
        "summary": "GET /api/v2/admin/ideation",
        "tags": [
          "Admin Ideation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/ideation/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/ideation/{id}",
        "tags": [
          "Admin Ideation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/ideation/{id}",
        "tags": [
          "Admin Ideation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/ideation/{id}/status": {
      "post": {
        "summary": "POST /api/v2/admin/ideation/{id}/status",
        "tags": [
          "Admin Ideation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/federation/settings": {
      "get": {
        "summary": "GET /api/v2/admin/federation/settings",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/federation/settings",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/federation/partnerships": {
      "get": {
        "summary": "GET /api/v2/admin/federation/partnerships",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/federation/partnerships/{id}/approve": {
      "post": {
        "summary": "POST /api/v2/admin/federation/partnerships/{id}/approve",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/federation/partnerships/{id}/reject": {
      "post": {
        "summary": "POST /api/v2/admin/federation/partnerships/{id}/reject",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/federation/partnerships/{id}/terminate": {
      "post": {
        "summary": "POST /api/v2/admin/federation/partnerships/{id}/terminate",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/federation/directory": {
      "get": {
        "summary": "GET /api/v2/admin/federation/directory",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/federation/directory/profile": {
      "get": {
        "summary": "GET /api/v2/admin/federation/directory/profile",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/federation/directory/profile",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/federation/analytics": {
      "get": {
        "summary": "GET /api/v2/admin/federation/analytics",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/federation/api-keys": {
      "get": {
        "summary": "GET /api/v2/admin/federation/api-keys",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/federation/api-keys",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/federation/data": {
      "get": {
        "summary": "GET /api/v2/admin/federation/data",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/federation/export/{type}": {
      "get": {
        "summary": "GET /api/v2/admin/federation/export/{type}",
        "tags": [
          "Admin Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/federation/status": {
      "get": {
        "summary": "GET /api/v2/federation/status",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/federation/opt-in": {
      "post": {
        "summary": "POST /api/v2/federation/opt-in",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/federation/setup": {
      "post": {
        "summary": "POST /api/v2/federation/setup",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/federation/opt-out": {
      "post": {
        "summary": "POST /api/v2/federation/opt-out",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/federation/partners": {
      "get": {
        "summary": "GET /api/v2/federation/partners",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/federation/activity": {
      "get": {
        "summary": "GET /api/v2/federation/activity",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/federation/events": {
      "get": {
        "summary": "GET /api/v2/federation/events",
        "description": "Maintained Events operation served by FederationV2Controller@events.",
        "operationId": "FederationV2_events",
        "tags": [
          "Event Federation"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\FederationV2Controller@events"
      }
    },
    "/api/v2/federation/listings": {
      "get": {
        "summary": "GET /api/v2/federation/listings",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/federation/members": {
      "get": {
        "summary": "GET /api/v2/federation/members",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/federation/members/{id}": {
      "get": {
        "summary": "GET /api/v2/federation/members/{id}",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/federation/messages": {
      "get": {
        "summary": "GET /api/v2/federation/messages",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/federation/messages",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/federation/messages/{id}/mark-read": {
      "post": {
        "summary": "POST /api/v2/federation/messages/{id}/mark-read",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/federation/settings": {
      "get": {
        "summary": "GET /api/v2/federation/settings",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/federation/settings",
        "tags": [
          "Federation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/pages": {
      "get": {
        "summary": "GET /api/v2/admin/pages",
        "tags": [
          "Admin Pages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/pages",
        "tags": [
          "Admin Pages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/pages/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/pages/{id}",
        "tags": [
          "Admin Pages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/pages/{id}",
        "tags": [
          "Admin Pages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/pages/{id}",
        "tags": [
          "Admin Pages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/menus": {
      "get": {
        "summary": "GET /api/v2/admin/menus",
        "tags": [
          "Admin Menus"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/menus",
        "tags": [
          "Admin Menus"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/menus/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/menus/{id}",
        "tags": [
          "Admin Menus"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/menus/{id}",
        "tags": [
          "Admin Menus"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/menus/{id}",
        "tags": [
          "Admin Menus"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/menus/{id}/items": {
      "get": {
        "summary": "GET /api/v2/admin/menus/{id}/items",
        "tags": [
          "Admin Menus"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/admin/menus/{id}/items",
        "tags": [
          "Admin Menus"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/menus/{id}/items/reorder": {
      "post": {
        "summary": "POST /api/v2/admin/menus/{id}/items/reorder",
        "tags": [
          "Admin Menus"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/menu-items/{id}": {
      "put": {
        "summary": "PUT /api/v2/admin/menu-items/{id}",
        "tags": [
          "Admin Menu-items"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/menu-items/{id}",
        "tags": [
          "Admin Menu-items"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/plans": {
      "get": {
        "summary": "GET /api/v2/admin/plans",
        "tags": [
          "Admin Plans"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/plans",
        "tags": [
          "Admin Plans"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/plans/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/plans/{id}",
        "tags": [
          "Admin Plans"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/plans/{id}",
        "tags": [
          "Admin Plans"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/plans/{id}",
        "tags": [
          "Admin Plans"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/subscriptions": {
      "get": {
        "summary": "GET /api/v2/admin/subscriptions",
        "tags": [
          "Admin Subscriptions"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/tools/redirects": {
      "get": {
        "summary": "GET /api/v2/admin/tools/redirects",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/tools/redirects",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/tools/redirects/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/admin/tools/redirects/{id}",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/tools/404-errors": {
      "get": {
        "summary": "GET /api/v2/admin/tools/404-errors",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/tools/404-errors/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/admin/tools/404-errors/{id}",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/tools/health-check": {
      "post": {
        "summary": "POST /api/v2/admin/tools/health-check",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/tools/ip-debug": {
      "get": {
        "summary": "GET /api/v2/admin/tools/ip-debug",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/tools/webp-stats": {
      "get": {
        "summary": "GET /api/v2/admin/tools/webp-stats",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/tools/webp-convert": {
      "post": {
        "summary": "POST /api/v2/admin/tools/webp-convert",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/tools/seed": {
      "post": {
        "summary": "POST /api/v2/admin/tools/seed",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/tools/blog-backups": {
      "get": {
        "summary": "GET /api/v2/admin/tools/blog-backups",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/tools/blog-backups/{id}/restore": {
      "post": {
        "summary": "POST /api/v2/admin/tools/blog-backups/{id}/restore",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/tools/seo-audit": {
      "get": {
        "summary": "GET /api/v2/admin/tools/seo-audit",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/tools/seo-audit",
        "tags": [
          "Admin Tools"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/deliverability/dashboard": {
      "get": {
        "summary": "GET /api/v2/admin/deliverability/dashboard",
        "tags": [
          "Admin Deliverability"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/deliverability/analytics": {
      "get": {
        "summary": "GET /api/v2/admin/deliverability/analytics",
        "tags": [
          "Admin Deliverability"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/deliverability": {
      "get": {
        "summary": "GET /api/v2/admin/deliverability",
        "tags": [
          "Admin Deliverability"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/deliverability",
        "tags": [
          "Admin Deliverability"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/deliverability/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/deliverability/{id}",
        "tags": [
          "Admin Deliverability"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/deliverability/{id}",
        "tags": [
          "Admin Deliverability"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/deliverability/{id}",
        "tags": [
          "Admin Deliverability"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/deliverability/{id}/comments": {
      "post": {
        "summary": "POST /api/v2/admin/deliverability/{id}/comments",
        "tags": [
          "Admin Deliverability"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/dashboard": {
      "get": {
        "summary": "GET /api/v2/admin/super/dashboard",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/tenants": {
      "get": {
        "summary": "GET /api/v2/admin/super/tenants",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/super/tenants",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/tenants/hierarchy": {
      "get": {
        "summary": "GET /api/v2/admin/super/tenants/hierarchy",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/tenants/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/super/tenants/{id}",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/super/tenants/{id}",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/super/tenants/{id}",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/tenants/{id}/reactivate": {
      "post": {
        "summary": "POST /api/v2/admin/super/tenants/{id}/reactivate",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/tenants/{id}/toggle-hub": {
      "post": {
        "summary": "POST /api/v2/admin/super/tenants/{id}/toggle-hub",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/tenants/{id}/move": {
      "post": {
        "summary": "POST /api/v2/admin/super/tenants/{id}/move",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/users": {
      "get": {
        "summary": "GET /api/v2/admin/super/users",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/super/users",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/users/{id}": {
      "get": {
        "summary": "GET /api/v2/admin/super/users/{id}",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/super/users/{id}",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/users/{id}/grant-super-admin": {
      "post": {
        "summary": "POST /api/v2/admin/super/users/{id}/grant-super-admin",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/users/{id}/revoke-super-admin": {
      "post": {
        "summary": "POST /api/v2/admin/super/users/{id}/revoke-super-admin",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/users/{id}/grant-global-super-admin": {
      "post": {
        "summary": "POST /api/v2/admin/super/users/{id}/grant-global-super-admin",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/users/{id}/revoke-global-super-admin": {
      "post": {
        "summary": "POST /api/v2/admin/super/users/{id}/revoke-global-super-admin",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/users/{id}/move-tenant": {
      "post": {
        "summary": "POST /api/v2/admin/super/users/{id}/move-tenant",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/users/{id}/move-and-promote": {
      "post": {
        "summary": "POST /api/v2/admin/super/users/{id}/move-and-promote",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/bulk/move-users": {
      "post": {
        "summary": "POST /api/v2/admin/super/bulk/move-users",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/bulk/update-tenants": {
      "post": {
        "summary": "POST /api/v2/admin/super/bulk/update-tenants",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/audit": {
      "get": {
        "summary": "GET /api/v2/admin/super/audit",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/federation": {
      "get": {
        "summary": "GET /api/v2/admin/super/federation",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/federation/system-controls": {
      "get": {
        "summary": "GET /api/v2/admin/super/federation/system-controls",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/super/federation/system-controls",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/federation/emergency-lockdown": {
      "post": {
        "summary": "POST /api/v2/admin/super/federation/emergency-lockdown",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/federation/lift-lockdown": {
      "post": {
        "summary": "POST /api/v2/admin/super/federation/lift-lockdown",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/federation/whitelist": {
      "get": {
        "summary": "GET /api/v2/admin/super/federation/whitelist",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/admin/super/federation/whitelist",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/federation/whitelist/{tenantId}": {
      "delete": {
        "summary": "DELETE /api/v2/admin/super/federation/whitelist/{tenantId}",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/federation/partnerships": {
      "get": {
        "summary": "GET /api/v2/admin/super/federation/partnerships",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/super/federation/partnerships/{id}/suspend": {
      "post": {
        "summary": "POST /api/v2/admin/super/federation/partnerships/{id}/suspend",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/federation/partnerships/{id}/terminate": {
      "post": {
        "summary": "POST /api/v2/admin/super/federation/partnerships/{id}/terminate",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/super/federation/tenant/{id}/features": {
      "get": {
        "summary": "GET /api/v2/admin/super/federation/tenant/{id}/features",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/super/federation/tenant/{id}/features",
        "tags": [
          "Admin Super"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs": {
      "get": {
        "summary": "GET /api/v2/jobs",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/jobs",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/jobs/saved": {
      "get": {
        "summary": "GET /api/v2/jobs/saved",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/jobs/my-applications": {
      "get": {
        "summary": "GET /api/v2/jobs/my-applications",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/jobs/alerts": {
      "get": {
        "summary": "GET /api/v2/jobs/alerts",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/jobs/alerts",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/jobs/alerts/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/jobs/alerts/{id}",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/alerts/{id}/unsubscribe": {
      "put": {
        "summary": "PUT /api/v2/jobs/alerts/{id}/unsubscribe",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/alerts/{id}/resubscribe": {
      "put": {
        "summary": "PUT /api/v2/jobs/alerts/{id}/resubscribe",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/{id}": {
      "get": {
        "summary": "GET /api/v2/jobs/{id}",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/jobs/{id}",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/jobs/{id}",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/{id}/apply": {
      "post": {
        "summary": "POST /api/v2/jobs/{id}/apply",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/{id}/save": {
      "post": {
        "summary": "POST /api/v2/jobs/{id}/save",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/jobs/{id}/save",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/{id}/match": {
      "get": {
        "summary": "GET /api/v2/jobs/{id}/match",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/{id}/qualified": {
      "get": {
        "summary": "GET /api/v2/jobs/{id}/qualified",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/{id}/applications": {
      "get": {
        "summary": "GET /api/v2/jobs/{id}/applications",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/{id}/analytics": {
      "get": {
        "summary": "GET /api/v2/jobs/{id}/analytics",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/{id}/renew": {
      "post": {
        "summary": "POST /api/v2/jobs/{id}/renew",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/{id}/feature": {
      "post": {
        "summary": "POST /api/v2/jobs/{id}/feature",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/jobs/{id}/feature",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/applications/{id}": {
      "put": {
        "summary": "PUT /api/v2/jobs/applications/{id}",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/jobs/applications/{id}/history": {
      "get": {
        "summary": "GET /api/v2/jobs/applications/{id}/history",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-challenges": {
      "get": {
        "summary": "GET /api/v2/ideation-challenges",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/ideation-challenges",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/ideation-ideas/{id}": {
      "get": {
        "summary": "GET /api/v2/ideation-ideas/{id}",
        "tags": [
          "Ideation-ideas"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/ideation-ideas/{id}",
        "tags": [
          "Ideation-ideas"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/ideation-ideas/{id}",
        "tags": [
          "Ideation-ideas"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-ideas/{id}/draft": {
      "put": {
        "summary": "PUT /api/v2/ideation-ideas/{id}/draft",
        "tags": [
          "Ideation-ideas"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-ideas/{id}/vote": {
      "post": {
        "summary": "POST /api/v2/ideation-ideas/{id}/vote",
        "tags": [
          "Ideation-ideas"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-ideas/{id}/status": {
      "put": {
        "summary": "PUT /api/v2/ideation-ideas/{id}/status",
        "tags": [
          "Ideation-ideas"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-ideas/{id}/comments": {
      "get": {
        "summary": "GET /api/v2/ideation-ideas/{id}/comments",
        "tags": [
          "Ideation-ideas"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/ideation-ideas/{id}/comments",
        "tags": [
          "Ideation-ideas"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-comments/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/ideation-comments/{id}",
        "tags": [
          "Ideation-comments"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-challenges/{id}": {
      "get": {
        "summary": "GET /api/v2/ideation-challenges/{id}",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/ideation-challenges/{id}",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/ideation-challenges/{id}",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-challenges/{id}/status": {
      "put": {
        "summary": "PUT /api/v2/ideation-challenges/{id}/status",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-challenges/{id}/ideas/drafts": {
      "get": {
        "summary": "GET /api/v2/ideation-challenges/{id}/ideas/drafts",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-challenges/{id}/ideas": {
      "get": {
        "summary": "GET /api/v2/ideation-challenges/{id}/ideas",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/ideation-challenges/{id}/ideas",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-challenges/{id}/favorite": {
      "post": {
        "summary": "POST /api/v2/ideation-challenges/{id}/favorite",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-challenges/{id}/duplicate": {
      "post": {
        "summary": "POST /api/v2/ideation-challenges/{id}/duplicate",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-ideas/{id}/convert-to-group": {
      "post": {
        "summary": "POST /api/v2/ideation-ideas/{id}/convert-to-group",
        "tags": [
          "Ideation-ideas"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/goals": {
      "get": {
        "summary": "GET /api/v2/goals",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/goals",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/goals/discover": {
      "get": {
        "summary": "GET /api/v2/goals/discover",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/goals/mentoring": {
      "get": {
        "summary": "GET /api/v2/goals/mentoring",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/goals/templates": {
      "get": {
        "summary": "GET /api/v2/goals/templates",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/goals/templates",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/goals/templates/categories": {
      "get": {
        "summary": "GET /api/v2/goals/templates/categories",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/goals/from-template/{templateId}": {
      "post": {
        "summary": "POST /api/v2/goals/from-template/{templateId}",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/goals/{id}": {
      "get": {
        "summary": "GET /api/v2/goals/{id}",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/goals/{id}",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/goals/{id}",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/goals/{id}/progress": {
      "post": {
        "summary": "POST /api/v2/goals/{id}/progress",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/goals/{id}/buddy": {
      "post": {
        "summary": "POST /api/v2/goals/{id}/buddy",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/goals/{id}/complete": {
      "post": {
        "summary": "POST /api/v2/goals/{id}/complete",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/goals/{id}/checkins": {
      "get": {
        "summary": "GET /api/v2/goals/{id}/checkins",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/goals/{id}/checkins",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/goals/{id}/history": {
      "get": {
        "summary": "GET /api/v2/goals/{id}/history",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/goals/{id}/history/summary": {
      "get": {
        "summary": "GET /api/v2/goals/{id}/history/summary",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/goals/{id}/reminder": {
      "get": {
        "summary": "GET /api/v2/goals/{id}/reminder",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/goals/{id}/reminder",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/goals/{id}/reminder",
        "tags": [
          "Goals"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/gamification/profile": {
      "get": {
        "summary": "GET /api/v2/gamification/profile",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/gamification/badges": {
      "get": {
        "summary": "GET /api/v2/gamification/badges",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/gamification/badges/{key}": {
      "get": {
        "summary": "GET /api/v2/gamification/badges/{key}",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/gamification/leaderboard": {
      "get": {
        "summary": "GET /api/v2/gamification/leaderboard",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/gamification/challenges": {
      "get": {
        "summary": "GET /api/v2/gamification/challenges",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/gamification/collections": {
      "get": {
        "summary": "GET /api/v2/gamification/collections",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/gamification/daily-reward": {
      "get": {
        "summary": "GET /api/v2/gamification/daily-reward",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/gamification/daily-reward",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/gamification/shop": {
      "get": {
        "summary": "GET /api/v2/gamification/shop",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/gamification/shop/purchase": {
      "post": {
        "summary": "POST /api/v2/gamification/shop/purchase",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/gamification/showcase": {
      "put": {
        "summary": "PUT /api/v2/gamification/showcase",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/gamification/seasons": {
      "get": {
        "summary": "GET /api/v2/gamification/seasons",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/gamification/seasons/current": {
      "get": {
        "summary": "GET /api/v2/gamification/seasons/current",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/gamification/challenges/{id}/claim": {
      "post": {
        "summary": "POST /api/v2/gamification/challenges/{id}/claim",
        "tags": [
          "Gamification"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/opportunities": {
      "get": {
        "summary": "GET /api/v2/volunteering/opportunities",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/volunteering/opportunities",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/opportunities/{id}": {
      "get": {
        "summary": "GET /api/v2/volunteering/opportunities/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/volunteering/opportunities/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/volunteering/opportunities/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/opportunities/{id}/shifts": {
      "get": {
        "summary": "GET /api/v2/volunteering/opportunities/{id}/shifts",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/opportunities/{id}/applications": {
      "get": {
        "summary": "GET /api/v2/volunteering/opportunities/{id}/applications",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/opportunities/{id}/apply": {
      "post": {
        "summary": "POST /api/v2/volunteering/opportunities/{id}/apply",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/applications": {
      "get": {
        "summary": "GET /api/v2/volunteering/applications",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/applications/{id}": {
      "put": {
        "summary": "PUT /api/v2/volunteering/applications/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/volunteering/applications/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/shifts": {
      "get": {
        "summary": "GET /api/v2/volunteering/shifts",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/shifts/{id}/signup": {
      "post": {
        "summary": "POST /api/v2/volunteering/shifts/{id}/signup",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/volunteering/shifts/{id}/signup",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/hours": {
      "get": {
        "summary": "GET /api/v2/volunteering/hours",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/volunteering/hours",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/hours/summary": {
      "get": {
        "summary": "GET /api/v2/volunteering/hours/summary",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/hours/{id}/verify": {
      "put": {
        "summary": "PUT /api/v2/volunteering/hours/{id}/verify",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/my-organisations": {
      "get": {
        "summary": "GET /api/v2/volunteering/my-organisations",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/organisations": {
      "get": {
        "summary": "GET /api/v2/volunteering/organisations",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/volunteering/organisations",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/organisations/{id}": {
      "get": {
        "summary": "GET /api/v2/volunteering/organisations/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/reviews": {
      "post": {
        "summary": "POST /api/v2/volunteering/reviews",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/reviews/{type}/{id}": {
      "get": {
        "summary": "GET /api/v2/volunteering/reviews/{type}/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/comments": {
      "get": {
        "summary": "GET /api/v2/comments",
        "tags": [
          "Comments"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/comments",
        "tags": [
          "Comments"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/comments/{id}": {
      "put": {
        "summary": "PUT /api/v2/comments/{id}",
        "tags": [
          "Comments"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/comments/{id}",
        "tags": [
          "Comments"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/comments/{id}/reactions": {
      "post": {
        "summary": "POST /api/v2/comments/{id}/reactions",
        "tags": [
          "Comments"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/blog": {
      "get": {
        "summary": "GET /api/v2/blog",
        "tags": [
          "Blog"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/blog/categories": {
      "get": {
        "summary": "GET /api/v2/blog/categories",
        "tags": [
          "Blog"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/blog/{slug}": {
      "get": {
        "summary": "GET /api/v2/blog/{slug}",
        "tags": [
          "Blog"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/help/faqs": {
      "get": {
        "summary": "GET /api/v2/help/faqs",
        "tags": [
          "Help"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/pages/{slug}": {
      "get": {
        "summary": "GET /api/v2/pages/{slug}",
        "tags": [
          "Pages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/resources": {
      "get": {
        "summary": "GET /api/v2/resources",
        "tags": [
          "Resources"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/resources",
        "tags": [
          "Resources"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/resources/categories": {
      "get": {
        "summary": "GET /api/v2/resources/categories",
        "tags": [
          "Resources"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/resources/categories",
        "tags": [
          "Resources"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/resources/categories/tree": {
      "get": {
        "summary": "GET /api/v2/resources/categories/tree",
        "tags": [
          "Resources"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/resources/categories/{id}": {
      "put": {
        "summary": "PUT /api/v2/resources/categories/{id}",
        "tags": [
          "Resources"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/resources/categories/{id}",
        "tags": [
          "Resources"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/resources/reorder": {
      "put": {
        "summary": "PUT /api/v2/resources/reorder",
        "tags": [
          "Resources"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/kb": {
      "get": {
        "summary": "GET /api/v2/kb",
        "tags": [
          "Kb"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/kb",
        "tags": [
          "Kb"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/kb/search": {
      "get": {
        "summary": "GET /api/v2/kb/search",
        "tags": [
          "Kb"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/kb/slug/{slug}": {
      "get": {
        "summary": "GET /api/v2/kb/slug/{slug}",
        "tags": [
          "Kb"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/kb/{id}": {
      "get": {
        "summary": "GET /api/v2/kb/{id}",
        "tags": [
          "Kb"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/kb/{id}",
        "tags": [
          "Kb"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/kb/{id}",
        "tags": [
          "Kb"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/kb/{id}/feedback": {
      "post": {
        "summary": "POST /api/v2/kb/{id}/feedback",
        "tags": [
          "Kb"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/events": {
      "get": {
        "summary": "GET /api/v2/events",
        "description": "Maintained Events operation served by EventsController@index.",
        "operationId": "Events_index",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@index"
      },
      "post": {
        "summary": "POST /api/v2/events",
        "description": "Maintained Events operation served by EventsController@store.",
        "operationId": "Events_store",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@store"
      }
    },
    "/api/v2/events/recurrence-capabilities": {
      "get": {
        "summary": "Get recurrence capabilities",
        "description": "Returns the authenticated tenant's allowlisted runtime recurrence contract. Advanced capabilities fail closed when rollout flags, configuration, or required schema are unavailable; no internal diagnostics are exposed.",
        "operationId": "EventRecurrenceCapability_show",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Current fail-safe recurrence capability contract",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRecurrenceCapabilitiesEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant or Events feature denied"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRecurrenceCapabilityController@show"
      }
    },
    "/api/v2/events/nearby": {
      "get": {
        "summary": "GET /api/v2/events/nearby",
        "description": "Maintained Events operation served by EventsController@nearby.",
        "operationId": "Events_nearby",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@nearby"
      }
    },
    "/api/v2/events/{id}": {
      "get": {
        "summary": "GET /api/v2/events/{id}",
        "description": "Maintained Events operation served by EventsController@show.",
        "operationId": "Events_show",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Canonical event detail when X-Events-Contract: 2 is negotiated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventCanonicalDetailEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@show",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/events/{id}",
        "description": "Maintained Events operation served by EventsController@update.",
        "operationId": "Events_update",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/events/{id}",
        "description": "Maintained Events operation served by EventsController@destroy.",
        "operationId": "Events_destroy",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@destroy",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/rsvp": {
      "post": {
        "summary": "POST /api/v2/events/{id}/rsvp",
        "description": "Maintained Events operation served by EventsController@rsvp.",
        "operationId": "Events_rsvp",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@rsvp",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/events/{id}/rsvp",
        "description": "Maintained Events operation served by EventsController@removeRsvp.",
        "operationId": "Events_removeRsvp",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@removeRsvp",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/attendees": {
      "get": {
        "summary": "GET /api/v2/events/{id}/attendees",
        "description": "Maintained Events operation served by EventsController@attendees.",
        "operationId": "Events_attendees",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@attendees",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/attendees/{attendeeId}/check-in": {
      "post": {
        "summary": "POST /api/v2/events/{id}/attendees/{attendeeId}/check-in",
        "description": "Maintained Events operation served by EventsController@checkIn.",
        "operationId": "Events_checkIn",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@checkIn",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "attendeeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/image": {
      "post": {
        "summary": "POST /api/v2/events/{id}/image",
        "description": "Maintained Events operation served by EventsController@uploadImage.",
        "operationId": "Events_uploadImage",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@uploadImage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/exchanges/config": {
      "get": {
        "summary": "GET /api/v2/exchanges/config",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/exchanges/check": {
      "get": {
        "summary": "GET /api/v2/exchanges/check",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/exchanges": {
      "get": {
        "summary": "GET /api/v2/exchanges",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/exchanges",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/exchanges/{id}": {
      "get": {
        "summary": "GET /api/v2/exchanges/{id}",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/exchanges/{id}",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/exchanges/{id}/accept": {
      "post": {
        "summary": "POST /api/v2/exchanges/{id}/accept",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/exchanges/{id}/decline": {
      "post": {
        "summary": "POST /api/v2/exchanges/{id}/decline",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/exchanges/{id}/start": {
      "post": {
        "summary": "POST /api/v2/exchanges/{id}/start",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/exchanges/{id}/complete": {
      "post": {
        "summary": "POST /api/v2/exchanges/{id}/complete",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/exchanges/{id}/confirm": {
      "post": {
        "summary": "POST /api/v2/exchanges/{id}/confirm",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups": {
      "get": {
        "summary": "GET /api/v2/groups",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/groups",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/groups/recommendations": {
      "get": {
        "summary": "GET /api/v2/groups/recommendations",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/groups/recommendations/track": {
      "post": {
        "summary": "POST /api/v2/groups/recommendations/track",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/groups/recommendations/metrics": {
      "get": {
        "summary": "GET /api/v2/groups/recommendations/metrics",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/groups/{id}": {
      "get": {
        "summary": "GET /api/v2/groups/{id}",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/groups/{id}",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/groups/{id}",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/similar": {
      "get": {
        "summary": "GET /api/v2/groups/{id}/similar",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/join": {
      "post": {
        "summary": "POST /api/v2/groups/{id}/join",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/membership": {
      "delete": {
        "summary": "DELETE /api/v2/groups/{id}/membership",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/members": {
      "get": {
        "summary": "GET /api/v2/groups/{id}/members",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/members/{userId}": {
      "put": {
        "summary": "PUT /api/v2/groups/{id}/members/{userId}",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/groups/{id}/members/{userId}",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/requests": {
      "get": {
        "summary": "GET /api/v2/groups/{id}/requests",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/requests/{userId}": {
      "post": {
        "summary": "POST /api/v2/groups/{id}/requests/{userId}",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/discussions": {
      "get": {
        "summary": "GET /api/v2/groups/{id}/discussions",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/groups/{id}/discussions",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/discussions/{discussionId}": {
      "get": {
        "summary": "GET /api/v2/groups/{id}/discussions/{discussionId}",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "discussionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/discussions/{discussionId}/messages": {
      "post": {
        "summary": "POST /api/v2/groups/{id}/discussions/{discussionId}/messages",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "discussionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/image": {
      "post": {
        "summary": "POST /api/v2/groups/{id}/image",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/announcements": {
      "get": {
        "summary": "GET /api/v2/groups/{id}/announcements",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/groups/{id}/announcements",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/announcements/{announcementId}": {
      "put": {
        "summary": "PUT /api/v2/groups/{id}/announcements/{announcementId}",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "announcementId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/groups/{id}/announcements/{announcementId}",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "announcementId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/connections": {
      "get": {
        "summary": "GET /api/v2/connections",
        "tags": [
          "Connections"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/connections/pending": {
      "get": {
        "summary": "GET /api/v2/connections/pending",
        "tags": [
          "Connections"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/connections/status/me": {
      "get": {
        "summary": "GET /api/v2/connections/status/me",
        "tags": [
          "Connections"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/connections/status/{userId}": {
      "get": {
        "summary": "GET /api/v2/connections/status/{userId}",
        "tags": [
          "Connections"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/connections/request": {
      "post": {
        "summary": "POST /api/v2/connections/request",
        "tags": [
          "Connections"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/connections/{id}/accept": {
      "post": {
        "summary": "POST /api/v2/connections/{id}/accept",
        "tags": [
          "Connections"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/connections/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/connections/{id}",
        "tags": [
          "Connections"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/legal/versions/compare": {
      "get": {
        "summary": "GET /api/v2/legal/versions/compare",
        "tags": [
          "Legal"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/legal/version/{versionId}": {
      "get": {
        "summary": "GET /api/v2/legal/version/{versionId}",
        "tags": [
          "Legal"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/legal/{type}/versions": {
      "get": {
        "summary": "GET /api/v2/legal/{type}/versions",
        "tags": [
          "Legal"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/legal/acceptance/status": {
      "get": {
        "summary": "GET /api/v2/legal/acceptance/status",
        "tags": [
          "Legal"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/legal/acceptance/accept-all": {
      "post": {
        "summary": "POST /api/v2/legal/acceptance/accept-all",
        "tags": [
          "Legal"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/legal/{type}": {
      "get": {
        "summary": "GET /api/v2/legal/{type}",
        "tags": [
          "Legal"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/categories": {
      "get": {
        "summary": "GET /api/v2/categories",
        "tags": [
          "Categories"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/listings": {
      "get": {
        "summary": "GET /api/v2/listings",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/listings",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/listings/nearby": {
      "get": {
        "summary": "GET /api/v2/listings/nearby",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/listings/saved": {
      "get": {
        "summary": "GET /api/v2/listings/saved",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/listings/featured": {
      "get": {
        "summary": "GET /api/v2/listings/featured",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/listings/tags/popular": {
      "get": {
        "summary": "GET /api/v2/listings/tags/popular",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/listings/tags/autocomplete": {
      "get": {
        "summary": "GET /api/v2/listings/tags/autocomplete",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/listings/{id}": {
      "get": {
        "summary": "GET /api/v2/listings/{id}",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/listings/{id}",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/listings/{id}",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/listings/{id}/save": {
      "post": {
        "summary": "POST /api/v2/listings/{id}/save",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/listings/{id}/save",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/listings/{id}/image": {
      "post": {
        "summary": "POST /api/v2/listings/{id}/image",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/listings/{id}/image",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/messages": {
      "get": {
        "summary": "GET /api/v2/messages",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/messages",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/messages/unread-count": {
      "get": {
        "summary": "GET /api/v2/messages/unread-count",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/messages/restriction-status": {
      "get": {
        "summary": "GET /api/v2/messages/restriction-status",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/messages/typing": {
      "post": {
        "summary": "POST /api/v2/messages/typing",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/messages/voice": {
      "post": {
        "summary": "Upload and send a private voice message",
        "description": "Creates a direct voice message in one multipart request. The stored recording is private and the returned media URL is participant-authorized.",
        "operationId": "Messages_sendVoice",
        "tags": [
          "Messages"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "recipient_id",
                  "voice_message"
                ],
                "properties": {
                  "recipient_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "voice_message": {
                    "type": "string",
                    "format": "binary",
                    "description": "A WebM, OGG, MP3, WAV, M4A, MP4, or AAC recording up to 10 MiB."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Voice message created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageVoiceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing, invalid, unsupported, or oversized recording",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Messaging policy, block, or safeguarding restriction denied the send"
          },
          "404": {
            "description": "Recipient not found in the current tenant"
          },
          "422": {
            "description": "Message could not be created in its current state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Voice-message rate limit exceeded"
          },
          "503": {
            "description": "Required safeguarding policy is unavailable"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\MessagesController@sendVoice"
      }
    },
    "/api/v2/messages/{message}/attachments/{attachment}": {
      "get": {
        "summary": "Download a private message attachment",
        "description": "Returns an attachment only to the sender, receiver, or an authorized participant in the message conversation. The response uses the stored MIME type and private no-store headers.",
        "operationId": "Messages_getAttachment",
        "tags": [
          "Messages"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "message",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "attachment",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Private attachment bytes; Content-Type is the validated stored MIME type",
            "headers": {
              "Cache-Control": {
                "description": "Prevents shared or local caching of private message media.",
                "schema": {
                  "type": "string",
                  "example": "private, no-store, max-age=0"
                }
              },
              "Pragma": {
                "description": "Legacy cache prevention.",
                "schema": {
                  "type": "string",
                  "example": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "description": "Disables MIME sniffing.",
                "schema": {
                  "type": "string",
                  "example": "nosniff"
                }
              },
              "Content-Security-Policy": {
                "description": "Sandboxes directly opened media.",
                "schema": {
                  "type": "string",
                  "example": "default-src 'none'; sandbox"
                }
              },
              "Cross-Origin-Resource-Policy": {
                "description": "Restricts embedding to the same site.",
                "schema": {
                  "type": "string",
                  "example": "same-site"
                }
              }
            },
            "content": {
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/MessageMediaBinary"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Authenticated member is not a conversation participant"
          },
          "404": {
            "description": "Message, attachment, or private file not found"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\MessageMediaController@attachment"
      }
    },
    "/api/v2/messages/{message}/voice": {
      "get": {
        "summary": "Stream a private voice-message recording",
        "description": "Returns a voice recording only to the sender, receiver, or an authorized participant in the message conversation. The response uses the detected MIME type and private no-store headers.",
        "operationId": "Messages_getVoice",
        "tags": [
          "Messages"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "message",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Private recording bytes; Content-Type is detected from the stored file",
            "headers": {
              "Cache-Control": {
                "description": "Prevents shared or local caching of private message media.",
                "schema": {
                  "type": "string",
                  "example": "private, no-store, max-age=0"
                }
              },
              "Pragma": {
                "description": "Legacy cache prevention.",
                "schema": {
                  "type": "string",
                  "example": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "description": "Disables MIME sniffing.",
                "schema": {
                  "type": "string",
                  "example": "nosniff"
                }
              },
              "Content-Security-Policy": {
                "description": "Sandboxes directly opened media.",
                "schema": {
                  "type": "string",
                  "example": "default-src 'none'; sandbox"
                }
              },
              "Cross-Origin-Resource-Policy": {
                "description": "Restricts embedding to the same site.",
                "schema": {
                  "type": "string",
                  "example": "same-site"
                }
              }
            },
            "content": {
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/MessageMediaBinary"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Authenticated member is not a conversation participant"
          },
          "404": {
            "description": "Message or private recording not found"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\MessageMediaController@voice"
      }
    },
    "/api/v2/messages/conversations/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/messages/conversations/{id}",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/messages/{id}": {
      "get": {
        "summary": "GET /api/v2/messages/{id}",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/messages/{id}",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/messages/{id}",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/messages/{id}/read": {
      "put": {
        "summary": "PUT /api/v2/messages/{id}/read",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/messages/{id}/reactions": {
      "post": {
        "summary": "POST /api/v2/messages/{id}/reactions",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/conversations/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/conversations/{id}",
        "tags": [
          "Conversations"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/messages/conversations/{id}/restore": {
      "post": {
        "summary": "POST /api/v2/messages/conversations/{id}/restore",
        "tags": [
          "Messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/csrf-token": {
      "get": {
        "summary": "GET /api/v2/csrf-token",
        "tags": [
          "Csrf-token"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/auth/register": {
      "post": {
        "summary": "POST /api/v2/auth/register",
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/auth/2fa/status": {
      "get": {
        "summary": "GET /api/v2/auth/2fa/status",
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/auth/2fa/setup": {
      "post": {
        "summary": "POST /api/v2/auth/2fa/setup",
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/auth/2fa/verify": {
      "post": {
        "summary": "POST /api/v2/auth/2fa/verify",
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/auth/2fa/disable": {
      "post": {
        "summary": "POST /api/v2/auth/2fa/disable",
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/contact": {
      "post": {
        "summary": "POST /api/v2/contact",
        "tags": [
          "Contact"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/newsletter/unsubscribe": {
      "post": {
        "summary": "POST /api/v2/newsletter/unsubscribe",
        "tags": [
          "Newsletter"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/community-analytics": {
      "get": {
        "summary": "GET /api/v2/admin/community-analytics",
        "tags": [
          "Admin Community-analytics"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/community-analytics/export": {
      "get": {
        "summary": "GET /api/v2/admin/community-analytics/export",
        "tags": [
          "Admin Community-analytics"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/community-analytics/geography": {
      "get": {
        "summary": "GET /api/v2/admin/community-analytics/geography",
        "tags": [
          "Admin Community-analytics"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/impact-report": {
      "get": {
        "summary": "GET /api/v2/admin/impact-report",
        "tags": [
          "Admin Impact-report"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/impact-report/config": {
      "put": {
        "summary": "PUT /api/v2/admin/impact-report/config",
        "tags": [
          "Admin Impact-report"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/onboarding/status": {
      "get": {
        "summary": "GET /api/v2/onboarding/status",
        "tags": [
          "Onboarding"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/onboarding/categories": {
      "get": {
        "summary": "GET /api/v2/onboarding/categories",
        "tags": [
          "Onboarding"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/onboarding/complete": {
      "post": {
        "summary": "POST /api/v2/onboarding/complete",
        "tags": [
          "Onboarding"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/group-exchanges": {
      "get": {
        "summary": "GET /api/v2/group-exchanges",
        "tags": [
          "Group-exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/group-exchanges",
        "tags": [
          "Group-exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/group-exchanges/{id}": {
      "get": {
        "summary": "GET /api/v2/group-exchanges/{id}",
        "tags": [
          "Group-exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/group-exchanges/{id}",
        "tags": [
          "Group-exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/group-exchanges/{id}",
        "tags": [
          "Group-exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/group-exchanges/{id}/participants": {
      "post": {
        "summary": "POST /api/v2/group-exchanges/{id}/participants",
        "tags": [
          "Group-exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/group-exchanges/{id}/participants/{userId}": {
      "delete": {
        "summary": "DELETE /api/v2/group-exchanges/{id}/participants/{userId}",
        "tags": [
          "Group-exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/group-exchanges/{id}/confirm": {
      "post": {
        "summary": "POST /api/v2/group-exchanges/{id}/confirm",
        "tags": [
          "Group-exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/group-exchanges/{id}/complete": {
      "post": {
        "summary": "POST /api/v2/group-exchanges/{id}/complete",
        "tags": [
          "Group-exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/wallet/statement": {
      "get": {
        "summary": "GET /api/v2/wallet/statement",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/categories": {
      "get": {
        "summary": "GET /api/v2/wallet/categories",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/wallet/categories",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/categories/{id}": {
      "put": {
        "summary": "PUT /api/v2/wallet/categories/{id}",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/wallet/categories/{id}",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/wallet/community-fund": {
      "get": {
        "summary": "GET /api/v2/wallet/community-fund",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/community-fund/transactions": {
      "get": {
        "summary": "GET /api/v2/wallet/community-fund/transactions",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/community-fund/deposit": {
      "post": {
        "summary": "POST /api/v2/wallet/community-fund/deposit",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/community-fund/withdraw": {
      "post": {
        "summary": "POST /api/v2/wallet/community-fund/withdraw",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/community-fund/donate": {
      "post": {
        "summary": "POST /api/v2/wallet/community-fund/donate",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/donate": {
      "post": {
        "summary": "POST /api/v2/wallet/donate",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/donations": {
      "get": {
        "summary": "GET /api/v2/wallet/donations",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/starting-balance": {
      "get": {
        "summary": "GET /api/v2/wallet/starting-balance",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/wallet/starting-balance",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/exchanges/{id}/rate": {
      "post": {
        "summary": "POST /api/v2/exchanges/{id}/rate",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/exchanges/{id}/ratings": {
      "get": {
        "summary": "GET /api/v2/exchanges/{id}/ratings",
        "tags": [
          "Exchanges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/users/{id}/rating": {
      "get": {
        "summary": "GET /api/v2/users/{id}/rating",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/events/recurring": {
      "post": {
        "summary": "POST /api/v2/events/recurring",
        "description": "Maintained Events operation served by EventsController@createRecurring.",
        "operationId": "Events_createRecurring",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@createRecurring"
      }
    },
    "/api/v2/events/series": {
      "get": {
        "summary": "GET /api/v2/events/series",
        "description": "Maintained Events operation served by EventsController@listSeries.",
        "operationId": "Events_listSeries",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@listSeries"
      },
      "post": {
        "summary": "POST /api/v2/events/series",
        "description": "Maintained Events operation served by EventsController@createSeries.",
        "operationId": "Events_createSeries",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@createSeries"
      }
    },
    "/api/v2/events/series/{seriesId}": {
      "get": {
        "summary": "GET /api/v2/events/series/{seriesId}",
        "description": "Maintained Events operation served by EventsController@showSeries.",
        "operationId": "Events_showSeries",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@showSeries",
        "parameters": [
          {
            "name": "seriesId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/recurring": {
      "put": {
        "summary": "PUT /api/v2/events/{id}/recurring",
        "description": "Maintained Events operation served by EventsController@updateRecurring.",
        "operationId": "Events_updateRecurring",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@updateRecurring",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/cancel": {
      "post": {
        "summary": "POST /api/v2/events/{id}/cancel",
        "description": "Maintained Events operation served by EventsController@cancel.",
        "operationId": "Events_cancel",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@cancel",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/waitlist": {
      "post": {
        "summary": "POST /api/v2/events/{id}/waitlist",
        "description": "Maintained Events operation served by EventsController@joinWaitlist.",
        "operationId": "Events_joinWaitlist",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@joinWaitlist",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/events/{id}/waitlist",
        "description": "Maintained Events operation served by EventsController@leaveWaitlist.",
        "operationId": "Events_leaveWaitlist",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@leaveWaitlist",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "get": {
        "summary": "GET /api/v2/events/{id}/waitlist",
        "description": "Maintained Events operation served by EventsController@waitlist.",
        "operationId": "Events_waitlist",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@waitlist",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/reminders": {
      "get": {
        "summary": "GET /api/v2/events/{id}/reminders",
        "description": "Maintained Events operation served by EventsController@getReminders.",
        "operationId": "Events_getReminders",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@getReminders",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/events/{id}/reminders",
        "description": "Maintained Events operation served by EventsController@updateReminders.",
        "operationId": "Events_updateReminders",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@updateReminders",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/events/{id}/reminders",
        "description": "Maintained Events operation served by EventsController@deleteReminders.",
        "operationId": "Events_deleteReminders",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@deleteReminders",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/attendance": {
      "get": {
        "summary": "GET /api/v2/events/{id}/attendance",
        "description": "Maintained Events operation served by EventsController@getAttendance.",
        "operationId": "Events_getAttendance",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@getAttendance",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/events/{id}/attendance",
        "description": "Maintained Events operation served by EventsController@markAttendance.",
        "operationId": "Events_markAttendance",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@markAttendance",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/attendance/bulk": {
      "post": {
        "summary": "POST /api/v2/events/{id}/attendance/bulk",
        "description": "Maintained Events operation served by EventsController@bulkMarkAttendance.",
        "operationId": "Events_bulkMarkAttendance",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@bulkMarkAttendance",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/series": {
      "post": {
        "summary": "POST /api/v2/events/{id}/series",
        "description": "Maintained Events operation served by EventsController@linkToSeries.",
        "operationId": "Events_linkToSeries",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@linkToSeries",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/recommended-shifts": {
      "get": {
        "summary": "GET /api/v2/volunteering/recommended-shifts",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/certificates": {
      "get": {
        "summary": "GET /api/v2/volunteering/certificates",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/volunteering/certificates",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/certificates/verify/{code}": {
      "get": {
        "summary": "GET /api/v2/volunteering/certificates/verify/{code}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/certificates/{code}/html": {
      "get": {
        "summary": "GET /api/v2/volunteering/certificates/{code}/html",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/credentials": {
      "get": {
        "summary": "GET /api/v2/volunteering/credentials",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/volunteering/credentials",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/credentials/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/volunteering/credentials/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/emergency-alerts": {
      "get": {
        "summary": "GET /api/v2/volunteering/emergency-alerts",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/volunteering/emergency-alerts",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/emergency-alerts/{id}": {
      "put": {
        "summary": "PUT /api/v2/volunteering/emergency-alerts/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/volunteering/emergency-alerts/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/wellbeing": {
      "get": {
        "summary": "GET /api/v2/volunteering/wellbeing",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/wellbeing/checkin": {
      "post": {
        "summary": "POST /api/v2/volunteering/wellbeing/checkin",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/wellbeing/my-status": {
      "get": {
        "summary": "GET /api/v2/volunteering/wellbeing/my-status",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/swaps": {
      "get": {
        "summary": "GET /api/v2/volunteering/swaps",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/volunteering/swaps",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/swaps/{id}": {
      "put": {
        "summary": "PUT /api/v2/volunteering/swaps/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/volunteering/swaps/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/my-waitlists": {
      "get": {
        "summary": "GET /api/v2/volunteering/my-waitlists",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/shifts/{id}/waitlist": {
      "post": {
        "summary": "POST /api/v2/volunteering/shifts/{id}/waitlist",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/volunteering/shifts/{id}/waitlist",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/shifts/{id}/waitlist/promote": {
      "post": {
        "summary": "POST /api/v2/volunteering/shifts/{id}/waitlist/promote",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/group-reservations": {
      "get": {
        "summary": "GET /api/v2/volunteering/group-reservations",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/volunteering/shifts/{id}/group-reserve": {
      "post": {
        "summary": "POST /api/v2/volunteering/shifts/{id}/group-reserve",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/group-reservations/{id}/members": {
      "post": {
        "summary": "POST /api/v2/volunteering/group-reservations/{id}/members",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/group-reservations/{id}/members/{userId}": {
      "delete": {
        "summary": "DELETE /api/v2/volunteering/group-reservations/{id}/members/{userId}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/group-reservations/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/volunteering/group-reservations/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/shifts/{id}/checkin": {
      "get": {
        "summary": "GET /api/v2/volunteering/shifts/{id}/checkin",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/checkin/verify/{token}": {
      "post": {
        "summary": "POST /api/v2/volunteering/checkin/verify/{token}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/checkin/checkout/{token}": {
      "post": {
        "summary": "POST /api/v2/volunteering/checkin/checkout/{token}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/shifts/{id}/checkins": {
      "get": {
        "summary": "GET /api/v2/volunteering/shifts/{id}/checkins",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/opportunities/{id}/recurring-patterns": {
      "get": {
        "summary": "GET /api/v2/volunteering/opportunities/{id}/recurring-patterns",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/volunteering/opportunities/{id}/recurring-patterns",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/volunteering/recurring-patterns/{id}": {
      "put": {
        "summary": "PUT /api/v2/volunteering/recurring-patterns/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/volunteering/recurring-patterns/{id}",
        "tags": [
          "Volunteering"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-categories": {
      "get": {
        "summary": "GET /api/v2/ideation-categories",
        "tags": [
          "Ideation-categories"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/ideation-categories",
        "tags": [
          "Ideation-categories"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/ideation-categories/{id}": {
      "put": {
        "summary": "PUT /api/v2/ideation-categories/{id}",
        "tags": [
          "Ideation-categories"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/ideation-categories/{id}",
        "tags": [
          "Ideation-categories"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-tags/popular": {
      "get": {
        "summary": "GET /api/v2/ideation-tags/popular",
        "tags": [
          "Ideation-tags"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/ideation-tags": {
      "get": {
        "summary": "GET /api/v2/ideation-tags",
        "tags": [
          "Ideation-tags"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/ideation-tags",
        "tags": [
          "Ideation-tags"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/ideation-tags/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/ideation-tags/{id}",
        "tags": [
          "Ideation-tags"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-ideas/{id}/media": {
      "get": {
        "summary": "GET /api/v2/ideation-ideas/{id}/media",
        "tags": [
          "Ideation-ideas"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/ideation-ideas/{id}/media",
        "tags": [
          "Ideation-ideas"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-media/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/ideation-media/{id}",
        "tags": [
          "Ideation-media"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-campaigns": {
      "get": {
        "summary": "GET /api/v2/ideation-campaigns",
        "tags": [
          "Ideation-campaigns"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/ideation-campaigns",
        "tags": [
          "Ideation-campaigns"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/ideation-campaigns/{id}": {
      "get": {
        "summary": "GET /api/v2/ideation-campaigns/{id}",
        "tags": [
          "Ideation-campaigns"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/ideation-campaigns/{id}",
        "tags": [
          "Ideation-campaigns"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/ideation-campaigns/{id}",
        "tags": [
          "Ideation-campaigns"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-campaigns/{id}/challenges": {
      "post": {
        "summary": "POST /api/v2/ideation-campaigns/{id}/challenges",
        "tags": [
          "Ideation-campaigns"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-campaigns/{id}/challenges/{challengeId}": {
      "delete": {
        "summary": "DELETE /api/v2/ideation-campaigns/{id}/challenges/{challengeId}",
        "tags": [
          "Ideation-campaigns"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "challengeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-templates": {
      "get": {
        "summary": "GET /api/v2/ideation-templates",
        "tags": [
          "Ideation-templates"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/ideation-templates",
        "tags": [
          "Ideation-templates"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/ideation-templates/{id}": {
      "get": {
        "summary": "GET /api/v2/ideation-templates/{id}",
        "tags": [
          "Ideation-templates"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/ideation-templates/{id}",
        "tags": [
          "Ideation-templates"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/ideation-templates/{id}",
        "tags": [
          "Ideation-templates"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-templates/{id}/data": {
      "get": {
        "summary": "GET /api/v2/ideation-templates/{id}/data",
        "tags": [
          "Ideation-templates"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-challenges/{id}/outcome": {
      "get": {
        "summary": "GET /api/v2/ideation-challenges/{id}/outcome",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/ideation-challenges/{id}/outcome",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/ideation-outcomes/dashboard": {
      "get": {
        "summary": "GET /api/v2/ideation-outcomes/dashboard",
        "tags": [
          "Ideation-outcomes"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/ideation-challenges/{id}/team-links": {
      "get": {
        "summary": "GET /api/v2/ideation-challenges/{id}/team-links",
        "tags": [
          "Ideation-challenges"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/chatrooms": {
      "get": {
        "summary": "GET /api/v2/groups/{id}/chatrooms",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/groups/{id}/chatrooms",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/group-chatrooms/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/group-chatrooms/{id}",
        "tags": [
          "Group-chatrooms"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/group-chatrooms/{id}/messages": {
      "get": {
        "summary": "GET /api/v2/group-chatrooms/{id}/messages",
        "tags": [
          "Group-chatrooms"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/group-chatrooms/{id}/messages",
        "tags": [
          "Group-chatrooms"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/group-chatroom-messages/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/group-chatroom-messages/{id}",
        "tags": [
          "Group-chatroom-messages"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/tasks": {
      "get": {
        "summary": "GET /api/v2/groups/{id}/tasks",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/groups/{id}/tasks",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/team-tasks/{id}": {
      "get": {
        "summary": "GET /api/v2/team-tasks/{id}",
        "tags": [
          "Team-tasks"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/team-tasks/{id}",
        "tags": [
          "Team-tasks"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/team-tasks/{id}",
        "tags": [
          "Team-tasks"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/task-stats": {
      "get": {
        "summary": "GET /api/v2/groups/{id}/task-stats",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/groups/{id}/documents": {
      "get": {
        "summary": "GET /api/v2/groups/{id}/documents",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/groups/{id}/documents",
        "tags": [
          "Groups"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/team-documents/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/team-documents/{id}",
        "tags": [
          "Team-documents"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/members/inactive": {
      "get": {
        "summary": "GET /api/v2/admin/members/inactive",
        "tags": [
          "Admin Members"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/members/inactive/detect": {
      "post": {
        "summary": "POST /api/v2/admin/members/inactive/detect",
        "tags": [
          "Admin Members"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/members/inactive/notify": {
      "post": {
        "summary": "POST /api/v2/admin/members/inactive/notify",
        "tags": [
          "Admin Members"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/moderation/queue": {
      "get": {
        "summary": "GET /api/v2/admin/moderation/queue",
        "tags": [
          "Admin Moderation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/moderation/{id}/review": {
      "post": {
        "summary": "POST /api/v2/admin/moderation/{id}/review",
        "tags": [
          "Admin Moderation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/moderation/stats": {
      "get": {
        "summary": "GET /api/v2/admin/moderation/stats",
        "tags": [
          "Admin Moderation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/moderation/settings": {
      "get": {
        "summary": "GET /api/v2/admin/moderation/settings",
        "tags": [
          "Admin Moderation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/admin/moderation/settings",
        "tags": [
          "Admin Moderation"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/listings/{id}/renew": {
      "post": {
        "summary": "POST /api/v2/listings/{id}/renew",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/listings/{id}/analytics": {
      "get": {
        "summary": "GET /api/v2/listings/{id}/analytics",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/listings/{id}/tags": {
      "put": {
        "summary": "PUT /api/v2/listings/{id}/tags",
        "tags": [
          "Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/listings/{id}/feature": {
      "post": {
        "summary": "POST /api/v2/admin/listings/{id}/feature",
        "tags": [
          "Admin Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/admin/listings/{id}/feature",
        "tags": [
          "Admin Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/listings/{id}/reject": {
      "post": {
        "summary": "POST /api/v2/admin/listings/{id}/reject",
        "tags": [
          "Admin Listings"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/search/saved": {
      "get": {
        "summary": "GET /api/v2/search/saved",
        "tags": [
          "Search"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/search/saved",
        "tags": [
          "Search"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/search/saved/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/search/saved/{id}",
        "tags": [
          "Search"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/search/saved/{id}/run": {
      "post": {
        "summary": "POST /api/v2/search/saved/{id}/run",
        "tags": [
          "Search"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/search/trending": {
      "get": {
        "summary": "GET /api/v2/search/trending",
        "tags": [
          "Search"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/search/analytics": {
      "get": {
        "summary": "GET /api/v2/admin/search/analytics",
        "tags": [
          "Admin Search"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/search/trending": {
      "get": {
        "summary": "GET /api/v2/admin/search/trending",
        "tags": [
          "Admin Search"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/admin/search/zero-results": {
      "get": {
        "summary": "GET /api/v2/admin/search/zero-results",
        "tags": [
          "Admin Search"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/matches/all": {
      "get": {
        "summary": "GET /api/v2/matches/all",
        "tags": [
          "Matches"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/matches/{id}/dismiss": {
      "post": {
        "summary": "POST /api/v2/matches/{id}/dismiss",
        "tags": [
          "Matches"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/wallet/balance": {
      "get": {
        "summary": "GET /api/v2/wallet/balance",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/transactions": {
      "get": {
        "summary": "GET /api/v2/wallet/transactions",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/transactions/{id}": {
      "get": {
        "summary": "GET /api/v2/wallet/transactions/{id}",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/wallet/transactions/{id}",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/wallet/transfer": {
      "post": {
        "summary": "POST /api/v2/wallet/transfer",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/user-search": {
      "get": {
        "summary": "GET /api/v2/wallet/user-search",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/wallet/pending-count": {
      "get": {
        "summary": "GET /api/v2/wallet/pending-count",
        "tags": [
          "Wallet"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/feed": {
      "get": {
        "summary": "GET /api/v2/feed",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/feed/posts": {
      "post": {
        "summary": "POST /api/v2/feed/posts",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/feed/like": {
      "post": {
        "summary": "POST /api/v2/feed/like",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/feed/polls": {
      "post": {
        "summary": "POST /api/v2/feed/polls",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/feed/polls/{id}": {
      "get": {
        "summary": "GET /api/v2/feed/polls/{id}",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/feed/polls/{id}/vote": {
      "post": {
        "summary": "POST /api/v2/feed/polls/{id}/vote",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/feed/posts/{id}/hide": {
      "post": {
        "summary": "POST /api/v2/feed/posts/{id}/hide",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/feed/posts/{id}/report": {
      "post": {
        "summary": "POST /api/v2/feed/posts/{id}/report",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/feed/posts/{id}/delete": {
      "post": {
        "summary": "POST /api/v2/feed/posts/{id}/delete",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/feed/users/{id}/mute": {
      "post": {
        "summary": "POST /api/v2/feed/users/{id}/mute",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/feed/posts/{id}/share": {
      "post": {
        "summary": "POST /api/v2/feed/posts/{id}/share",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/feed/posts/{id}/share",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/feed/posts/{id}/sharers": {
      "get": {
        "summary": "GET /api/v2/feed/posts/{id}/sharers",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/feed/hashtags/trending": {
      "get": {
        "summary": "GET /api/v2/feed/hashtags/trending",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/feed/hashtags/search": {
      "get": {
        "summary": "GET /api/v2/feed/hashtags/search",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/feed/hashtags/{tag}": {
      "get": {
        "summary": "GET /api/v2/feed/hashtags/{tag}",
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "tag",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/realtime/config": {
      "get": {
        "summary": "GET /api/v2/realtime/config",
        "tags": [
          "Realtime"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/notifications": {
      "get": {
        "summary": "GET /api/v2/notifications",
        "tags": [
          "Notifications"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "delete": {
        "summary": "DELETE /api/v2/notifications",
        "tags": [
          "Notifications"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/notifications/counts": {
      "get": {
        "summary": "GET /api/v2/notifications/counts",
        "tags": [
          "Notifications"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/notifications/read-all": {
      "post": {
        "summary": "POST /api/v2/notifications/read-all",
        "tags": [
          "Notifications"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/notifications/{id}": {
      "get": {
        "summary": "GET /api/v2/notifications/{id}",
        "tags": [
          "Notifications"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/notifications/{id}",
        "tags": [
          "Notifications"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/notifications/{id}/read": {
      "post": {
        "summary": "POST /api/v2/notifications/{id}/read",
        "tags": [
          "Notifications"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/reviews/pending": {
      "get": {
        "summary": "GET /api/v2/reviews/pending",
        "tags": [
          "Reviews"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/reviews/user/{userId}": {
      "get": {
        "summary": "GET /api/v2/reviews/user/{userId}",
        "tags": [
          "Reviews"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/users/{userId}/reviews": {
      "get": {
        "summary": "GET /api/v2/users/{userId}/reviews",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/reviews/user/{userId}/stats": {
      "get": {
        "summary": "GET /api/v2/reviews/user/{userId}/stats",
        "tags": [
          "Reviews"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/reviews/user/{userId}/trust": {
      "get": {
        "summary": "GET /api/v2/reviews/user/{userId}/trust",
        "tags": [
          "Reviews"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/reviews/{id}": {
      "get": {
        "summary": "GET /api/v2/reviews/{id}",
        "tags": [
          "Reviews"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/reviews/{id}",
        "tags": [
          "Reviews"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/reviews": {
      "post": {
        "summary": "POST /api/v2/reviews",
        "tags": [
          "Reviews"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/search": {
      "get": {
        "summary": "GET /api/v2/search",
        "tags": [
          "Search"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/search/suggestions": {
      "get": {
        "summary": "GET /api/v2/search/suggestions",
        "tags": [
          "Search"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/metrics": {
      "post": {
        "summary": "POST /api/v2/metrics",
        "tags": [
          "Metrics"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/metrics/summary": {
      "get": {
        "summary": "GET /api/v2/metrics/summary",
        "tags": [
          "Metrics"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/polls": {
      "get": {
        "summary": "GET /api/v2/polls",
        "tags": [
          "Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/polls",
        "tags": [
          "Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/polls/categories": {
      "get": {
        "summary": "GET /api/v2/polls/categories",
        "tags": [
          "Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/polls/{id}": {
      "get": {
        "summary": "GET /api/v2/polls/{id}",
        "tags": [
          "Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/polls/{id}",
        "tags": [
          "Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/polls/{id}",
        "tags": [
          "Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/polls/{id}/vote": {
      "post": {
        "summary": "POST /api/v2/polls/{id}/vote",
        "tags": [
          "Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/polls/{id}/rank": {
      "post": {
        "summary": "POST /api/v2/polls/{id}/rank",
        "tags": [
          "Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/polls/{id}/ranked-results": {
      "get": {
        "summary": "GET /api/v2/polls/{id}/ranked-results",
        "tags": [
          "Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/polls/{id}/export": {
      "get": {
        "summary": "GET /api/v2/polls/{id}/export",
        "tags": [
          "Polls"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/tenant/bootstrap": {
      "get": {
        "summary": "GET /api/v2/tenant/bootstrap",
        "tags": [
          "Tenant"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/tenants": {
      "get": {
        "summary": "GET /api/v2/tenants",
        "tags": [
          "Tenants"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/platform/stats": {
      "get": {
        "summary": "GET /api/v2/platform/stats",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/config/algorithms": {
      "get": {
        "summary": "GET /api/v2/config/algorithms",
        "tags": [
          "Config"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users": {
      "get": {
        "summary": "GET /api/v2/users",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me": {
      "get": {
        "summary": "GET /api/v2/users/me",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/users/me",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "delete": {
        "summary": "DELETE /api/v2/users/me",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/preferences": {
      "get": {
        "summary": "GET /api/v2/users/me/preferences",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/users/me/preferences",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/theme": {
      "put": {
        "summary": "PUT /api/v2/users/me/theme",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/language": {
      "put": {
        "summary": "PUT /api/v2/users/me/language",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/avatar": {
      "post": {
        "summary": "POST /api/v2/users/me/avatar",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/password": {
      "post": {
        "summary": "POST /api/v2/users/me/password",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/listings": {
      "get": {
        "summary": "GET /api/v2/users/me/listings",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/notifications": {
      "get": {
        "summary": "GET /api/v2/users/me/notifications",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/users/me/notifications",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/consent": {
      "get": {
        "summary": "GET /api/v2/users/me/consent",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/users/me/consent",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/gdpr-request": {
      "post": {
        "summary": "POST /api/v2/users/me/gdpr-request",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/sessions": {
      "get": {
        "summary": "GET /api/v2/users/me/sessions",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/match-preferences": {
      "get": {
        "summary": "GET /api/v2/users/me/match-preferences",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/users/me/match-preferences",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/insurance": {
      "get": {
        "summary": "GET /api/v2/users/me/insurance",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/users/me/insurance",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/{id}": {
      "get": {
        "summary": "GET /api/v2/users/{id}",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/users/{id}/listings": {
      "get": {
        "summary": "GET /api/v2/users/{id}/listings",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/members/nearby": {
      "get": {
        "summary": "GET /api/v2/members/nearby",
        "tags": [
          "Members"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/skills/categories": {
      "get": {
        "summary": "GET /api/v2/skills/categories",
        "tags": [
          "Skills"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/skills/categories",
        "tags": [
          "Skills"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/skills/search": {
      "get": {
        "summary": "GET /api/v2/skills/search",
        "tags": [
          "Skills"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/skills/categories/{id}": {
      "get": {
        "summary": "GET /api/v2/skills/categories/{id}",
        "tags": [
          "Skills"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/skills/categories/{id}",
        "tags": [
          "Skills"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/skills/categories/{id}",
        "tags": [
          "Skills"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/users/me/skills": {
      "get": {
        "summary": "GET /api/v2/users/me/skills",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/users/me/skills",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/skills/{id}": {
      "put": {
        "summary": "PUT /api/v2/users/me/skills/{id}",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/users/me/skills/{id}",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/users/{id}/skills": {
      "get": {
        "summary": "GET /api/v2/users/{id}/skills",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/users/me/availability": {
      "get": {
        "summary": "GET /api/v2/users/me/availability",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "put": {
        "summary": "PUT /api/v2/users/me/availability",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/availability/{reference}": {
      "put": {
        "summary": "Set availability for one weekday",
        "description": "For PUT, reference is the weekday identifier accepted by the member-availability controller.",
        "operationId": "MemberAvailability_setDay",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "reference",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-controller-action": "App\\Http\\Controllers\\Api\\MemberAvailabilityController@setDayAvailability"
      },
      "delete": {
        "summary": "Delete one availability slot",
        "description": "For DELETE, reference is the numeric availability-slot identifier.",
        "operationId": "MemberAvailability_deleteSlot",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Availability slot deleted"
          }
        },
        "parameters": [
          {
            "name": "reference",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "x-controller-action": "App\\Http\\Controllers\\Api\\MemberAvailabilityController@deleteSlot"
      }
    },
    "/api/v2/users/me/availability/date": {
      "post": {
        "summary": "POST /api/v2/users/me/availability/date",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/{id}/availability": {
      "get": {
        "summary": "GET /api/v2/users/{id}/availability",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/members/availability/compatible": {
      "get": {
        "summary": "GET /api/v2/members/availability/compatible",
        "tags": [
          "Members"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/members/availability/available": {
      "get": {
        "summary": "GET /api/v2/members/availability/available",
        "tags": [
          "Members"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/members/{id}/endorse": {
      "post": {
        "summary": "POST /api/v2/members/{id}/endorse",
        "tags": [
          "Members"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/v2/members/{id}/endorse",
        "tags": [
          "Members"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/members/{id}/endorsements": {
      "get": {
        "summary": "GET /api/v2/members/{id}/endorsements",
        "tags": [
          "Members"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/members/top-endorsed": {
      "get": {
        "summary": "GET /api/v2/members/top-endorsed",
        "tags": [
          "Members"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/activity/dashboard": {
      "get": {
        "summary": "GET /api/v2/users/me/activity/dashboard",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/activity/timeline": {
      "get": {
        "summary": "GET /api/v2/users/me/activity/timeline",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/activity/hours": {
      "get": {
        "summary": "GET /api/v2/users/me/activity/hours",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/activity/monthly": {
      "get": {
        "summary": "GET /api/v2/users/me/activity/monthly",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/{id}/activity/dashboard": {
      "get": {
        "summary": "GET /api/v2/users/{id}/activity/dashboard",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/users/{id}/verification-badges": {
      "get": {
        "summary": "GET /api/v2/users/{id}/verification-badges",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/users/me/sub-accounts": {
      "get": {
        "summary": "GET /api/v2/users/me/sub-accounts",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      },
      "post": {
        "summary": "POST /api/v2/users/me/sub-accounts",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/parent-accounts": {
      "get": {
        "summary": "GET /api/v2/users/me/parent-accounts",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        }
      }
    },
    "/api/v2/users/me/sub-accounts/{id}/approve": {
      "put": {
        "summary": "PUT /api/v2/users/me/sub-accounts/{id}/approve",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/users/me/sub-accounts/{id}/permissions": {
      "put": {
        "summary": "PUT /api/v2/users/me/sub-accounts/{id}/permissions",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/users/me/sub-accounts/{id}": {
      "delete": {
        "summary": "DELETE /api/v2/users/me/sub-accounts/{id}",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/users/me/sub-accounts/{childId}/activity": {
      "get": {
        "summary": "GET /api/v2/users/me/sub-accounts/{childId}/activity",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          }
        },
        "parameters": [
          {
            "name": "childId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/admin/events/{id}/approve": {
      "post": {
        "summary": "POST /api/v2/admin/events/{id}/approve",
        "description": "Maintained Events operation served by AdminEventsController@approve.",
        "operationId": "AdminEvents_approve",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventsController@approve",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/events/{id}/archive": {
      "post": {
        "summary": "POST /api/v2/admin/events/{id}/archive",
        "description": "Maintained Events operation served by AdminEventsController@archive.",
        "operationId": "AdminEvents_archive",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventsController@archive",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/events/{id}/attendance-reward": {
      "get": {
        "summary": "GET /api/v2/admin/events/{id}/attendance-reward",
        "description": "Maintained Events operation served by AdminEventAttendanceRewardController@show. Reports the configured attendance reward, the community ceiling, the active credit mode, and per-status claim totals.",
        "operationId": "AdminEventAttendanceReward_show",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventAttendanceRewardController@show",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/v2/admin/events/{id}/attendance-reward",
        "description": "Maintained Events operation served by AdminEventAttendanceRewardController@update. Sets the time credits granted once per member on verified check-in; null or 0 clears the reward. Clamped to events.attendance_credit_max.",
        "operationId": "AdminEventAttendanceReward_update",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "amount"
                ],
                "properties": {
                  "amount": {
                    "type": "number",
                    "nullable": true,
                    "minimum": 0,
                    "description": "Time credits granted per attendee on verified check-in. null or 0 clears the reward."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventAttendanceRewardController@update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/events/attendance-claims": {
      "get": {
        "summary": "GET /api/v2/admin/events/attendance-claims",
        "description": "Maintained Events operation served by AdminEventAttendanceRewardController@claims. Tenant-wide attendance-reward ledger: reward and reversal claims with member and event context, filterable by event_id, status, claim_type, and created-at date range; paginated.",
        "operationId": "AdminEventAttendanceReward_claims",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventAttendanceRewardController@claims",
        "parameters": [
          {
            "name": "event_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "completed",
                "failed",
                "reversed"
              ]
            }
          },
          {
            "name": "claim_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "attendance_reward",
                "attendance_reward_reversal"
              ]
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ]
      }
    },
    "/api/v2/admin/events/attendance-claims/{claimId}/retry": {
      "post": {
        "summary": "POST /api/v2/admin/events/attendance-claims/{claimId}/retry",
        "description": "Maintained Events operation served by AdminEventAttendanceRewardController@retry. Re-attempts the mint for a FAILED reward claim through the same money path as a check-in resume — the monthly cap still applies. 409 when the claim is not failed.",
        "operationId": "AdminEventAttendanceReward_retry",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "409": {
            "description": "Claim is not in a state this action accepts"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventAttendanceRewardController@retry",
        "parameters": [
          {
            "name": "claimId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/events/attendance-claims/{claimId}/reverse": {
      "post": {
        "summary": "POST /api/v2/admin/events/attendance-claims/{claimId}/reverse",
        "description": "Maintained Events operation served by AdminEventAttendanceRewardController@reverse. Reverses a COMPLETED reward: records a child claim (parent_claim_id) and reclaims the credits from the member, whose balance may go negative. Requires a reason. One reversal per reward; 409 otherwise.",
        "operationId": "AdminEventAttendanceReward_reverse",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "409": {
            "description": "Claim is not in a state this action accepts"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventAttendanceRewardController@reverse",
        "parameters": [
          {
            "name": "claimId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "reason"
                ],
                "properties": {
                  "reason": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 200
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/admin/events/{id}/complete": {
      "post": {
        "summary": "POST /api/v2/admin/events/{id}/complete",
        "description": "Maintained Events operation served by AdminEventsController@complete.",
        "operationId": "AdminEvents_complete",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventsController@complete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/events/{id}/postpone": {
      "post": {
        "summary": "POST /api/v2/admin/events/{id}/postpone",
        "description": "Maintained Events operation served by AdminEventsController@postpone.",
        "operationId": "AdminEvents_postpone",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventsController@postpone",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/events/{id}/reject": {
      "post": {
        "summary": "POST /api/v2/admin/events/{id}/reject",
        "description": "Maintained Events operation served by AdminEventsController@reject.",
        "operationId": "AdminEvents_reject",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventsController@reject",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/events/{id}/reschedule": {
      "post": {
        "summary": "POST /api/v2/admin/events/{id}/reschedule",
        "description": "Maintained Events operation served by AdminEventsController@reschedule.",
        "operationId": "AdminEvents_reschedule",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventsController@reschedule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/events/{id}/restore": {
      "post": {
        "summary": "POST /api/v2/admin/events/{id}/restore",
        "description": "Maintained Events operation served by AdminEventsController@restore.",
        "operationId": "AdminEvents_restore",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminEventsController@restore",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/prerender/events": {
      "get": {
        "summary": "GET /api/v2/admin/prerender/events",
        "description": "Maintained Events operation served by AdminPrerenderController@events.",
        "operationId": "AdminPrerender_events",
        "tags": [
          "Admin Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminPrerenderController@events"
      }
    },
    "/api/v2/event-broadcasts/{broadcastId}": {
      "get": {
        "summary": "GET /api/v2/event-broadcasts/{broadcastId}",
        "description": "Maintained Events operation served by EventBroadcastController@show.",
        "operationId": "EventBroadcast_show",
        "tags": [
          "Event Broadcasts"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventBroadcastController@show",
        "parameters": [
          {
            "name": "broadcastId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/event-broadcasts/{broadcastId}/cancel": {
      "post": {
        "summary": "POST /api/v2/event-broadcasts/{broadcastId}/cancel",
        "description": "Maintained Events operation served by EventBroadcastController@cancel.",
        "operationId": "EventBroadcast_cancel",
        "tags": [
          "Event Broadcasts"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventBroadcastController@cancel",
        "parameters": [
          {
            "name": "broadcastId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/event-broadcasts/{broadcastId}/retry": {
      "post": {
        "summary": "POST /api/v2/event-broadcasts/{broadcastId}/retry",
        "description": "Maintained Events operation served by EventBroadcastController@retry.",
        "operationId": "EventBroadcast_retry",
        "tags": [
          "Event Broadcasts"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventBroadcastController@retry",
        "parameters": [
          {
            "name": "broadcastId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/event-broadcasts/{broadcastId}/revisions": {
      "post": {
        "summary": "POST /api/v2/event-broadcasts/{broadcastId}/revisions",
        "description": "Maintained Events operation served by EventBroadcastController@revise.",
        "operationId": "EventBroadcast_revise",
        "tags": [
          "Event Broadcasts"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventBroadcastController@revise",
        "parameters": [
          {
            "name": "broadcastId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/event-broadcasts/{broadcastId}/schedule": {
      "post": {
        "summary": "POST /api/v2/event-broadcasts/{broadcastId}/schedule",
        "description": "Maintained Events operation served by EventBroadcastController@schedule.",
        "operationId": "EventBroadcast_schedule",
        "tags": [
          "Event Broadcasts"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventBroadcastController@schedule",
        "parameters": [
          {
            "name": "broadcastId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/event-templates": {
      "get": {
        "summary": "GET /api/v2/event-templates",
        "description": "Maintained Events operation served by EventTemplateController@index.",
        "operationId": "EventTemplate_index",
        "tags": [
          "Event Templates"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTemplateController@index"
      }
    },
    "/api/v2/event-templates/{templateId}": {
      "get": {
        "summary": "GET /api/v2/event-templates/{templateId}",
        "description": "Maintained Events operation served by EventTemplateController@show.",
        "operationId": "EventTemplate_show",
        "tags": [
          "Event Templates"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTemplateController@show",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/event-templates/{templateId}/archive": {
      "post": {
        "summary": "POST /api/v2/event-templates/{templateId}/archive",
        "description": "Maintained Events operation served by EventTemplateController@archive.",
        "operationId": "EventTemplate_archive",
        "tags": [
          "Event Templates"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTemplateController@archive",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/event-templates/{templateId}/history": {
      "get": {
        "summary": "GET /api/v2/event-templates/{templateId}/history",
        "description": "Maintained Events operation served by EventTemplateController@history.",
        "operationId": "EventTemplate_history",
        "tags": [
          "Event Templates"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTemplateController@history",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/event-templates/{templateId}/materialization-preview": {
      "post": {
        "summary": "POST /api/v2/event-templates/{templateId}/materialization-preview",
        "description": "Maintained Events operation served by EventTemplateController@previewMaterialization.",
        "operationId": "EventTemplate_previewMaterialization",
        "tags": [
          "Event Templates"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTemplateController@previewMaterialization",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/event-templates/{templateId}/materializations": {
      "post": {
        "summary": "POST /api/v2/event-templates/{templateId}/materializations",
        "description": "Maintained Events operation served by EventTemplateController@materialize.",
        "operationId": "EventTemplate_materialize",
        "tags": [
          "Event Templates"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTemplateController@materialize",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/event-templates/{templateId}/revisions": {
      "post": {
        "summary": "POST /api/v2/event-templates/{templateId}/revisions",
        "description": "Maintained Events operation served by EventTemplateController@revise.",
        "operationId": "EventTemplate_revise",
        "tags": [
          "Event Templates"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTemplateController@revise",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{eventId}/broadcasts": {
      "get": {
        "summary": "GET /api/v2/events/{eventId}/broadcasts",
        "description": "Maintained Events operation served by EventBroadcastController@index.",
        "operationId": "EventBroadcast_index",
        "tags": [
          "Event Broadcasts"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventBroadcastController@index",
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/events/{eventId}/broadcasts",
        "description": "Maintained Events operation served by EventBroadcastController@store.",
        "operationId": "EventBroadcast_store",
        "tags": [
          "Event Broadcasts"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventBroadcastController@store",
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{eventId}/broadcasts/preview": {
      "post": {
        "summary": "POST /api/v2/events/{eventId}/broadcasts/preview",
        "description": "Maintained Events operation served by EventBroadcastController@preview.",
        "operationId": "EventBroadcast_preview",
        "tags": [
          "Event Broadcasts"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventBroadcastController@preview",
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/agenda": {
      "get": {
        "summary": "GET /api/v2/events/{id}/agenda",
        "description": "Maintained Events operation served by EventAgendaController@index.",
        "operationId": "EventAgenda_index",
        "tags": [
          "Event Agenda"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventAgendaController@index",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/agenda/order": {
      "put": {
        "summary": "PUT /api/v2/events/{id}/agenda/order",
        "description": "Maintained Events operation served by EventAgendaController@reorder.",
        "operationId": "EventAgenda_reorder",
        "tags": [
          "Event Agenda"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventAgendaController@reorder",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/agenda/sessions": {
      "post": {
        "summary": "POST /api/v2/events/{id}/agenda/sessions",
        "description": "Maintained Events operation served by EventAgendaController@store.",
        "operationId": "EventAgenda_store",
        "tags": [
          "Event Agenda"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventAgendaController@store",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/agenda/sessions/{sessionId}": {
      "put": {
        "summary": "PUT /api/v2/events/{id}/agenda/sessions/{sessionId}",
        "description": "Maintained Events operation served by EventAgendaController@update.",
        "operationId": "EventAgenda_update",
        "tags": [
          "Event Agenda"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventAgendaController@update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/agenda/sessions/{sessionId}/cancel": {
      "post": {
        "summary": "POST /api/v2/events/{id}/agenda/sessions/{sessionId}/cancel",
        "description": "Maintained Events operation served by EventAgendaController@cancel.",
        "operationId": "EventAgenda_cancel",
        "tags": [
          "Event Agenda"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventAgendaController@cancel",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/agenda/sessions/{sessionId}/registration": {
      "post": {
        "summary": "POST /api/v2/events/{id}/agenda/sessions/{sessionId}/registration",
        "description": "Maintained Events operation served by EventAgendaController@register.",
        "operationId": "EventAgenda_register",
        "tags": [
          "Event Agenda"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventAgendaController@register",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/agenda/sessions/{sessionId}/registration/withdraw": {
      "post": {
        "summary": "POST /api/v2/events/{id}/agenda/sessions/{sessionId}/registration/withdraw",
        "description": "Maintained Events operation served by EventAgendaController@withdraw.",
        "operationId": "EventAgenda_withdraw",
        "tags": [
          "Event Agenda"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventAgendaController@withdraw",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/analytics": {
      "get": {
        "summary": "GET /api/v2/events/{id}/analytics",
        "description": "Maintained Events operation served by EventAnalyticsController@show.",
        "operationId": "EventAnalytics_show",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventAnalyticsController@show",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/analytics/export.csv": {
      "get": {
        "summary": "GET /api/v2/events/{id}/analytics/export.csv",
        "description": "Maintained Events operation served by EventAnalyticsController@export.",
        "operationId": "EventAnalytics_export",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventAnalyticsController@export",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/calendar-actions": {
      "get": {
        "summary": "GET /api/v2/events/{id}/calendar-actions",
        "description": "Maintained Events operation served by EventCalendarController@actions.",
        "operationId": "EventCalendar_actions",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventCalendarController@actions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/calendar.ics": {
      "get": {
        "summary": "GET /api/v2/events/{id}/calendar.ics",
        "description": "Maintained Events operation served by EventCalendarController@eventFeed.",
        "operationId": "EventCalendar_eventFeed",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventCalendarController@eventFeed",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/federation-status": {
      "get": {
        "summary": "GET /api/v2/events/{id}/federation-status",
        "description": "Maintained Events operation served by EventFederationStatusController@show.",
        "operationId": "EventFederationStatus_show",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventFederationStatusController@show",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/lifecycle-history": {
      "get": {
        "summary": "GET /api/v2/events/{id}/lifecycle-history",
        "description": "Returns manager-only, immutable Event lifecycle evidence using an event-bound cursor. Responses are private and non-cacheable.",
        "operationId": "EventLifecycleHistory_index",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventLifecycleHistoryController@index",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "description": "Opaque cursor returned by the previous page for this Event."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin": {
      "get": {
        "summary": "GET /api/v2/events/{id}/offline-checkin",
        "description": "Maintained Events operation served by EventOfflineCheckinController@workspace.",
        "operationId": "EventOfflineCheckin_workspace",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@workspace",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/batches/{batchId}": {
      "get": {
        "summary": "GET /api/v2/events/{id}/offline-checkin/batches/{batchId}",
        "description": "Maintained Events operation served by EventOfflineCheckinController@batch.",
        "operationId": "EventOfflineCheckin_batch",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@batch",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "batchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/conflicts": {
      "get": {
        "summary": "GET /api/v2/events/{id}/offline-checkin/conflicts",
        "description": "Maintained Events operation served by EventOfflineCheckinController@conflicts.",
        "operationId": "EventOfflineCheckin_conflicts",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@conflicts",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/conflicts/{itemId}": {
      "post": {
        "summary": "POST /api/v2/events/{id}/offline-checkin/conflicts/{itemId}",
        "description": "Maintained Events operation served by EventOfflineCheckinController@resolveConflict.",
        "operationId": "EventOfflineCheckin_resolveConflict",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@resolveConflict",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/credentials": {
      "post": {
        "summary": "POST /api/v2/events/{id}/offline-checkin/credentials",
        "description": "Maintained Events operation served by EventOfflineCheckinController@issueCredential.",
        "operationId": "EventOfflineCheckin_issueCredential",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@issueCredential",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/credentials/{credentialId}/revoke": {
      "post": {
        "summary": "POST /api/v2/events/{id}/offline-checkin/credentials/{credentialId}/revoke",
        "description": "Maintained Events operation served by EventOfflineCheckinController@revokeCredential.",
        "operationId": "EventOfflineCheckin_revokeCredential",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@revokeCredential",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "credentialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/credentials/{credentialId}/rotate": {
      "post": {
        "summary": "POST /api/v2/events/{id}/offline-checkin/credentials/{credentialId}/rotate",
        "description": "Maintained Events operation served by EventOfflineCheckinController@rotateCredential.",
        "operationId": "EventOfflineCheckin_rotateCredential",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@rotateCredential",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "credentialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/credentials/me": {
      "get": {
        "summary": "GET /api/v2/events/{id}/offline-checkin/credentials/me",
        "description": "Maintained Events operation served by EventOfflineCheckinController@myCredential.",
        "operationId": "EventOfflineCheckin_myCredential",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@myCredential",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/devices": {
      "post": {
        "summary": "POST /api/v2/events/{id}/offline-checkin/devices",
        "description": "Maintained Events operation served by EventOfflineCheckinController@registerDevice.",
        "operationId": "EventOfflineCheckin_registerDevice",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@registerDevice",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/devices/{deviceId}/revoke": {
      "post": {
        "summary": "POST /api/v2/events/{id}/offline-checkin/devices/{deviceId}/revoke",
        "description": "Maintained Events operation served by EventOfflineCheckinController@revokeDevice.",
        "operationId": "EventOfflineCheckin_revokeDevice",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@revokeDevice",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/devices/{deviceId}/rotate": {
      "post": {
        "summary": "POST /api/v2/events/{id}/offline-checkin/devices/{deviceId}/rotate",
        "description": "Maintained Events operation served by EventOfflineCheckinController@rotateDevice.",
        "operationId": "EventOfflineCheckin_rotateDevice",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@rotateDevice",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/manifest": {
      "post": {
        "summary": "POST /api/v2/events/{id}/offline-checkin/manifest",
        "description": "Maintained Events operation served by EventOfflineCheckinController@manifest.",
        "operationId": "EventOfflineCheckin_manifest",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@manifest",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/scan": {
      "post": {
        "summary": "POST /api/v2/events/{id}/offline-checkin/scan",
        "description": "Maintained Events operation served by EventOfflineCheckinController@scan.",
        "operationId": "EventOfflineCheckin_scan",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@scan",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/offline-checkin/sync": {
      "post": {
        "summary": "POST /api/v2/events/{id}/offline-checkin/sync",
        "description": "Maintained Events operation served by EventOfflineCheckinController@stage.",
        "operationId": "EventOfflineCheckin_stage",
        "tags": [
          "Event Offline Check-in"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventOfflineCheckinController@stage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/people": {
      "get": {
        "summary": "GET /api/v2/events/{id}/people",
        "description": "Maintained Events operation served by EventRegistrationController@people.",
        "operationId": "EventRegistration_people",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@people",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/people/{userId}/approve": {
      "post": {
        "summary": "POST /api/v2/events/{id}/people/{userId}/approve",
        "description": "Maintained Events operation served by EventRegistrationController@approve.",
        "operationId": "EventRegistration_approve",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@approve",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/attendance/code": {
      "post": {
        "summary": "POST /api/v2/events/{id}/attendance/code",
        "description": "Maintained Events operation served by EventRegistrationController@attendanceByCode. Records attendance from a scanned signed check-in credential rather than a roster pick. Requires confirmation, an nqx2_ credential of at most 1024 characters, a reason for undo, and an idempotency key. Reads the current attendance version itself, because a scanner holds a signed code rather than a roster row.",
        "operationId": "EventRegistration_attendanceByCode",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "409": {
            "description": "Attendance version conflict or state transition refused"
          },
          "422": {
            "description": "Validation failure, or the credential could not be used. An unreadable credential and a credential for a member the actor cannot see return the SAME response, so the endpoint cannot be used to discover who is registered."
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@attendanceByCode",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/people/{userId}/attendance": {
      "post": {
        "summary": "POST /api/v2/events/{id}/people/{userId}/attendance",
        "description": "Maintained Events operation served by EventRegistrationController@attendance.",
        "operationId": "EventRegistration_attendance",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@attendance",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/people/{userId}/cancel": {
      "post": {
        "summary": "POST /api/v2/events/{id}/people/{userId}/cancel",
        "description": "Maintained Events operation served by EventRegistrationController@cancel.",
        "operationId": "EventRegistration_cancel",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@cancel",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/people/{userId}/history": {
      "get": {
        "summary": "GET /api/v2/events/{id}/people/{userId}/history",
        "description": "Maintained Events operation served by EventRegistrationController@history.",
        "operationId": "EventRegistration_history",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@history",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/people/{userId}/reject": {
      "post": {
        "summary": "POST /api/v2/events/{id}/people/{userId}/reject",
        "description": "Maintained Events operation served by EventRegistrationController@reject.",
        "operationId": "EventRegistration_reject",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@reject",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/people/bulk": {
      "post": {
        "summary": "POST /api/v2/events/{id}/people/bulk",
        "description": "Maintained Events operation served by EventRegistrationController@bulk.",
        "operationId": "EventRegistration_bulk",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@bulk",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/people/export.csv": {
      "get": {
        "summary": "GET /api/v2/events/{id}/people/export.csv",
        "description": "Maintained Events operation served by EventRegistrationController@exportPeople.",
        "operationId": "EventRegistration_exportPeople",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@exportPeople",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/publish": {
      "post": {
        "summary": "POST /api/v2/events/{id}/publish",
        "description": "Maintained Events operation served by EventsController@publish.",
        "operationId": "Events_publish",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@publish",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product": {
      "get": {
        "summary": "GET /api/v2/events/{id}/registration-product",
        "description": "Maintained Events operation served by EventRegistrationProductController@attendeeState.",
        "operationId": "EventRegistrationProduct_attendeeState",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@attendeeState",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/campaigns/{campaignId}/cancel": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/campaigns/{campaignId}/cancel",
        "description": "Maintained Events operation served by EventRegistrationProductController@cancelCampaign.",
        "operationId": "EventRegistrationProduct_cancelCampaign",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@cancelCampaign",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/campaigns/{campaignId}/issue": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/campaigns/{campaignId}/issue",
        "description": "Maintained Events operation served by EventRegistrationProductController@issueCampaign.",
        "operationId": "EventRegistrationProduct_issueCampaign",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@issueCampaign",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/campaigns/{campaignId}/schedule": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/campaigns/{campaignId}/schedule",
        "description": "Maintained Events operation served by EventRegistrationProductController@scheduleCampaign.",
        "operationId": "EventRegistrationProduct_scheduleCampaign",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@scheduleCampaign",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/campaigns/preview": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/campaigns/preview",
        "description": "Maintained Events operation served by EventRegistrationProductController@previewCampaign.",
        "operationId": "EventRegistrationProduct_previewCampaign",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@previewCampaign",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/forms": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/forms",
        "description": "Maintained Events operation served by EventRegistrationProductController@createForm.",
        "operationId": "EventRegistrationProduct_createForm",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@createForm",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/forms/{formId}": {
      "put": {
        "summary": "PUT /api/v2/events/{id}/registration-product/forms/{formId}",
        "description": "Maintained Events operation served by EventRegistrationProductController@updateForm.",
        "operationId": "EventRegistrationProduct_updateForm",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@updateForm",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "formId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/forms/{formId}/fork": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/forms/{formId}/fork",
        "description": "Maintained Events operation served by EventRegistrationProductController@forkForm.",
        "operationId": "EventRegistrationProduct_forkForm",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@forkForm",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "formId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/forms/{formId}/publish": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/forms/{formId}/publish",
        "description": "Maintained Events operation served by EventRegistrationProductController@publishForm.",
        "operationId": "EventRegistrationProduct_publishForm",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@publishForm",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "formId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/guests/{guestId}/attendance/{action}": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/guests/{guestId}/attendance/{action}",
        "description": "Maintained Events operation served by EventRegistrationProductController@transitionGuestAttendance.",
        "operationId": "EventRegistrationProduct_transitionGuestAttendance",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@transitionGuestAttendance",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "guestId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "action",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/guests/{guestId}/cancel": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/guests/{guestId}/cancel",
        "description": "Maintained Events operation served by EventRegistrationProductController@cancelGuest.",
        "operationId": "EventRegistrationProduct_cancelGuest",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@cancelGuest",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "guestId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/invitations/{invitationId}/accept": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/invitations/{invitationId}/accept",
        "description": "Maintained Events operation served by EventRegistrationProductController@acceptMemberInvitation.",
        "operationId": "EventRegistrationProduct_acceptMemberInvitation",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@acceptMemberInvitation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "invitationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/invitations/{invitationId}/revoke": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/invitations/{invitationId}/revoke",
        "description": "Maintained Events operation served by EventRegistrationProductController@revokeInvitation.",
        "operationId": "EventRegistrationProduct_revokeInvitation",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@revokeInvitation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "invitationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/invitations/accept": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/invitations/accept",
        "description": "Maintained Events operation served by EventRegistrationProductController@acceptInvitation.",
        "operationId": "EventRegistrationProduct_acceptInvitation",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@acceptInvitation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/manage": {
      "get": {
        "summary": "GET /api/v2/events/{id}/registration-product/manage",
        "description": "Maintained Events operation served by EventRegistrationProductController@organizerOverview.",
        "operationId": "EventRegistrationProduct_organizerOverview",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@organizerOverview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/registrations/{registrationId}/guests": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/registrations/{registrationId}/guests",
        "description": "Maintained Events operation served by EventRegistrationProductController@captureGuest.",
        "operationId": "EventRegistrationProduct_captureGuest",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@captureGuest",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "registrationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/retention/{dryRunId}/apply": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/retention/{dryRunId}/apply",
        "description": "Maintained Events operation served by EventRegistrationProductController@retentionApply.",
        "operationId": "EventRegistrationProduct_retentionApply",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@retentionApply",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "dryRunId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/retention/dry-run": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/retention/dry-run",
        "description": "Maintained Events operation served by EventRegistrationProductController@retentionDryRun.",
        "operationId": "EventRegistrationProduct_retentionDryRun",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@retentionDryRun",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/settings": {
      "put": {
        "summary": "PUT /api/v2/events/{id}/registration-product/settings",
        "description": "Maintained Events operation served by EventRegistrationProductController@saveSettings.",
        "operationId": "EventRegistrationProduct_saveSettings",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@saveSettings",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/settings/publish": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/settings/publish",
        "description": "Maintained Events operation served by EventRegistrationProductController@publishSettings.",
        "operationId": "EventRegistrationProduct_publishSettings",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@publishSettings",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/submissions": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/submissions",
        "description": "Maintained Events operation served by EventRegistrationProductController@saveSubmission.",
        "operationId": "EventRegistrationProduct_saveSubmission",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@saveSubmission",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/submissions/{submissionId}/amend": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/submissions/{submissionId}/amend",
        "description": "Maintained Events operation served by EventRegistrationProductController@amend.",
        "operationId": "EventRegistrationProduct_amend",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@amend",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "submissionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/submissions/{submissionId}/answers": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/submissions/{submissionId}/answers",
        "description": "Maintained Events operation served by EventRegistrationProductController@answers.",
        "operationId": "EventRegistrationProduct_answers",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@answers",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "submissionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/submissions/{submissionId}/submit": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/submissions/{submissionId}/submit",
        "description": "Maintained Events operation served by EventRegistrationProductController@submit.",
        "operationId": "EventRegistrationProduct_submit",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@submit",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "submissionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration-product/submissions/export": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration-product/submissions/export",
        "description": "Maintained Events operation served by EventRegistrationProductController@export.",
        "operationId": "EventRegistrationProduct_export",
        "tags": [
          "Event Registration"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationProductController@export",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration/confirm": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration/confirm",
        "description": "Maintained Events operation served by EventRegistrationController@confirm.",
        "operationId": "EventRegistration_confirm",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@confirm",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration/waitlist": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration/waitlist",
        "description": "Maintained Events operation served by EventRegistrationController@joinWaitlist.",
        "operationId": "EventRegistration_joinWaitlist",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@joinWaitlist",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration/waitlist/accept": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration/waitlist/accept",
        "description": "Maintained Events operation served by EventRegistrationController@acceptOffer.",
        "operationId": "EventRegistration_acceptOffer",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@acceptOffer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration/waitlist/leave": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration/waitlist/leave",
        "description": "Maintained Events operation served by EventRegistrationController@leaveWaitlist.",
        "operationId": "EventRegistration_leaveWaitlist",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@leaveWaitlist",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/registration/withdraw": {
      "post": {
        "summary": "POST /api/v2/events/{id}/registration/withdraw",
        "description": "Maintained Events operation served by EventRegistrationController@withdraw.",
        "operationId": "EventRegistration_withdraw",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@withdraw",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/relationship": {
      "get": {
        "summary": "GET /api/v2/events/{id}/relationship",
        "description": "Maintained Events operation served by EventRegistrationController@show.",
        "operationId": "EventRegistration_show",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRegistrationController@show",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/safety": {
      "get": {
        "summary": "GET /api/v2/events/{id}/safety",
        "description": "Maintained Events operation served by EventSafetyController@show.",
        "operationId": "EventSafety_show",
        "tags": [
          "Event Safety"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventSafetyController@show",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/safety/code-of-conduct/acknowledgements": {
      "post": {
        "summary": "POST /api/v2/events/{id}/safety/code-of-conduct/acknowledgements",
        "description": "Maintained Events operation served by EventSafetyController@acknowledgeCode.",
        "operationId": "EventSafety_acknowledgeCode",
        "tags": [
          "Event Safety"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventSafetyController@acknowledgeCode",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/safety/code-of-conduct/acknowledgements/{acknowledgementId}": {
      "delete": {
        "summary": "DELETE /api/v2/events/{id}/safety/code-of-conduct/acknowledgements/{acknowledgementId}",
        "description": "Maintained Events operation served by EventSafetyController@withdrawCode.",
        "operationId": "EventSafety_withdrawCode",
        "tags": [
          "Event Safety"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventSafetyController@withdrawCode",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "acknowledgementId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/safety/guardian-consents": {
      "post": {
        "summary": "POST /api/v2/events/{id}/safety/guardian-consents",
        "description": "Maintained Events operation served by EventSafetyController@requestGuardianConsent.",
        "operationId": "EventSafety_requestGuardianConsent",
        "tags": [
          "Event Safety"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventSafetyController@requestGuardianConsent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/safety/guardian-consents/{consentId}": {
      "delete": {
        "summary": "DELETE /api/v2/events/{id}/safety/guardian-consents/{consentId}",
        "description": "Maintained Events operation served by EventSafetyController@withdrawGuardianConsent.",
        "operationId": "EventSafety_withdrawGuardianConsent",
        "tags": [
          "Event Safety"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventSafetyController@withdrawGuardianConsent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "consentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/safety/requirements": {
      "put": {
        "summary": "PUT /api/v2/events/{id}/safety/requirements",
        "description": "Maintained Events operation served by EventSafetyController@saveRequirements.",
        "operationId": "EventSafety_saveRequirements",
        "tags": [
          "Event Safety"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventSafetyController@saveRequirements",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/safety/requirements/archive": {
      "post": {
        "summary": "POST /api/v2/events/{id}/safety/requirements/archive",
        "description": "Maintained Events operation served by EventSafetyController@archiveRequirements.",
        "operationId": "EventSafety_archiveRequirements",
        "tags": [
          "Event Safety"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventSafetyController@archiveRequirements",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/safety/requirements/publish": {
      "post": {
        "summary": "POST /api/v2/events/{id}/safety/requirements/publish",
        "description": "Maintained Events operation served by EventSafetyController@publishRequirements.",
        "operationId": "EventSafety_publishRequirements",
        "tags": [
          "Event Safety"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventSafetyController@publishRequirements",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/safety/reviews": {
      "get": {
        "summary": "GET /api/v2/events/{id}/safety/reviews",
        "description": "Maintained Events operation served by EventSafetyController@reviews.",
        "operationId": "EventSafety_reviews",
        "tags": [
          "Event Safety"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventSafetyController@reviews",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/events/{id}/safety/reviews",
        "description": "Maintained Events operation served by EventSafetyController@recordReview.",
        "operationId": "EventSafety_recordReview",
        "tags": [
          "Event Safety"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventSafetyController@recordReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/safety/reviews/{denialId}": {
      "delete": {
        "summary": "DELETE /api/v2/events/{id}/safety/reviews/{denialId}",
        "description": "Maintained Events operation served by EventSafetyController@withdrawReview.",
        "operationId": "EventSafety_withdrawReview",
        "tags": [
          "Event Safety"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventSafetyController@withdrawReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "denialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/staff": {
      "get": {
        "summary": "GET /api/v2/events/{id}/staff",
        "description": "Maintained Events operation served by EventStaffController@index.",
        "operationId": "EventStaff_index",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventStaffController@index",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/events/{id}/staff",
        "description": "Maintained Events operation served by EventStaffController@store.",
        "operationId": "EventStaff_store",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventStaffController@store",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/staff/{assignmentId}": {
      "delete": {
        "summary": "DELETE /api/v2/events/{id}/staff/{assignmentId}",
        "description": "Maintained Events operation served by EventStaffController@destroy.",
        "operationId": "EventStaff_destroy",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventStaffController@destroy",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/submit": {
      "post": {
        "summary": "POST /api/v2/events/{id}/submit",
        "description": "Maintained Events operation served by EventsController@submitForReview.",
        "operationId": "Events_submitForReview",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventsController@submitForReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/ticket-entitlements/{entitlementId}/cancel": {
      "post": {
        "summary": "POST /api/v2/events/{id}/ticket-entitlements/{entitlementId}/cancel",
        "description": "Maintained Events operation served by EventTicketController@cancelEntitlement.",
        "operationId": "EventTicket_cancelEntitlement",
        "tags": [
          "Event Tickets"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTicketController@cancelEntitlement",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "entitlementId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/ticket-types": {
      "post": {
        "summary": "POST /api/v2/events/{id}/ticket-types",
        "description": "Maintained Events operation served by EventTicketController@createType.",
        "operationId": "EventTicket_createType",
        "tags": [
          "Event Tickets"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTicketController@createType",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/ticket-types/{ticketTypeId}": {
      "put": {
        "summary": "PUT /api/v2/events/{id}/ticket-types/{ticketTypeId}",
        "description": "Maintained Events operation served by EventTicketController@updateType.",
        "operationId": "EventTicket_updateType",
        "tags": [
          "Event Tickets"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTicketController@updateType",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "ticketTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/ticket-types/{ticketTypeId}/{action}": {
      "post": {
        "summary": "POST /api/v2/events/{id}/ticket-types/{ticketTypeId}/{action}",
        "description": "Maintained Events operation served by EventTicketController@transitionType.",
        "operationId": "EventTicket_transitionType",
        "tags": [
          "Event Tickets"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTicketController@transitionType",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "ticketTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "action",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/tickets": {
      "get": {
        "summary": "GET /api/v2/events/{id}/tickets",
        "description": "Maintained Events operation served by EventTicketController@index.",
        "operationId": "EventTicket_index",
        "tags": [
          "Event Tickets"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTicketController@index",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/tickets/{ticketTypeId}/allocate": {
      "post": {
        "summary": "POST /api/v2/events/{id}/tickets/{ticketTypeId}/allocate",
        "description": "Maintained Events operation served by EventTicketController@allocateSelf.",
        "operationId": "EventTicket_allocateSelf",
        "tags": [
          "Event Tickets"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTicketController@allocateSelf",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "ticketTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/tickets/{ticketTypeId}/allocate/{userId}": {
      "post": {
        "summary": "POST /api/v2/events/{id}/tickets/{ticketTypeId}/allocate/{userId}",
        "description": "Maintained Events operation served by EventTicketController@allocateForMember.",
        "operationId": "EventTicket_allocateForMember",
        "tags": [
          "Event Tickets"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTicketController@allocateForMember",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "ticketTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/tickets/{ticketTypeId}/quote": {
      "post": {
        "summary": "POST /api/v2/events/{id}/tickets/{ticketTypeId}/quote",
        "description": "Maintained Events operation served by EventTicketController@quote.",
        "operationId": "EventTicket_quote",
        "tags": [
          "Event Tickets"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTicketController@quote",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "ticketTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{id}/tickets/reconciliation": {
      "get": {
        "summary": "GET /api/v2/events/{id}/tickets/reconciliation",
        "description": "Maintained Events operation served by EventTicketController@reconcile.",
        "operationId": "EventTicket_reconcile",
        "tags": [
          "Event Tickets"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTicketController@reconcile",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{sourceEventId}/template-preview": {
      "post": {
        "summary": "POST /api/v2/events/{sourceEventId}/template-preview",
        "description": "Maintained Events operation served by EventTemplateController@previewCapture.",
        "operationId": "EventTemplate_previewCapture",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTemplateController@previewCapture",
        "parameters": [
          {
            "name": "sourceEventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/{sourceEventId}/templates": {
      "post": {
        "summary": "POST /api/v2/events/{sourceEventId}/templates",
        "description": "Maintained Events operation served by EventTemplateController@capture.",
        "operationId": "EventTemplate_capture",
        "tags": [
          "Event Templates"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventTemplateController@capture",
        "parameters": [
          {
            "name": "sourceEventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/calendar": {
      "get": {
        "summary": "GET /api/v2/events/calendar",
        "description": "Maintained Events operation served by EventCalendarController@index.",
        "operationId": "EventCalendar_index",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventCalendarController@index"
      }
    },
    "/api/v2/events/calendar/feed-tokens": {
      "get": {
        "summary": "GET /api/v2/events/calendar/feed-tokens",
        "description": "Maintained Events operation served by EventCalendarController@tokens.",
        "operationId": "EventCalendar_tokens",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventCalendarController@tokens"
      },
      "post": {
        "summary": "POST /api/v2/events/calendar/feed-tokens",
        "description": "Maintained Events operation served by EventCalendarController@createToken.",
        "operationId": "EventCalendar_createToken",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventCalendarController@createToken"
      }
    },
    "/api/v2/events/calendar/feed-tokens/{tokenId}": {
      "delete": {
        "summary": "DELETE /api/v2/events/calendar/feed-tokens/{tokenId}",
        "description": "Maintained Events operation served by EventCalendarController@revokeToken.",
        "operationId": "EventCalendar_revokeToken",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventCalendarController@revokeToken",
        "parameters": [
          {
            "name": "tokenId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/calendar/feed.ics": {
      "get": {
        "summary": "GET /api/v2/events/calendar/feed.ics",
        "description": "Maintained Events operation served by EventCalendarController@tenantFeed.",
        "operationId": "EventCalendar_tenantFeed",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventCalendarController@tenantFeed"
      }
    },
    "/api/v2/events/calendar/personal/{tenantSlug}/{secret}.ics": {
      "get": {
        "summary": "GET /api/v2/events/calendar/personal/{tenantSlug}/{secret}.ics",
        "description": "Public capability URL for a private personal iCalendar feed. The high-entropy path secret is redacted from logs and replaces bearer authentication.",
        "operationId": "EventCalendar_personalFeed",
        "tags": [
          "Events"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventCalendarController@personalFeed",
        "parameters": [
          {
            "name": "tenantSlug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "secret",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            }
          }
        ]
      }
    },
    "/api/v2/events/safety/guardian-consents/grant": {
      "post": {
        "summary": "POST /api/v2/events/safety/guardian-consents/grant",
        "description": "Public, one-use guardian capability. Invalid tokens, email mismatches, and expired requests return the same non-enumerable failure contract.",
        "operationId": "EventSafety_grantGuardianConsent",
        "tags": [
          "Event Safety"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventSafetyController@grantGuardianConsent",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 191
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "token",
                  "guardian_email"
                ],
                "properties": {
                  "token": {
                    "type": "string",
                    "minLength": 1
                  },
                  "guardian_email": {
                    "type": "string",
                    "format": "email"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/federation/ingest/events": {
      "post": {
        "summary": "POST /api/v2/federation/ingest/events",
        "description": "Maintained Events operation served by EventFederationInboundController@apply.",
        "operationId": "EventFederationInbound_apply",
        "tags": [
          "Event Federation"
        ],
        "security": [
          {
            "federationBearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "503": {
            "description": "External federation is disabled. This route sits behind the nexus protocol kill switch, which is off by default and has been off in production since 2026-07-27, so the endpoint answers 503 with a Retry-After header and the error code FEDERATION_EXTERNAL_DISABLED before any credential is examined. This is the response a partner receives today."
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventFederationInboundController@apply"
      }
    },
    "/api/v2/events/{id}/recurrence-revisions/commit": {
      "post": {
        "summary": "POST /api/v2/events/{id}/recurrence-revisions/commit",
        "description": "Commits the exact previewed this-and-future blueprint revision. Requires a confidential preview token and Idempotency-Key; returns 201 for a new immutable revision and 200 for a matching replay.",
        "operationId": "EventRecurrenceRevision_commit",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "409": {
            "description": "Preview expired/stale, token scope mismatch, idempotency conflict, or reconciliation required"
          },
          "413": {
            "description": "Selected boundary exceeds the configured affected-occurrence cap"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRecurrenceRevisionController@commit",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 191
            }
          }
        ],
        "x-rate-limit": "10 requests per minute",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "patch",
                  "preview_token"
                ],
                "properties": {
                  "patch": {
                    "type": "object",
                    "additionalProperties": false,
                    "minProperties": 1,
                    "maxProperties": 32,
                    "properties": {
                      "title": {
                        "type": "string",
                        "minLength": 3,
                        "maxLength": 255
                      },
                      "description": {
                        "type": "string",
                        "maxLength": 10000
                      },
                      "location": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 255
                      },
                      "latitude": {
                        "type": "number",
                        "nullable": true,
                        "minimum": -90,
                        "maximum": 90
                      },
                      "longitude": {
                        "type": "number",
                        "nullable": true,
                        "minimum": -180,
                        "maximum": 180
                      },
                      "max_attendees": {
                        "type": "integer",
                        "nullable": true,
                        "minimum": 1
                      },
                      "is_online": {
                        "type": "boolean"
                      },
                      "online_link": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "maxLength": 512
                      },
                      "video_url": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "maxLength": 512
                      },
                      "allow_remote_attendance": {
                        "type": "boolean"
                      },
                      "category_id": {
                        "type": "integer",
                        "nullable": true,
                        "minimum": 1
                      },
                      "all_day": {
                        "type": "boolean"
                      },
                      "accessibility_step_free": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "accessibility_toilet": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "accessibility_hearing_loop": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "accessibility_quiet_space": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "accessibility_seating": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "accessibility_parking": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "accessibility_parking_details": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 1000
                      },
                      "accessibility_transit_details": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 1000
                      },
                      "accessibility_assistance_contact": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 500
                      },
                      "accessibility_notes": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 4000
                      },
                      "timezone": {
                        "type": "string",
                        "maxLength": 64
                      },
                      "local_start_time": {
                        "type": "string",
                        "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d)?$"
                      },
                      "local_end_time": {
                        "type": "string",
                        "nullable": true,
                        "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d)?$"
                      },
                      "recurrence_rrule": {
                        "type": "string",
                        "maxLength": 2048,
                        "description": "Previewed as reconciliation-required; never silently committed."
                      },
                      "recurrence_exdates": {
                        "type": "array",
                        "maxItems": 500,
                        "items": {
                          "type": "string",
                          "maxLength": 64
                        }
                      },
                      "recurrence_rdates": {
                        "type": "array",
                        "maxItems": 500,
                        "items": {
                          "type": "string",
                          "maxLength": 64
                        }
                      },
                      "group_id": {
                        "type": "integer",
                        "nullable": true,
                        "minimum": 1,
                        "description": "Explicitly unsupported as an effective-dated field."
                      },
                      "series_id": {
                        "type": "integer",
                        "nullable": true,
                        "minimum": 1,
                        "description": "Explicitly unsupported as an effective-dated field."
                      },
                      "poll_ids": {
                        "type": "array",
                        "maxItems": 100,
                        "items": {
                          "type": "integer",
                          "minimum": 1
                        },
                        "description": "Explicitly unsupported as an effective-dated field."
                      },
                      "image_url": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 512,
                        "description": "Explicitly unsupported; use the scoped image workflow."
                      },
                      "cover_image": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 255,
                        "description": "Explicitly unsupported; use the scoped image workflow."
                      },
                      "federated_visibility": {
                        "type": "string",
                        "enum": [
                          "none",
                          "listed",
                          "joinable"
                        ],
                        "description": "Explicitly unsupported as an effective-dated field."
                      }
                    }
                  },
                  "preview_token": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 8192
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/events/{id}/recurrence-revisions/preview": {
      "post": {
        "summary": "POST /api/v2/events/{id}/recurrence-revisions/preview",
        "description": "Returns a non-mutating, participant-redacted this-and-future impact projection plus a short-lived confidential token. Rule-shape or unsupported effective fields are returned as explicit blocking conflicts.",
        "operationId": "EventRecurrenceRevision_preview",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation or idempotent replay"
          },
          "201": {
            "description": "Resource created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "409": {
            "description": "Preview expired/stale, token scope mismatch, idempotency conflict, or reconciliation required"
          },
          "413": {
            "description": "Selected boundary exceeds the configured affected-occurrence cap"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRecurrenceRevisionController@preview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "x-rate-limit": "30 requests per minute",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "patch"
                ],
                "properties": {
                  "patch": {
                    "type": "object",
                    "additionalProperties": false,
                    "minProperties": 1,
                    "maxProperties": 32,
                    "properties": {
                      "title": {
                        "type": "string",
                        "minLength": 3,
                        "maxLength": 255
                      },
                      "description": {
                        "type": "string",
                        "maxLength": 10000
                      },
                      "location": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 255
                      },
                      "latitude": {
                        "type": "number",
                        "nullable": true,
                        "minimum": -90,
                        "maximum": 90
                      },
                      "longitude": {
                        "type": "number",
                        "nullable": true,
                        "minimum": -180,
                        "maximum": 180
                      },
                      "max_attendees": {
                        "type": "integer",
                        "nullable": true,
                        "minimum": 1
                      },
                      "is_online": {
                        "type": "boolean"
                      },
                      "online_link": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "maxLength": 512
                      },
                      "video_url": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "maxLength": 512
                      },
                      "allow_remote_attendance": {
                        "type": "boolean"
                      },
                      "category_id": {
                        "type": "integer",
                        "nullable": true,
                        "minimum": 1
                      },
                      "all_day": {
                        "type": "boolean"
                      },
                      "accessibility_step_free": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "accessibility_toilet": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "accessibility_hearing_loop": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "accessibility_quiet_space": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "accessibility_seating": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "accessibility_parking": {
                        "type": "boolean",
                        "nullable": true
                      },
                      "accessibility_parking_details": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 1000
                      },
                      "accessibility_transit_details": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 1000
                      },
                      "accessibility_assistance_contact": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 500
                      },
                      "accessibility_notes": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 4000
                      },
                      "timezone": {
                        "type": "string",
                        "maxLength": 64
                      },
                      "local_start_time": {
                        "type": "string",
                        "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d)?$"
                      },
                      "local_end_time": {
                        "type": "string",
                        "nullable": true,
                        "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d)?$"
                      },
                      "recurrence_rrule": {
                        "type": "string",
                        "maxLength": 2048,
                        "description": "Previewed as reconciliation-required; never silently committed."
                      },
                      "recurrence_exdates": {
                        "type": "array",
                        "maxItems": 500,
                        "items": {
                          "type": "string",
                          "maxLength": 64
                        }
                      },
                      "recurrence_rdates": {
                        "type": "array",
                        "maxItems": 500,
                        "items": {
                          "type": "string",
                          "maxLength": 64
                        }
                      },
                      "group_id": {
                        "type": "integer",
                        "nullable": true,
                        "minimum": 1,
                        "description": "Explicitly unsupported as an effective-dated field."
                      },
                      "series_id": {
                        "type": "integer",
                        "nullable": true,
                        "minimum": 1,
                        "description": "Explicitly unsupported as an effective-dated field."
                      },
                      "poll_ids": {
                        "type": "array",
                        "maxItems": 100,
                        "items": {
                          "type": "integer",
                          "minimum": 1
                        },
                        "description": "Explicitly unsupported as an effective-dated field."
                      },
                      "image_url": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 512,
                        "description": "Explicitly unsupported; use the scoped image workflow."
                      },
                      "cover_image": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 255,
                        "description": "Explicitly unsupported; use the scoped image workflow."
                      },
                      "federated_visibility": {
                        "type": "string",
                        "enum": [
                          "none",
                          "listed",
                          "joinable"
                        ],
                        "description": "Explicitly unsupported as an effective-dated field."
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/events/{id}/recurrence-definition-blueprints": {
      "get": {
        "summary": "List immutable recurring-event definition blueprint history",
        "description": "Manager-authorized bounded history. Returns versions, effective identities, selected sections, counts, hashes and pseudonymous actor evidence; never manifest contents or staff identities.",
        "operationId": "EventRecurrenceDefinitionBlueprint_history",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            }
          },
          {
            "name": "before_version",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "x-rate-limit": "60 requests per minute",
        "responses": {
          "200": {
            "description": "Paginated immutable blueprint history"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Manager capability denied"
          },
          "404": {
            "description": "Concrete source occurrence not found"
          },
          "422": {
            "description": "Invalid cursor or limit"
          },
          "503": {
            "description": "Blueprint schema unavailable"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRecurrenceDefinitionBlueprintController@history"
      }
    },
    "/api/v2/events/{id}/recurrence-definition-blueprints/preview": {
      "post": {
        "summary": "Preview future recurring-event definition propagation",
        "description": "Returns participant-redacted counts, conflicts, a manifest hash and a confidential preview token without capturing or applying definitions.",
        "operationId": "EventRecurrenceDefinitionBlueprint_preview",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "x-rate-limit": "30 requests per minute",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "effective_from_recurrence_id",
                  "sections"
                ],
                "additionalProperties": false,
                "properties": {
                  "effective_from_recurrence_id": {
                    "type": "string",
                    "pattern": "^[0-9]{8}T[0-9]{6}Z$"
                  },
                  "sections": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "agenda": {
                        "type": "boolean"
                      },
                      "ticket_types": {
                        "type": "boolean"
                      },
                      "registration": {
                        "type": "boolean"
                      },
                      "safety": {
                        "type": "boolean"
                      },
                      "staff": {
                        "type": "boolean",
                        "description": "Explicit staff-assignment opt-in."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Definition-only preview"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Manager capability denied"
          },
          "404": {
            "description": "Concrete source occurrence not found"
          },
          "422": {
            "description": "Invalid definition selection"
          },
          "503": {
            "description": "Rollout or schema unavailable"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRecurrenceDefinitionBlueprintController@preview"
      }
    },
    "/api/v2/events/{id}/recurrence-definition-blueprints/commit": {
      "post": {
        "summary": "Capture a future recurring-event definition blueprint",
        "description": "Idempotently captures the exact previewed immutable definition manifest. Existing occurrences are never backfilled.",
        "operationId": "EventRecurrenceDefinitionBlueprint_commit",
        "tags": [
          "Events"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 191
            }
          }
        ],
        "x-rate-limit": "10 requests per minute",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "effective_from_recurrence_id",
                  "sections",
                  "preview_token"
                ],
                "additionalProperties": false,
                "properties": {
                  "effective_from_recurrence_id": {
                    "type": "string",
                    "pattern": "^[0-9]{8}T[0-9]{6}Z$"
                  },
                  "sections": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "boolean"
                    }
                  },
                  "preview_token": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 8192
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Matching idempotent replay"
          },
          "201": {
            "description": "Immutable blueprint captured"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Manager capability denied"
          },
          "404": {
            "description": "Concrete source occurrence not found"
          },
          "409": {
            "description": "Preview, definition, or idempotency conflict"
          },
          "422": {
            "description": "Invalid input"
          },
          "503": {
            "description": "Rollout or schema unavailable"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventRecurrenceDefinitionBlueprintController@commit"
      }
    },
    "/api/v2/podcasts": {
      "get": {
        "summary": "Browse member-visible podcast shows",
        "tags": [
          "Podcasts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated podcast shows",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastShowCollectionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          }
        }
      },
      "post": {
        "summary": "Create a podcast show",
        "tags": [
          "Podcasts",
          "Podcast Studio"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/PodcastShowInput"
        },
        "responses": {
          "201": {
            "description": "Show created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastStudioShowResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Podcast authoring unavailable"
          },
          "422": {
            "description": "Validation error"
          }
        }
      }
    },
    "/api/v2/podcasts/mine": {
      "get": {
        "summary": "List shows owned by the authenticated creator",
        "tags": [
          "Podcast Studio"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          }
        ],
        "responses": {
          "200": {
            "description": "Creator shows and capabilities",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastStudioCollectionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          }
        }
      }
    },
    "/api/v2/podcasts/{showReference}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/TenantId"
        },
        {
          "$ref": "#/components/parameters/PodcastShowReference"
        }
      ],
      "get": {
        "summary": "Get a member-visible podcast show",
        "description": "The show reference is a slug for this read operation.",
        "tags": [
          "Podcasts"
        ],
        "responses": {
          "200": {
            "description": "Podcast show with visible episodes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastShowResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "404": {
            "description": "Show not found or not visible"
          }
        }
      },
      "put": {
        "summary": "Update an owned podcast show",
        "description": "The show reference is the numeric show ID for this write operation.",
        "tags": [
          "Podcast Studio"
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/PodcastShowInput"
        },
        "responses": {
          "200": {
            "description": "Show updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastStudioShowResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "404": {
            "description": "Show not found or not owned"
          },
          "422": {
            "description": "Validation error"
          }
        }
      },
      "delete": {
        "summary": "Delete an owned podcast show",
        "description": "The show reference is the numeric show ID for this write operation.",
        "tags": [
          "Podcast Studio"
        ],
        "responses": {
          "200": {
            "description": "Show deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastOperationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "404": {
            "description": "Show not found or not owned"
          }
        }
      }
    },
    "/api/v2/podcasts/{id}/artwork": {
      "post": {
        "summary": "Upload platform-hosted artwork for an owned podcast show",
        "tags": [
          "Podcast Studio"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastId"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/PodcastArtworkUpload"
        },
        "responses": {
          "200": {
            "description": "Artwork uploaded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastArtworkUploadResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "404": {
            "description": "Show not found or not owned"
          },
          "422": {
            "description": "Invalid or unsupported image"
          }
        }
      }
    },
    "/api/v2/podcasts/{id}/publish": {
      "post": {
        "summary": "Publish or submit an owned show for moderation",
        "tags": [
          "Podcast Studio"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastId"
          }
        ],
        "responses": {
          "200": {
            "description": "Show publication state updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastStudioShowResponse"
                }
              }
            }
          },
          "404": {
            "description": "Show not found or not owned"
          }
        }
      }
    },
    "/api/v2/podcasts/{id}/archive": {
      "post": {
        "summary": "Archive an owned podcast show",
        "tags": [
          "Podcast Studio"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastId"
          }
        ],
        "responses": {
          "200": {
            "description": "Show archived",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastStudioShowResponse"
                }
              }
            }
          },
          "404": {
            "description": "Show not found or not owned"
          }
        }
      }
    },
    "/api/v2/podcasts/{id}/stats": {
      "get": {
        "summary": "Get privacy-preserving listen analytics for an owned show",
        "tags": [
          "Podcast Studio",
          "Analytics"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastId"
          }
        ],
        "responses": {
          "200": {
            "description": "Show listen statistics",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastOperationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Show not found or not owned"
          }
        }
      }
    },
    "/api/v2/podcasts/{id}/validate-feed": {
      "get": {
        "summary": "Validate an owned show's RSS readiness",
        "tags": [
          "Podcast Studio",
          "Podcasts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastId"
          }
        ],
        "responses": {
          "200": {
            "description": "Feed validation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastOperationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Show not found or not owned"
          }
        }
      }
    },
    "/api/v2/podcasts/{showId}/episodes": {
      "post": {
        "summary": "Create an episode for an owned show",
        "tags": [
          "Podcast Studio"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastShowId"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/PodcastEpisodeInput"
        },
        "responses": {
          "201": {
            "description": "Episode created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastEpisodeResponse"
                }
              }
            }
          },
          "404": {
            "description": "Show not found or not owned"
          },
          "422": {
            "description": "Validation or media error"
          }
        }
      }
    },
    "/api/v2/podcasts/{showId}/episodes/{episodeId}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/TenantId"
        },
        {
          "$ref": "#/components/parameters/PodcastShowId"
        },
        {
          "$ref": "#/components/parameters/PodcastEpisodeId"
        }
      ],
      "put": {
        "summary": "Update an owned podcast episode",
        "tags": [
          "Podcast Studio"
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/PodcastEpisodeInput"
        },
        "responses": {
          "200": {
            "description": "Episode updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastEpisodeResponse"
                }
              }
            }
          },
          "404": {
            "description": "Episode not found or not owned"
          },
          "422": {
            "description": "Validation or media error"
          }
        }
      },
      "delete": {
        "summary": "Delete an owned podcast episode",
        "tags": [
          "Podcast Studio"
        ],
        "responses": {
          "200": {
            "description": "Episode deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastOperationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Episode not found or not owned"
          }
        }
      }
    },
    "/api/v2/podcasts/{showId}/episodes/{episodeId}/cover": {
      "post": {
        "summary": "Upload a platform-hosted cover image for an owned podcast episode",
        "tags": [
          "Podcast Studio"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastShowId"
          },
          {
            "$ref": "#/components/parameters/PodcastEpisodeId"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/PodcastArtworkUpload"
        },
        "responses": {
          "200": {
            "description": "Episode cover uploaded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastArtworkUploadResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "404": {
            "description": "Episode not found or not owned"
          },
          "422": {
            "description": "Invalid or unsupported image"
          }
        }
      }
    },
    "/api/v2/podcasts/{showId}/episodes/{episodeId}/publish": {
      "post": {
        "summary": "Publish or submit an episode for moderation",
        "tags": [
          "Podcast Studio"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastShowId"
          },
          {
            "$ref": "#/components/parameters/PodcastEpisodeId"
          }
        ],
        "responses": {
          "200": {
            "description": "Episode publication state updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastEpisodeResponse"
                }
              }
            }
          },
          "404": {
            "description": "Episode not found or not owned"
          },
          "409": {
            "description": "Hosted media is not ready"
          }
        }
      }
    },
    "/api/v2/podcasts/{showId}/episodes/{episodeId}/archive": {
      "post": {
        "summary": "Archive an owned podcast episode",
        "tags": [
          "Podcast Studio"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastShowId"
          },
          {
            "$ref": "#/components/parameters/PodcastEpisodeId"
          }
        ],
        "responses": {
          "200": {
            "description": "Episode archived",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastEpisodeResponse"
                }
              }
            }
          },
          "404": {
            "description": "Episode not found or not owned"
          }
        }
      }
    },
    "/api/v2/podcasts/{showId}/subscribe": {
      "post": {
        "summary": "Toggle subscription to a visible podcast show",
        "tags": [
          "Podcasts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastShowId"
          }
        ],
        "responses": {
          "200": {
            "description": "Subscription state updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastOperationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Show not found or not visible"
          }
        }
      }
    },
    "/api/v2/podcasts/episodes/{episodeId}/reaction": {
      "post": {
        "summary": "Toggle a reaction on a visible episode",
        "tags": [
          "Podcasts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastEpisodeId"
          }
        ],
        "responses": {
          "200": {
            "description": "Reaction state updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastOperationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Episode not found or not visible"
          }
        }
      }
    },
    "/api/v2/podcasts/episodes/{episodeId}/report": {
      "post": {
        "summary": "Report a visible podcast episode",
        "tags": [
          "Podcasts",
          "Moderation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastEpisodeId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "reason"
                ],
                "properties": {
                  "reason": {
                    "type": "string",
                    "maxLength": 80
                  },
                  "details": {
                    "type": "string",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Report created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastOperationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Episode not found or not visible"
          },
          "409": {
            "description": "Episode already reported by this member"
          }
        }
      }
    },
    "/api/v2/podcasts/episodes/{episodeId}/listen": {
      "post": {
        "summary": "Record a privacy-preserving podcast listen milestone",
        "tags": [
          "Podcasts",
          "Analytics"
        ],
        "security": [],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastEpisodeId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "session_id": {
                    "type": "string",
                    "maxLength": 191
                  },
                  "listened_seconds": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "completed": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Listen milestone accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastOperationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Episode not found or not publicly listenable"
          }
        }
      }
    },
    "/api/v2/podcasts/feed/{tenantId}/{showSlug}.xml": {
      "get": {
        "summary": "Get a public, identity-free RSS feed for a tenant show",
        "tags": [
          "Podcast Distribution"
        ],
        "security": [],
        "parameters": [
          {
            "$ref": "#/components/parameters/PodcastTenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastShowSlug"
          }
        ],
        "responses": {
          "200": {
            "description": "RSS 2.0 podcast feed",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Feed unavailable or show not public"
          }
        }
      }
    },
    "/api/v2/podcasts/{showSlug}/feed.xml": {
      "get": {
        "summary": "Get a public, identity-free RSS feed in the resolved tenant",
        "tags": [
          "Podcast Distribution"
        ],
        "security": [],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastShowSlug"
          }
        ],
        "responses": {
          "200": {
            "description": "RSS 2.0 podcast feed",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Feed unavailable or show not public"
          }
        }
      }
    },
    "/api/v2/podcasts/media/{tenantId}/{episodeId}/audio": {
      "get": {
        "summary": "Stream public audio or capability-signed restricted audio",
        "tags": [
          "Podcast Distribution"
        ],
        "security": [],
        "parameters": [
          {
            "$ref": "#/components/parameters/PodcastTenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastEpisodeId"
          },
          {
            "name": "expires",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "signature",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Range",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Complete audio response or cloud redirect"
          },
          "206": {
            "description": "Partial audio response"
          },
          "404": {
            "description": "Episode unavailable, media unsafe, or signature invalid"
          }
        }
      }
    },
    "/api/v2/podcasts/transcripts/{tenantId}/{episodeId}.txt": {
      "get": {
        "summary": "Get the transcript for a public episode",
        "tags": [
          "Podcast Distribution"
        ],
        "security": [],
        "parameters": [
          {
            "$ref": "#/components/parameters/PodcastTenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastEpisodeId"
          }
        ],
        "responses": {
          "200": {
            "description": "Plain-text transcript",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Transcript unavailable or episode not public"
          }
        }
      }
    },
    "/api/v2/podcasts/chapters/{tenantId}/{episodeId}.json": {
      "get": {
        "summary": "Get Podcast Namespace chapters for a public episode",
        "tags": [
          "Podcast Distribution"
        ],
        "security": [],
        "parameters": [
          {
            "$ref": "#/components/parameters/PodcastTenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastEpisodeId"
          }
        ],
        "responses": {
          "200": {
            "description": "Podcast Namespace chapter document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "version",
                    "chapters"
                  ],
                  "properties": {
                    "version": {
                      "type": "string"
                    },
                    "chapters": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PodcastChapter"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Chapters unavailable or episode not public"
          }
        }
      }
    },
    "/api/v2/podcasts/{showSlug}/{episodeSlug}": {
      "get": {
        "summary": "Get a member-visible podcast episode",
        "tags": [
          "Podcasts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastShowSlug"
          },
          {
            "$ref": "#/components/parameters/PodcastEpisodeSlug"
          }
        ],
        "responses": {
          "200": {
            "description": "Podcast episode",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastEpisodeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required"
          },
          "404": {
            "description": "Episode not found or not visible"
          }
        }
      }
    },
    "/api/v2/admin/config/podcasts": {
      "get": {
        "summary": "Get podcast configuration",
        "tags": [
          "Podcast Administration"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          }
        ],
        "responses": {
          "200": {
            "description": "Podcast configuration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastConfigResponse"
                }
              }
            }
          },
          "403": {
            "description": "Administrator required"
          }
        }
      }
    },
    "/api/v2/admin/config/podcasts/bulk": {
      "put": {
        "summary": "Update podcast configuration",
        "tags": [
          "Podcast Administration"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "settings"
                ],
                "properties": {
                  "settings": {
                    "type": "object",
                    "additionalProperties": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Podcast configuration updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastConfigResponse"
                }
              }
            }
          },
          "403": {
            "description": "Administrator required"
          },
          "422": {
            "description": "Invalid configuration"
          }
        }
      }
    },
    "/api/v2/admin/podcasts": {
      "get": {
        "summary": "Get podcast moderation, reports, analytics, and readiness queues",
        "tags": [
          "Podcast Administration"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          }
        ],
        "responses": {
          "200": {
            "description": "Podcast administration dashboard",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastAdminIndexResponse"
                }
              }
            }
          },
          "403": {
            "description": "Administrator required"
          }
        }
      }
    },
    "/api/v2/admin/podcasts/shows/{id}/moderate": {
      "post": {
        "summary": "Moderate a podcast show",
        "tags": [
          "Podcast Administration",
          "Moderation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastId"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/PodcastModerationInput"
        },
        "responses": {
          "200": {
            "description": "Show moderated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastStudioShowResponse"
                }
              }
            }
          },
          "404": {
            "description": "Show not found"
          }
        }
      }
    },
    "/api/v2/admin/podcasts/shows/{id}/validate-feed": {
      "get": {
        "summary": "Validate a show's RSS feed as an administrator",
        "tags": [
          "Podcast Administration"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastId"
          }
        ],
        "responses": {
          "200": {
            "description": "Feed validation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastOperationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Show not found"
          }
        }
      }
    },
    "/api/v2/admin/podcasts/episodes/{id}/moderate": {
      "post": {
        "summary": "Moderate a podcast episode",
        "tags": [
          "Podcast Administration",
          "Moderation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastId"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/PodcastModerationInput"
        },
        "responses": {
          "200": {
            "description": "Episode moderated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastEpisodeResponse"
                }
              }
            }
          },
          "404": {
            "description": "Episode not found"
          }
        }
      }
    },
    "/api/v2/admin/podcasts/reports/{reportId}/resolve": {
      "post": {
        "summary": "Resolve one podcast episode report",
        "tags": [
          "Podcast Administration",
          "Moderation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          },
          {
            "$ref": "#/components/parameters/PodcastReportId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "status"
                ],
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "resolved",
                      "dismissed",
                      "escalated"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Report resolved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastOperationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Report not found"
          }
        }
      }
    },
    "/api/v2/admin/podcasts/storage/verify": {
      "post": {
        "summary": "Verify the configured podcast media storage",
        "tags": [
          "Podcast Administration"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/TenantId"
          }
        ],
        "responses": {
          "200": {
            "description": "Storage verification result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PodcastOperationResponse"
                }
              }
            }
          },
          "403": {
            "description": "Administrator required"
          }
        }
      }
    },
    "/api/v2/partner-venues": {
      "get": {
        "summary": "GET /api/v2/partner-venues",
        "description": "Maintained Partner Venues operation. Active venue directory for members: name, category, informational offer summary, address, logo. No coupons or discounts - engagement recording only.",
        "operationId": "PartnerVenueController_index",
        "tags": [
          "Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\PartnerVenueController@index"
      }
    },
    "/api/v2/partner-venues/pass": {
      "get": {
        "summary": "GET /api/v2/partner-venues/pass",
        "description": "Maintained Partner Venues operation. Get-or-create the member's venue pass: an opaque bearer token plus the check-in URL the QR encodes.",
        "operationId": "PartnerVenueController_pass",
        "tags": [
          "Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\PartnerVenueController@pass"
      }
    },
    "/api/v2/partner-venues/pass/rotate": {
      "post": {
        "summary": "POST /api/v2/partner-venues/pass/rotate",
        "description": "Maintained Partner Venues operation. Rotate the member's pass token, invalidating the previous QR.",
        "operationId": "PartnerVenueController_rotatePass",
        "tags": [
          "Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\PartnerVenueController@rotatePass"
      }
    },
    "/api/v2/partner-venues/my-visits": {
      "get": {
        "summary": "GET /api/v2/partner-venues/my-visits",
        "description": "Maintained Partner Venues operation. The member's own recorded visits.",
        "operationId": "PartnerVenueController_myVisits",
        "tags": [
          "Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\PartnerVenueController@myVisits"
      }
    },
    "/api/v2/partner-venues/visits/verify/{token}": {
      "post": {
        "summary": "POST /api/v2/partner-venues/visits/verify/{token}",
        "description": "Maintained Partner Venues operation. Staff-side visit recording: verifies a scanned pass token and records at most one visit per member per venue per day. Requires an active staff membership on the venue or tenant admin.",
        "operationId": "PartnerVenueController_recordVisit",
        "tags": [
          "Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\PartnerVenueController@recordVisit",
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "venue_id": {
                    "type": "integer",
                    "minimum": 1
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/admin/partner-venues": {
      "get": {
        "summary": "GET /api/v2/admin/partner-venues",
        "description": "Maintained Partner Venues operation. Admin venue list with visit/member/staff counts; filterable by status.",
        "operationId": "AdminPartnerVenueController_index",
        "tags": [
          "Admin Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminPartnerVenueController@index",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "active",
                "paused",
                "archived"
              ]
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/admin/partner-venues",
        "description": "Maintained Partner Venues operation. Create a venue. offer_summary is informational text only.",
        "operationId": "AdminPartnerVenueController_store",
        "tags": [
          "Admin Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminPartnerVenueController@store"
      }
    },
    "/api/v2/admin/partner-venues/{id}": {
      "put": {
        "summary": "PUT /api/v2/admin/partner-venues/{id}",
        "description": "Maintained Partner Venues operation. Update a venue.",
        "operationId": "AdminPartnerVenueController_update",
        "tags": [
          "Admin Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminPartnerVenueController@update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/partner-venues/{id}/archive": {
      "post": {
        "summary": "POST /api/v2/admin/partner-venues/{id}/archive",
        "description": "Maintained Partner Venues operation. Archive a venue; pass scanning stops but history remains.",
        "operationId": "AdminPartnerVenueController_archive",
        "tags": [
          "Admin Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminPartnerVenueController@archive",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/partner-venues/{id}/staff": {
      "get": {
        "summary": "GET /api/v2/admin/partner-venues/{id}/staff",
        "description": "Maintained Partner Venues operation. Staff roster (org_members, org_type=partner_venue).",
        "operationId": "AdminPartnerVenueController_staff",
        "tags": [
          "Admin Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminPartnerVenueController@staff",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/v2/admin/partner-venues/{id}/staff",
        "description": "Maintained Partner Venues operation. Add a staff member (roles owner|admin|member; any active row may record visits).",
        "operationId": "AdminPartnerVenueController_addStaff",
        "tags": [
          "Admin Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminPartnerVenueController@addStaff",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "user_id"
                ],
                "properties": {
                  "user_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "role": {
                    "type": "string",
                    "enum": [
                      "owner",
                      "admin",
                      "member"
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/admin/partner-venues/{id}/staff/{userId}": {
      "delete": {
        "summary": "DELETE /api/v2/admin/partner-venues/{id}/staff/{userId}",
        "description": "Maintained Partner Venues operation. Remove a staff member.",
        "operationId": "AdminPartnerVenueController_removeStaff",
        "tags": [
          "Admin Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminPartnerVenueController@removeStaff",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v2/admin/partner-venues/reports/summary": {
      "get": {
        "summary": "GET /api/v2/admin/partner-venues/reports/summary",
        "description": "Maintained Partner Venues operation. Per-venue engagement summary: total visits, unique members, recent window.",
        "operationId": "AdminPartnerVenueController_summary",
        "tags": [
          "Admin Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminPartnerVenueController@summary",
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 365
            }
          }
        ]
      }
    },
    "/api/v2/admin/partner-venues/visits/export.csv": {
      "get": {
        "summary": "GET /api/v2/admin/partner-venues/visits/export.csv",
        "description": "Maintained Partner Venues operation. Streamed CSV of visits (capped at 20,000 rows), filterable by venue_id and created-on date range.",
        "operationId": "AdminPartnerVenueController_exportCsv",
        "tags": [
          "Admin Partner Venues"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\AdminPartnerVenueController@exportCsv",
        "parameters": [
          {
            "name": "venue_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ]
      }
    },
    "/api/v2/public/events": {
      "get": {
        "summary": "GET /api/v2/public/events",
        "description": "Maintained Events operation served by EventPublicController@index. Anonymous listing of published, publicly visible events behind the events + public_events tenant flags. Serves the PublicEventProjection allowlist only — no joining links, RSVP/attendee data, or organiser contact details; organiser first name only.",
        "operationId": "EventPublic_index",
        "tags": [
          "Public Events"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventPublicController@index",
        "parameters": [
          {
            "name": "when",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "upcoming",
                "past",
                "all"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v2/public/events/{id}": {
      "get": {
        "summary": "GET /api/v2/public/events/{id}",
        "description": "Maintained Events operation served by EventPublicController@show. Anonymous detail view of one published event (adds description and venue accessibility to the projection). Draft, private-group and unknown events return an identical 404 so the endpoint cannot be used to probe.",
        "operationId": "EventPublic_show",
        "tags": [
          "Public Events"
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "403": {
            "description": "Tenant, feature, policy, or capability denied"
          },
          "404": {
            "description": "Resource not found in the current tenant"
          },
          "422": {
            "description": "Validation or state-transition failure"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "x-controller-action": "App\\Http\\Controllers\\Api\\EventPublicController@show",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    }
  }
}
