{
  "version": "1.0",
  "modules": [
    {
      "name": "Users",
      "prefix": "/users",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create User",
          "description": "Creates a new user account with role-based permissions. Validates email uniqueness, password strength (minimum 8 characters with mixed case, numbers, and symbols), and ensures at least one role is assigned. Returns 409 if email already exists.",
          "request_body": {
            "schema_name": "UserCreate",
            "fields": [
              {
                "name": "email",
                "type": "EmailStr",
                "required": true
              },
              {
                "name": "first_name",
                "type": "str",
                "required": false
              },
              {
                "name": "last_name",
                "type": "str",
                "required": false
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "UserRole",
                "required": true,
                "enum_values": [
                  "ADMINISTRATOR",
                  "VENUE_MANAGER",
                  "PRODUCTION_MANAGER",
                  "TECHNICAL_DIRECTOR",
                  "STAFF_MEMBER",
                  "PERFORMER",
                  "GUEST"
                ]
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "password",
                "type": "str",
                "required": false
              }
            ]
          },
          "response": {
            "schema_name": "UserResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "type": "str",
                "required": true
              },
              {
                "name": "first_name",
                "type": "str",
                "required": true
              },
              {
                "name": "last_name",
                "type": "str",
                "required": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "str",
                "required": true
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/",
          "summary": "List Users",
          "description": "Returns a paginated list of users. Supports optional filtering by role and active status, plus text search across first name, last name, and email fields.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "role",
              "type": "UserRole",
              "required": false
            },
            {
              "name": "is_active",
              "type": "bool",
              "required": false
            },
            {
              "name": "search",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "UserResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "type": "str",
                "required": true
              },
              {
                "name": "first_name",
                "type": "str",
                "required": true
              },
              {
                "name": "last_name",
                "type": "str",
                "required": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "str",
                "required": true
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{user_id}",
          "summary": "Get User",
          "description": "Retrieves a single user by ID. Returns 404 if user not found.",
          "path_params": [
            {
              "name": "user_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "UserResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "type": "str",
                "required": true
              },
              {
                "name": "first_name",
                "type": "str",
                "required": true
              },
              {
                "name": "last_name",
                "type": "str",
                "required": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "str",
                "required": true
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{user_id}/details",
          "summary": "Get User Details",
          "description": "Retrieves comprehensive user information including venue manager assignments, staff assignments, cast assignments, assigned tasks, and schedules. Pre-loads all related entities to avoid N+1 queries. Returns 404 if user not found.",
          "path_params": [
            {
              "name": "user_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "UserDetailsResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "type": "str",
                "required": true
              },
              {
                "name": "first_name",
                "type": "str",
                "required": true
              },
              {
                "name": "last_name",
                "type": "str",
                "required": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "str",
                "required": true
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "venue_managers",
                "type": "list[VenueManagerResponse]",
                "required": true
              },
              {
                "name": "staff_assignments",
                "type": "list[StaffAssignmentResponse]",
                "required": true
              },
              {
                "name": "cast_assignments",
                "type": "list[CastAssignmentResponse]",
                "required": true
              },
              {
                "name": "tasks_assigned",
                "type": "list[TaskResponse]",
                "required": true
              },
              {
                "name": "schedules",
                "type": "list[ScheduleResponse]",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PATCH",
          "path": "/{user_id}",
          "summary": "Update User",
          "description": "Updates user information. All fields are optional. Validates email uniqueness if changed, password strength if provided, and phone format. Returns 404 if user not found, 409 if new email already exists.",
          "path_params": [
            {
              "name": "user_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "UserUpdate",
            "fields": [
              {
                "name": "email",
                "type": "EmailStr",
                "required": false,
                "nullable": true
              },
              {
                "name": "first_name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "last_name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "UserRole",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "ADMINISTRATOR",
                  "VENUE_MANAGER",
                  "PRODUCTION_MANAGER",
                  "TECHNICAL_DIRECTOR",
                  "STAFF_MEMBER",
                  "PERFORMER",
                  "GUEST"
                ]
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "nullable": true
              },
              {
                "name": "password",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "UserResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "type": "str",
                "required": true
              },
              {
                "name": "first_name",
                "type": "str",
                "required": true
              },
              {
                "name": "last_name",
                "type": "str",
                "required": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "str",
                "required": true
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/{user_id}",
          "summary": "Delete User",
          "description": "Permanently deletes a user account. Cascades to related venue manager assignments, staff assignments, cast assignments, and notifications. Returns 404 if user not found.",
          "path_params": [
            {
              "name": "user_id",
              "type": "str"
            }
          ],
          "status_code": 200
        }
      ]
    },
    {
      "name": "Venue Management",
      "prefix": "/venues",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create Venue",
          "description": "Creates a new venue record with address and contact information. Validates that capacity is positive if provided. Returns 400 if validation fails.",
          "request_body": {
            "schema_name": "VenueCreate",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "EmailStr",
                "required": false,
                "nullable": true
              },
              {
                "name": "website",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "default": true
              }
            ]
          },
          "response": {
            "schema_name": "VenueResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "EmailStr",
                "required": false,
                "nullable": true
              },
              {
                "name": "website",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/",
          "summary": "List Venues",
          "description": "Returns a paginated list of venues. Supports optional filters for search (name, city, country), active status, city, and country. Results are ordered by venue name.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "search",
              "type": "str",
              "required": false
            },
            {
              "name": "is_active",
              "type": "bool",
              "required": false
            },
            {
              "name": "city",
              "type": "str",
              "required": false
            },
            {
              "name": "country",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "VenueResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "EmailStr",
                "required": false,
                "nullable": true
              },
              {
                "name": "website",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{venue_id}",
          "summary": "Get Venue",
          "description": "Returns a single venue by ID. Returns 404 if the venue does not exist.",
          "path_params": [
            {
              "name": "venue_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "VenueResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "EmailStr",
                "required": false,
                "nullable": true
              },
              {
                "name": "website",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/{venue_id}",
          "summary": "Update Venue",
          "description": "Updates an existing venue. Only provided fields are updated. Validates capacity is positive if provided. Returns 404 if venue not found, 400 if validation fails.",
          "path_params": [
            {
              "name": "venue_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "VenueUpdate",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "EmailStr",
                "required": false,
                "nullable": true
              },
              {
                "name": "website",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "VenueResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "EmailStr",
                "required": false,
                "nullable": true
              },
              {
                "name": "website",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/{venue_id}",
          "summary": "Delete Venue",
          "description": "Deletes a venue by ID. Returns 404 if venue not found, 409 if venue has active productions or related records that prevent deletion.",
          "path_params": [
            {
              "name": "venue_id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{venue_id}/details",
          "summary": "Get Venue Details",
          "description": "Returns comprehensive venue information including all stages, productions, venue managers, resources, and bookings. Uses eager loading to prevent N+1 queries. Returns 404 if venue not found.",
          "path_params": [
            {
              "name": "venue_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "VenueDetailsResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "website",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "stages",
                "type": "List[StageDetailResponse]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "name",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "capacity",
                    "type": "int",
                    "required": false,
                    "nullable": true
                  }
                ]
              },
              {
                "name": "productions",
                "type": "List[ProductionSummaryResponse]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "title",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "status",
                    "type": "str",
                    "required": true
                  }
                ]
              },
              {
                "name": "venue_managers",
                "type": "List[VenueManagerDetailResponse]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "user",
                    "type": "VenueManagerUserResponse",
                    "required": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "first_name",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "last_name",
                        "type": "str",
                        "required": true
                      }
                    ]
                  }
                ]
              },
              {
                "name": "resources",
                "type": "List[ResourceSummaryResponse]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "name",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "category",
                    "type": "dict",
                    "required": true
                  }
                ]
              },
              {
                "name": "bookings",
                "type": "List[BookingSummaryResponse]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "event_name",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "status",
                    "type": "str",
                    "required": true
                  }
                ]
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/managers",
          "summary": "Create Venue Manager Assignment",
          "description": "Assigns a user as a manager for a venue. Validates that both user and venue exist. Returns 404 if user or venue not found, 409 if assignment already exists.",
          "request_body": {
            "schema_name": "VenuemanagerCreate",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              }
            ]
          },
          "response": {
            "schema_name": "VenuemanagerResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/managers",
          "summary": "List Venue Manager Assignments",
          "description": "Returns a paginated list of venue manager assignments. Supports optional filters for user_id and venue_id. Results are ordered by creation date descending.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "user_id",
              "type": "str",
              "required": false
            },
            {
              "name": "venue_id",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "VenuemanagerResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/managers/{venuemanager_id}",
          "summary": "Get Venue Manager Assignment",
          "description": "Returns a single venue manager assignment by ID. Returns 404 if the assignment does not exist.",
          "path_params": [
            {
              "name": "venuemanager_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "VenuemanagerResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/managers/{venuemanager_id}",
          "summary": "Update Venue Manager Assignment",
          "description": "Updates an existing venue manager assignment. Validates that new user and venue exist if provided. Returns 404 if assignment, user, or venue not found.",
          "path_params": [
            {
              "name": "venuemanager_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "VenuemanagerUpdate",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "VenuemanagerResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/managers/{venuemanager_id}",
          "summary": "Delete Venue Manager Assignment",
          "description": "Removes a venue manager assignment. Returns 404 if assignment not found.",
          "path_params": [
            {
              "name": "venuemanager_id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/stages",
          "summary": "Create Stage",
          "description": "Creates a new stage within a venue. Validates that venue exists and capacity and dimensions are positive if provided. Returns 404 if venue not found, 400 if validation fails.",
          "request_body": {
            "schema_name": "StageCreate",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "width_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "depth_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "height_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_type",
                "type": "StageType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "PROSCENIUM",
                  "THRUST",
                  "ARENA",
                  "BLACK_BOX",
                  "FLEXIBLE",
                  "OUTDOOR",
                  "OTHER"
                ]
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "default": true
              }
            ]
          },
          "response": {
            "schema_name": "StageResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "width_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "depth_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "height_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_type",
                "type": "StageType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "PROSCENIUM",
                  "THRUST",
                  "ARENA",
                  "BLACK_BOX",
                  "FLEXIBLE",
                  "OUTDOOR",
                  "OTHER"
                ]
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/stages",
          "summary": "List Stages",
          "description": "Returns a paginated list of stages. Supports optional filters for venue_id, active status, search (name), and stage type. Results are ordered by stage name.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "venue_id",
              "type": "str",
              "required": false
            },
            {
              "name": "is_active",
              "type": "bool",
              "required": false
            },
            {
              "name": "search",
              "type": "str",
              "required": false
            },
            {
              "name": "stage_type",
              "type": "StageType",
              "required": false
            }
          ],
          "response": {
            "schema_name": "StageResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "width_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "depth_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "height_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_type",
                "type": "StageType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "PROSCENIUM",
                  "THRUST",
                  "ARENA",
                  "BLACK_BOX",
                  "FLEXIBLE",
                  "OUTDOOR",
                  "OTHER"
                ]
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/stages/{stage_id}",
          "summary": "Get Stage",
          "description": "Returns a single stage by ID. Returns 404 if the stage does not exist.",
          "path_params": [
            {
              "name": "stage_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "StageResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "width_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "depth_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "height_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_type",
                "type": "StageType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "PROSCENIUM",
                  "THRUST",
                  "ARENA",
                  "BLACK_BOX",
                  "FLEXIBLE",
                  "OUTDOOR",
                  "OTHER"
                ]
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/stages/{stage_id}",
          "summary": "Update Stage",
          "description": "Updates an existing stage. Only provided fields are updated. Validates venue exists if changed, and capacity and dimensions are positive if provided. Returns 404 if stage or venue not found, 400 if validation fails.",
          "path_params": [
            {
              "name": "stage_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "StageUpdate",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "width_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "depth_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "height_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_type",
                "type": "StageType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "PROSCENIUM",
                  "THRUST",
                  "ARENA",
                  "BLACK_BOX",
                  "FLEXIBLE",
                  "OUTDOOR",
                  "OTHER"
                ]
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "StageResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "capacity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "width_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "depth_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "height_feet",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_type",
                "type": "StageType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "PROSCENIUM",
                  "THRUST",
                  "ARENA",
                  "BLACK_BOX",
                  "FLEXIBLE",
                  "OUTDOOR",
                  "OTHER"
                ]
              },
              {
                "name": "is_active",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/stages/{stage_id}",
          "summary": "Delete Stage",
          "description": "Deletes a stage by ID. Returns 404 if stage not found, 409 if stage has scheduled performances or rehearsals that prevent deletion.",
          "path_params": [
            {
              "name": "stage_id",
              "type": "str"
            }
          ],
          "status_code": 200
        }
      ]
    },
    {
      "name": "Productions",
      "prefix": "/productions",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create Production",
          "description": "Creates a new production record. Validates that the venue exists and that start date is before end date if both are provided. Returns 404 if venue not found, 400 if date validation fails.",
          "request_body": {
            "schema_name": "ProductionCreate",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "director",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "playwright",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "composer",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              }
            ]
          },
          "response": {
            "schema_name": "ProductionResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "director",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "playwright",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "composer",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/",
          "summary": "List Productions",
          "description": "Returns a paginated list of productions. Supports optional filters for venue, status, and text search on title, director, and playwright fields.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "venue_id",
              "type": "str",
              "required": false
            },
            {
              "name": "status",
              "type": "str",
              "required": false
            },
            {
              "name": "search",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "ProductionResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "director",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "playwright",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "composer",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{production_id}",
          "summary": "Get Production",
          "description": "Returns a single production by ID. Returns 404 if production not found.",
          "path_params": [
            {
              "name": "production_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ProductionResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "director",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "playwright",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "composer",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/{production_id}",
          "summary": "Update Production",
          "description": "Updates an existing production. Validates venue existence and date ranges. Returns 404 if production or venue not found, 400 if date validation fails.",
          "path_params": [
            {
              "name": "production_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "ProductionUpdate",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "director",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "playwright",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "composer",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "ProductionResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "director",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "playwright",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "composer",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/{production_id}",
          "summary": "Delete Production",
          "description": "Deletes a production and all associated performances, rehearsals, and cast assignments via cascade. Returns 404 if production not found.",
          "path_params": [
            {
              "name": "production_id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{production_id}/details",
          "summary": "Get Production Details",
          "description": "Returns comprehensive production details including venue, performances with stages, rehearsals, cast and staff assignments, resource assignments with categories, budget, expenses, tasks, documents, and notes. All related data is eagerly loaded to avoid N+1 queries.",
          "path_params": [
            {
              "name": "production_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ProductionDetailResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "director",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "playwright",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "composer",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "venue",
                "type": "VenueSimple",
                "required": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "name",
                    "type": "str",
                    "required": true
                  }
                ]
              },
              {
                "name": "performances",
                "type": "List[PerformanceDetail]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "performance_date",
                    "type": "date",
                    "required": true
                  },
                  {
                    "name": "start_time",
                    "type": "time",
                    "required": true
                  },
                  {
                    "name": "status",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "stage",
                    "type": "StageSimple",
                    "required": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "name",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "capacity",
                        "type": "int",
                        "required": false,
                        "nullable": true
                      }
                    ]
                  }
                ]
              },
              {
                "name": "rehearsals",
                "type": "List[RehearsalDetail]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "rehearsal_date",
                    "type": "date",
                    "required": true
                  },
                  {
                    "name": "start_time",
                    "type": "time",
                    "required": true
                  },
                  {
                    "name": "end_time",
                    "type": "time",
                    "required": true
                  },
                  {
                    "name": "status",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "stage",
                    "type": "StageSimple",
                    "required": false,
                    "nullable": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "name",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "capacity",
                        "type": "int",
                        "required": false,
                        "nullable": true
                      }
                    ]
                  }
                ]
              },
              {
                "name": "cast_assignments",
                "type": "List[CastassignmentDetail]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "role_name",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "role_type",
                    "type": "str",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "user",
                    "type": "UserSimple",
                    "required": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "first_name",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "last_name",
                        "type": "str",
                        "required": true
                      }
                    ]
                  }
                ]
              },
              {
                "name": "staff_assignments",
                "type": "List[StaffassignmentDetail]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "role",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "user",
                    "type": "UserSimple",
                    "required": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "first_name",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "last_name",
                        "type": "str",
                        "required": true
                      }
                    ]
                  }
                ]
              },
              {
                "name": "resource_assignments",
                "type": "List[ResourceassignmentDetail]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "production",
                    "type": "ProductionSimple",
                    "required": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "title",
                        "type": "str",
                        "required": true
                      }
                    ]
                  },
                  {
                    "name": "assigned_date",
                    "type": "date",
                    "required": true
                  },
                  {
                    "name": "return_date",
                    "type": "date",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "quantity",
                    "type": "int",
                    "required": true
                  },
                  {
                    "name": "notes",
                    "type": "str",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "created_at",
                    "type": "datetime",
                    "required": true
                  }
                ]
              },
              {
                "name": "budget",
                "type": "BudgetSimple",
                "required": false,
                "nullable": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "total_budget",
                    "type": "Decimal",
                    "required": true
                  }
                ]
              },
              {
                "name": "expenses",
                "type": "List[ExpenseSimple]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "category",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "amount",
                    "type": "Decimal",
                    "required": true
                  },
                  {
                    "name": "expense_date",
                    "type": "date",
                    "required": true
                  }
                ]
              },
              {
                "name": "tasks",
                "type": "List[TaskSimple]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "title",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "status",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "assigned_to_user",
                    "type": "UserSimple",
                    "required": false,
                    "nullable": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "first_name",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "last_name",
                        "type": "str",
                        "required": true
                      }
                    ]
                  }
                ]
              },
              {
                "name": "documents",
                "type": "List[DocumentSimple]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "title",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "uploaded_by_user",
                    "type": "UserSimple",
                    "required": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "first_name",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "last_name",
                        "type": "str",
                        "required": true
                      }
                    ]
                  }
                ]
              },
              {
                "name": "notes",
                "type": "List[NoteSimple]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "content",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "created_by_user",
                    "type": "UserSimple",
                    "required": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "first_name",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "last_name",
                        "type": "str",
                        "required": true
                      }
                    ]
                  }
                ]
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/{production_id}/complete",
          "summary": "Complete Production",
          "description": "Marks a production as completed and processes return of all assigned resources. Updates resource availability and sets return dates on resource assignments. Returns 400 if production is already completed, 404 if production not found.",
          "path_params": [
            {
              "name": "production_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ProductionResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "director",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "playwright",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "composer",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/performances",
          "summary": "Create Performance",
          "description": "Creates a new performance record. Validates that production and stage exist and that performance date falls within production run dates. Returns 404 if production or stage not found, 400 if date validation fails.",
          "request_body": {
            "schema_name": "PerformanceCreate",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": true
              },
              {
                "name": "performance_date",
                "type": "date",
                "required": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "doors_open_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "PerformanceResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": true
              },
              {
                "name": "performance_date",
                "type": "date",
                "required": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "doors_open_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/performances",
          "summary": "List Performances",
          "description": "Returns a paginated list of performances. Supports optional filters for production, stage, status, and date range.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "production_id",
              "type": "str",
              "required": false
            },
            {
              "name": "stage_id",
              "type": "str",
              "required": false
            },
            {
              "name": "status",
              "type": "str",
              "required": false
            },
            {
              "name": "date_from",
              "type": "date",
              "required": false
            },
            {
              "name": "date_to",
              "type": "date",
              "required": false
            }
          ],
          "response": {
            "schema_name": "PerformanceResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": true
              },
              {
                "name": "performance_date",
                "type": "date",
                "required": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "doors_open_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/performances/{performance_id}",
          "summary": "Get Performance",
          "description": "Returns a single performance by ID. Returns 404 if performance not found.",
          "path_params": [
            {
              "name": "performance_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "PerformanceResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": true
              },
              {
                "name": "performance_date",
                "type": "date",
                "required": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "doors_open_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/performances/{performance_id}",
          "summary": "Update Performance",
          "description": "Updates an existing performance. Validates production and stage existence. Returns 404 if performance, production, or stage not found.",
          "path_params": [
            {
              "name": "performance_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "PerformanceUpdate",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "performance_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "doors_open_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "PerformanceResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": true
              },
              {
                "name": "performance_date",
                "type": "date",
                "required": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "doors_open_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/performances/{performance_id}",
          "summary": "Delete Performance",
          "description": "Deletes a performance record. Returns 404 if performance not found.",
          "path_params": [
            {
              "name": "performance_id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/performances/{performance_id}/details",
          "summary": "Get Performance Details",
          "description": "Returns detailed performance information including production with venue, stage details, and associated notes. All related data is eagerly loaded.",
          "path_params": [
            {
              "name": "performance_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "PerformanceDetailResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": true
              },
              {
                "name": "performance_date",
                "type": "date",
                "required": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "doors_open_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "production",
                "type": "ProductionSimple",
                "required": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "title",
                    "type": "str",
                    "required": true
                  }
                ]
              },
              {
                "name": "stage",
                "type": "StageSimple",
                "required": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "name",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "capacity",
                    "type": "int",
                    "required": false,
                    "nullable": true
                  }
                ]
              },
              {
                "name": "performance_notes",
                "type": "List[NoteSimple]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "content",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "created_by_user",
                    "type": "UserSimple",
                    "required": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "first_name",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "last_name",
                        "type": "str",
                        "required": true
                      }
                    ]
                  }
                ]
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/rehearsals",
          "summary": "Create Rehearsal",
          "description": "Creates a new rehearsal record. Validates that production exists, stage exists if provided, and that start time is before end time. Returns 404 if production or stage not found, 400 if time validation fails.",
          "request_body": {
            "schema_name": "RehearsalCreate",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_date",
                "type": "date",
                "required": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": true
              },
              {
                "name": "rehearsal_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              }
            ]
          },
          "response": {
            "schema_name": "RehearsalResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_date",
                "type": "date",
                "required": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": true
              },
              {
                "name": "rehearsal_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/rehearsals",
          "summary": "List Rehearsals",
          "description": "Returns a paginated list of rehearsals. Supports optional filters for production, stage, status, and date range.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "production_id",
              "type": "str",
              "required": false
            },
            {
              "name": "stage_id",
              "type": "str",
              "required": false
            },
            {
              "name": "status",
              "type": "str",
              "required": false
            },
            {
              "name": "date_from",
              "type": "date",
              "required": false
            },
            {
              "name": "date_to",
              "type": "date",
              "required": false
            }
          ],
          "response": {
            "schema_name": "RehearsalResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_date",
                "type": "date",
                "required": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": true
              },
              {
                "name": "rehearsal_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/rehearsals/{rehearsal_id}",
          "summary": "Get Rehearsal",
          "description": "Returns a single rehearsal by ID. Returns 404 if rehearsal not found.",
          "path_params": [
            {
              "name": "rehearsal_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "RehearsalResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_date",
                "type": "date",
                "required": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": true
              },
              {
                "name": "rehearsal_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/rehearsals/{rehearsal_id}",
          "summary": "Update Rehearsal",
          "description": "Updates an existing rehearsal. Validates production and stage existence and time ranges. Returns 404 if rehearsal, production, or stage not found, 400 if time validation fails.",
          "path_params": [
            {
              "name": "rehearsal_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "RehearsalUpdate",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "RehearsalResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_date",
                "type": "date",
                "required": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": true
              },
              {
                "name": "rehearsal_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/rehearsals/{rehearsal_id}",
          "summary": "Delete Rehearsal",
          "description": "Deletes a rehearsal record. Returns 404 if rehearsal not found.",
          "path_params": [
            {
              "name": "rehearsal_id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/rehearsals/{rehearsal_id}/details",
          "summary": "Get Rehearsal Details",
          "description": "Returns detailed rehearsal information including production with venue, stage details if assigned, and associated notes. All related data is eagerly loaded.",
          "path_params": [
            {
              "name": "rehearsal_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "RehearsalDetailResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_date",
                "type": "date",
                "required": true
              },
              {
                "name": "start_time",
                "type": "time",
                "required": true
              },
              {
                "name": "end_time",
                "type": "time",
                "required": true
              },
              {
                "name": "rehearsal_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "production",
                "type": "ProductionSimple",
                "required": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "title",
                    "type": "str",
                    "required": true
                  }
                ]
              },
              {
                "name": "stage",
                "type": "StageSimple",
                "required": false,
                "nullable": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "name",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "capacity",
                    "type": "int",
                    "required": false,
                    "nullable": true
                  }
                ]
              },
              {
                "name": "rehearsal_notes",
                "type": "List[NoteSimple]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "content",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "created_by_user",
                    "type": "UserSimple",
                    "required": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "first_name",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "last_name",
                        "type": "str",
                        "required": true
                      }
                    ]
                  }
                ]
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/cast-assignments",
          "summary": "Create Cast Assignment",
          "description": "Creates a new cast assignment linking a user to a production role. Validates that both user and production exist. Returns 404 if user or production not found.",
          "request_body": {
            "schema_name": "CastassignmentCreate",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "role_name",
                "type": "str",
                "required": true
              },
              {
                "name": "role_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "CastassignmentResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "role_name",
                "type": "str",
                "required": true
              },
              {
                "name": "role_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/cast-assignments",
          "summary": "List Cast Assignments",
          "description": "Returns a paginated list of cast assignments. Supports optional filters for production, user, and role type.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "production_id",
              "type": "str",
              "required": false
            },
            {
              "name": "user_id",
              "type": "str",
              "required": false
            },
            {
              "name": "role_type",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "CastassignmentResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "role_name",
                "type": "str",
                "required": true
              },
              {
                "name": "role_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/cast-assignments/{castassignment_id}",
          "summary": "Get Cast Assignment",
          "description": "Returns a single cast assignment by ID. Returns 404 if cast assignment not found.",
          "path_params": [
            {
              "name": "castassignment_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "CastassignmentResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "role_name",
                "type": "str",
                "required": true
              },
              {
                "name": "role_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/cast-assignments/{castassignment_id}",
          "summary": "Update Cast Assignment",
          "description": "Updates an existing cast assignment. Validates user and production existence. Returns 404 if cast assignment, user, or production not found.",
          "path_params": [
            {
              "name": "castassignment_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "CastassignmentUpdate",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role_name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "CastassignmentResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "role_name",
                "type": "str",
                "required": true
              },
              {
                "name": "role_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/cast-assignments/{castassignment_id}",
          "summary": "Delete Cast Assignment",
          "description": "Deletes a cast assignment record. Returns 404 if cast assignment not found.",
          "path_params": [
            {
              "name": "castassignment_id",
              "type": "str"
            }
          ],
          "status_code": 200
        }
      ]
    },
    {
      "name": "Bookings",
      "prefix": "/bookings",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create Booking",
          "description": "Creates a new booking request for a venue. Validates that the venue exists and that the end date is after the start date. Returns 400 if validation fails.",
          "request_body": {
            "schema_name": "BookingCreate",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_name",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_email",
                "type": "EmailStr",
                "required": true
              },
              {
                "name": "requester_phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "event_name",
                "type": "str",
                "required": true
              },
              {
                "name": "event_description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": true
              },
              {
                "name": "status",
                "type": "BookingStatus",
                "required": true,
                "enum_values": [
                  "INQUIRY",
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "CANCELLED",
                  "COMPLETED"
                ]
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "BookingResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_name",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_email",
                "type": "EmailStr",
                "required": true
              },
              {
                "name": "requester_phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "event_name",
                "type": "str",
                "required": true
              },
              {
                "name": "event_description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": true
              },
              {
                "name": "status",
                "type": "BookingStatus",
                "required": true,
                "enum_values": [
                  "INQUIRY",
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "CANCELLED",
                  "COMPLETED"
                ]
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/",
          "summary": "List Bookings",
          "description": "Returns a paginated list of bookings. Supports optional filters for venue, status, and search term (searches requester name, event name, and email).",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "venue_id",
              "type": "str",
              "required": false
            },
            {
              "name": "status",
              "type": "BookingStatus",
              "required": false
            },
            {
              "name": "search",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "BookingResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_name",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_email",
                "type": "EmailStr",
                "required": true
              },
              {
                "name": "requester_phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "event_name",
                "type": "str",
                "required": true
              },
              {
                "name": "event_description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": true
              },
              {
                "name": "status",
                "type": "BookingStatus",
                "required": true,
                "enum_values": [
                  "INQUIRY",
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "CANCELLED",
                  "COMPLETED"
                ]
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{id}",
          "summary": "Get Booking",
          "description": "Returns a single booking by ID. Returns 404 if the booking does not exist.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "BookingResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_name",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_email",
                "type": "EmailStr",
                "required": true
              },
              {
                "name": "requester_phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "event_name",
                "type": "str",
                "required": true
              },
              {
                "name": "event_description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": true
              },
              {
                "name": "status",
                "type": "BookingStatus",
                "required": true,
                "enum_values": [
                  "INQUIRY",
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "CANCELLED",
                  "COMPLETED"
                ]
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{id}/details",
          "summary": "Get Booking Details",
          "description": "Returns detailed booking information including venue details and associated stages. Returns 404 if the booking does not exist.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "BookingDetailResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_name",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_email",
                "type": "EmailStr",
                "required": true
              },
              {
                "name": "requester_phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "event_name",
                "type": "str",
                "required": true
              },
              {
                "name": "event_description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": true
              },
              {
                "name": "status",
                "type": "BookingStatus",
                "required": true,
                "enum_values": [
                  "INQUIRY",
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "CANCELLED",
                  "COMPLETED"
                ]
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "venue",
                "type": "VenueWithStagesResponse",
                "required": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "name",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "address_line1",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "city",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "stages",
                    "type": "list[StageBasicResponse]",
                    "required": true
                  }
                ]
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/{id}",
          "summary": "Update Booking",
          "description": "Updates an existing booking. Validates venue existence and date range if those fields are updated. Returns 404 if booking not found, 400 if validation fails.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "BookingUpdate",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "requester_name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "requester_email",
                "type": "EmailStr",
                "required": false,
                "nullable": true
              },
              {
                "name": "requester_phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "event_name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "event_description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "BookingStatus",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "INQUIRY",
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "CANCELLED",
                  "COMPLETED"
                ]
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "BookingResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_name",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_email",
                "type": "EmailStr",
                "required": true
              },
              {
                "name": "requester_phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "event_name",
                "type": "str",
                "required": true
              },
              {
                "name": "event_description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": true
              },
              {
                "name": "status",
                "type": "BookingStatus",
                "required": true,
                "enum_values": [
                  "INQUIRY",
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "CANCELLED",
                  "COMPLETED"
                ]
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/{id}",
          "summary": "Delete Booking",
          "description": "Deletes a booking by ID. Returns 404 if the booking does not exist.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "status_code": 204
        },
        {
          "method": "POST",
          "path": "/{id}/approve",
          "summary": "Approve Booking",
          "description": "Approves a booking request, changing its status to Approved. Only bookings with status Inquiry or Pending can be approved. Returns 400 if the current status does not allow approval, 404 if booking not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "BookingResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_name",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_email",
                "type": "EmailStr",
                "required": true
              },
              {
                "name": "requester_phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "event_name",
                "type": "str",
                "required": true
              },
              {
                "name": "event_description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": true
              },
              {
                "name": "status",
                "type": "BookingStatus",
                "required": true,
                "enum_values": [
                  "INQUIRY",
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "CANCELLED",
                  "COMPLETED"
                ]
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/{id}/reject",
          "summary": "Reject Booking",
          "description": "Rejects a booking request, changing its status to Rejected. Only bookings with status Inquiry or Pending can be rejected. Returns 400 if the current status does not allow rejection, 404 if booking not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "BookingResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_name",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_email",
                "type": "EmailStr",
                "required": true
              },
              {
                "name": "requester_phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "event_name",
                "type": "str",
                "required": true
              },
              {
                "name": "event_description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": true
              },
              {
                "name": "status",
                "type": "BookingStatus",
                "required": true,
                "enum_values": [
                  "INQUIRY",
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "CANCELLED",
                  "COMPLETED"
                ]
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/{id}/cancel",
          "summary": "Cancel Booking",
          "description": "Cancels a booking, changing its status to Cancelled. Bookings with status Completed or Cancelled cannot be cancelled. Returns 400 if the current status does not allow cancellation, 404 if booking not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "BookingResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_name",
                "type": "str",
                "required": true
              },
              {
                "name": "requester_email",
                "type": "EmailStr",
                "required": true
              },
              {
                "name": "requester_phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "event_name",
                "type": "str",
                "required": true
              },
              {
                "name": "event_description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": true
              },
              {
                "name": "status",
                "type": "BookingStatus",
                "required": true,
                "enum_values": [
                  "INQUIRY",
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "CANCELLED",
                  "COMPLETED"
                ]
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        }
      ]
    },
    {
      "name": "Resource Management",
      "prefix": "/resource-management",
      "endpoints": [
        {
          "method": "POST",
          "path": "/categories",
          "summary": "Create Resource Category",
          "description": "Creates a new resource category. Returns 409 if a category with the same name already exists.",
          "request_body": {
            "schema_name": "ResourcecategoryCreate",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "ResourcecategoryResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/categories",
          "summary": "List Resource Categories",
          "description": "Returns a paginated list of resource categories. Supports optional search filter on category name.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "search",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "ResourcecategoryResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/categories/{id}",
          "summary": "Get Resource Category",
          "description": "Returns a single resource category by ID. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ResourcecategoryResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/categories/{id}",
          "summary": "Update Resource Category",
          "description": "Updates a resource category. Returns 404 if not found, 409 if name conflicts with another category.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "ResourcecategoryUpdate",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "ResourcecategoryResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/categories/{id}",
          "summary": "Delete Resource Category",
          "description": "Deletes a resource category. Returns 400 if category has associated resources, 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/resources",
          "summary": "Create Resource",
          "description": "Creates a new resource. Validates venue and category exist. Returns 409 if serial number already exists.",
          "request_body": {
            "schema_name": "ResourceCreate",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "serial_number",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_price",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "condition",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": false,
                "default": true
              }
            ]
          },
          "response": {
            "schema_name": "ResourceResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "serial_number",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_price",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "condition",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/resources",
          "summary": "List Resources",
          "description": "Returns a paginated list of resources. Supports filters for venue, category, availability, and search on name, description, or serial number.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "venue_id",
              "type": "str",
              "required": false
            },
            {
              "name": "category_id",
              "type": "str",
              "required": false
            },
            {
              "name": "is_available",
              "type": "bool",
              "required": false
            },
            {
              "name": "search",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "ResourceResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "serial_number",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_price",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "condition",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/resources/{id}",
          "summary": "Get Resource",
          "description": "Returns a single resource by ID. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ResourceResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "serial_number",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_price",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "condition",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/resources/{id}/details",
          "summary": "Get Resource Details",
          "description": "Returns detailed resource information including venue, category, assignments, and maintenance records. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ResourceDetailResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "venue",
                "type": "VenueSimple",
                "required": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "name",
                    "type": "str",
                    "required": true
                  }
                ]
              },
              {
                "name": "category",
                "type": "ResourcecategorySimple",
                "required": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "name",
                    "type": "str",
                    "required": true
                  }
                ]
              },
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "serial_number",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_price",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "condition",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": true
              },
              {
                "name": "resource_assignments",
                "type": "List[ResourceassignmentDetail]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "production",
                    "type": "ProductionSimple",
                    "required": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "title",
                        "type": "str",
                        "required": true
                      }
                    ]
                  },
                  {
                    "name": "assigned_date",
                    "type": "date",
                    "required": true
                  },
                  {
                    "name": "return_date",
                    "type": "date",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "quantity",
                    "type": "int",
                    "required": true
                  },
                  {
                    "name": "notes",
                    "type": "str",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "created_at",
                    "type": "datetime",
                    "required": true
                  }
                ]
              },
              {
                "name": "maintenance_records",
                "type": "List[MaintenancerecordDetail]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "maintenance_type",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "description",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "maintenance_date",
                    "type": "date",
                    "required": true
                  },
                  {
                    "name": "cost",
                    "type": "Decimal",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "next_maintenance_date",
                    "type": "date",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "performed_by_user",
                    "type": "UserSimple",
                    "required": false,
                    "nullable": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "first_name",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "last_name",
                        "type": "str",
                        "required": true
                      }
                    ]
                  },
                  {
                    "name": "created_at",
                    "type": "datetime",
                    "required": true
                  }
                ]
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/resources/{id}",
          "summary": "Update Resource",
          "description": "Updates a resource. Validates venue and category if changed. Returns 404 if not found, 409 if serial number conflicts.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "ResourceUpdate",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "category_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "serial_number",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_price",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "condition",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "ResourceResponse",
            "fields": [
              {
                "name": "venue_id",
                "type": "str",
                "required": true
              },
              {
                "name": "category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "serial_number",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "purchase_price",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "condition",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/resources/{id}",
          "summary": "Delete Resource",
          "description": "Deletes a resource. Returns 400 if resource has active assignments, 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/assignments",
          "summary": "Create Resource Assignment",
          "description": "Creates a new resource assignment. Validates resource and production exist, resource is available, and return date is after assigned date.",
          "request_body": {
            "schema_name": "ResourceassignmentCreate",
            "fields": [
              {
                "name": "resource_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "assigned_date",
                "type": "date",
                "required": true
              },
              {
                "name": "return_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "quantity",
                "type": "int",
                "required": false
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "ResourceassignmentResponse",
            "fields": [
              {
                "name": "resource_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "assigned_date",
                "type": "date",
                "required": true
              },
              {
                "name": "return_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "quantity",
                "type": "int",
                "required": false
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/assignments",
          "summary": "List Resource Assignments",
          "description": "Returns a paginated list of resource assignments. Supports filters for resource, production, and return status.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "resource_id",
              "type": "str",
              "required": false
            },
            {
              "name": "production_id",
              "type": "str",
              "required": false
            },
            {
              "name": "is_returned",
              "type": "bool",
              "required": false
            }
          ],
          "response": {
            "schema_name": "ResourceassignmentResponse",
            "fields": [
              {
                "name": "resource_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "assigned_date",
                "type": "date",
                "required": true
              },
              {
                "name": "return_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "quantity",
                "type": "int",
                "required": false
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/assignments/{id}",
          "summary": "Get Resource Assignment",
          "description": "Returns a single resource assignment by ID. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ResourceassignmentResponse",
            "fields": [
              {
                "name": "resource_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "assigned_date",
                "type": "date",
                "required": true
              },
              {
                "name": "return_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "quantity",
                "type": "int",
                "required": false
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/assignments/{id}",
          "summary": "Update Resource Assignment",
          "description": "Updates a resource assignment. Validates resource and production if changed, and return date is after assigned date. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "ResourceassignmentUpdate",
            "fields": [
              {
                "name": "resource_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "assigned_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "return_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "quantity",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "ResourceassignmentResponse",
            "fields": [
              {
                "name": "resource_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "assigned_date",
                "type": "date",
                "required": true
              },
              {
                "name": "return_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "quantity",
                "type": "int",
                "required": false
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/assignments/{id}",
          "summary": "Delete Resource Assignment",
          "description": "Deletes a resource assignment. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/maintenance",
          "summary": "Create Maintenance Record",
          "description": "Creates a new maintenance record. Validates resource and user exist, and next maintenance date is after maintenance date.",
          "request_body": {
            "schema_name": "MaintenancerecordCreate",
            "fields": [
              {
                "name": "resource_id",
                "type": "str",
                "required": true
              },
              {
                "name": "performed_by_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "maintenance_type",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false
              },
              {
                "name": "maintenance_date",
                "type": "date",
                "required": true
              },
              {
                "name": "cost",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "next_maintenance_date",
                "type": "date",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "MaintenancerecordResponse",
            "fields": [
              {
                "name": "resource_id",
                "type": "str",
                "required": true
              },
              {
                "name": "performed_by_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "maintenance_type",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false
              },
              {
                "name": "maintenance_date",
                "type": "date",
                "required": true
              },
              {
                "name": "cost",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "next_maintenance_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/maintenance",
          "summary": "List Maintenance Records",
          "description": "Returns a paginated list of maintenance records. Supports filters for resource and maintenance type.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "resource_id",
              "type": "str",
              "required": false
            },
            {
              "name": "maintenance_type",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "MaintenancerecordResponse",
            "fields": [
              {
                "name": "resource_id",
                "type": "str",
                "required": true
              },
              {
                "name": "performed_by_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "maintenance_type",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false
              },
              {
                "name": "maintenance_date",
                "type": "date",
                "required": true
              },
              {
                "name": "cost",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "next_maintenance_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/maintenance/{id}",
          "summary": "Get Maintenance Record",
          "description": "Returns a single maintenance record by ID. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "MaintenancerecordResponse",
            "fields": [
              {
                "name": "resource_id",
                "type": "str",
                "required": true
              },
              {
                "name": "performed_by_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "maintenance_type",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false
              },
              {
                "name": "maintenance_date",
                "type": "date",
                "required": true
              },
              {
                "name": "cost",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "next_maintenance_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/maintenance/{id}",
          "summary": "Update Maintenance Record",
          "description": "Updates a maintenance record. Validates resource and user if changed, and next maintenance date is after maintenance date. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "MaintenancerecordUpdate",
            "fields": [
              {
                "name": "resource_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "performed_by_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "maintenance_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "maintenance_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "cost",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "next_maintenance_date",
                "type": "date",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "MaintenancerecordResponse",
            "fields": [
              {
                "name": "resource_id",
                "type": "str",
                "required": true
              },
              {
                "name": "performed_by_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "maintenance_type",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false
              },
              {
                "name": "maintenance_date",
                "type": "date",
                "required": true
              },
              {
                "name": "cost",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "next_maintenance_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/maintenance/{id}",
          "summary": "Delete Maintenance Record",
          "description": "Deletes a maintenance record. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "status_code": 200
        }
      ]
    },
    {
      "name": "Staff Assignments",
      "prefix": "/staff-assignments",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create Staff Assignment",
          "description": "Creates a new staff assignment record. Validates that the user exists and at least one of production_id or venue_id is provided. Returns 404 if the user, production, or venue does not exist. Returns 400 if end_date is before start_date or if neither production_id nor venue_id is provided.",
          "request_body": {
            "schema_name": "StaffassignmentCreate",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "str",
                "required": false
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "StaffassignmentResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "str",
                "required": false
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/",
          "summary": "List Staff Assignments",
          "description": "Returns a paginated list of staff assignments. Supports optional filters for user_id, production_id, venue_id, and role. Results are ordered by start_date descending.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "user_id",
              "type": "str",
              "required": false
            },
            {
              "name": "production_id",
              "type": "str",
              "required": false
            },
            {
              "name": "venue_id",
              "type": "str",
              "required": false
            },
            {
              "name": "role",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "StaffassignmentResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "str",
                "required": false
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{assignment_id}",
          "summary": "Get Staff Assignment",
          "description": "Returns a single staff assignment by ID. Returns 404 if the assignment does not exist.",
          "path_params": [
            {
              "name": "assignment_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "StaffassignmentResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "str",
                "required": false
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{assignment_id}/details",
          "summary": "Get Staff Assignment Details",
          "description": "Returns a staff assignment with related user, production, and venue details pre-loaded. Returns 404 if the assignment does not exist.",
          "path_params": [
            {
              "name": "assignment_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "StaffassignmentDetailResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "str",
                "required": false
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "user",
                "type": "dict",
                "required": false,
                "nullable": true
              },
              {
                "name": "production",
                "type": "dict",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue",
                "type": "dict",
                "required": false,
                "nullable": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/{assignment_id}",
          "summary": "Update Staff Assignment",
          "description": "Updates an existing staff assignment. All fields are optional. Validates that end_date is after start_date if both are provided. Validates that at least one of production_id or venue_id remains set after the update. Returns 404 if the assignment, user, production, or venue does not exist. Returns 400 if validation fails.",
          "path_params": [
            {
              "name": "assignment_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "StaffassignmentUpdate",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "StaffassignmentResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "role",
                "type": "str",
                "required": false
              },
              {
                "name": "start_date",
                "type": "date",
                "required": true
              },
              {
                "name": "end_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/{assignment_id}",
          "summary": "Delete Staff Assignment",
          "description": "Deletes a staff assignment by ID. Returns 404 if the assignment does not exist.",
          "path_params": [
            {
              "name": "assignment_id",
              "type": "str"
            }
          ],
          "status_code": 200
        }
      ]
    },
    {
      "name": "Schedules",
      "prefix": "/schedules",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create Schedule",
          "description": "Creates a new schedule entry. Validates that referenced user, production, and venue exist. Returns 400 if any foreign key reference is invalid.",
          "request_body": {
            "schema_name": "ScheduleCreate",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "schedule_type",
                "type": "ScheduleType",
                "required": true,
                "enum_values": [
                  "REHEARSAL",
                  "PERFORMANCE",
                  "MEETING",
                  "CALL_TIME",
                  "OTHER"
                ]
              },
              {
                "name": "start_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "end_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "ScheduleResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "schedule_type",
                "type": "ScheduleType",
                "required": true,
                "enum_values": [
                  "REHEARSAL",
                  "PERFORMANCE",
                  "MEETING",
                  "CALL_TIME",
                  "OTHER"
                ]
              },
              {
                "name": "start_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "end_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/",
          "summary": "List Schedules",
          "description": "Returns a paginated list of schedule entries. Supports optional filters for user_id, production_id, venue_id, and schedule_type.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "user_id",
              "type": "str",
              "required": false
            },
            {
              "name": "production_id",
              "type": "str",
              "required": false
            },
            {
              "name": "venue_id",
              "type": "str",
              "required": false
            },
            {
              "name": "schedule_type",
              "type": "ScheduleType",
              "required": false
            }
          ],
          "response": {
            "schema_name": "ScheduleResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "schedule_type",
                "type": "ScheduleType",
                "required": true,
                "enum_values": [
                  "REHEARSAL",
                  "PERFORMANCE",
                  "MEETING",
                  "CALL_TIME",
                  "OTHER"
                ]
              },
              {
                "name": "start_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "end_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{schedule_id}",
          "summary": "Get Schedule",
          "description": "Returns a single schedule entry by ID. Returns 404 if the schedule does not exist.",
          "path_params": [
            {
              "name": "schedule_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ScheduleResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "schedule_type",
                "type": "ScheduleType",
                "required": true,
                "enum_values": [
                  "REHEARSAL",
                  "PERFORMANCE",
                  "MEETING",
                  "CALL_TIME",
                  "OTHER"
                ]
              },
              {
                "name": "start_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "end_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/{schedule_id}",
          "summary": "Update Schedule",
          "description": "Updates an existing schedule entry. Only provided fields are updated. Returns 404 if the schedule does not exist, 400 if any foreign key reference is invalid.",
          "path_params": [
            {
              "name": "schedule_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "ScheduleUpdate",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "schedule_type",
                "type": "ScheduleType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "REHEARSAL",
                  "PERFORMANCE",
                  "MEETING",
                  "CALL_TIME",
                  "OTHER"
                ]
              },
              {
                "name": "start_datetime",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_datetime",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "ScheduleResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "schedule_type",
                "type": "ScheduleType",
                "required": true,
                "enum_values": [
                  "REHEARSAL",
                  "PERFORMANCE",
                  "MEETING",
                  "CALL_TIME",
                  "OTHER"
                ]
              },
              {
                "name": "start_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "end_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "location",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/{schedule_id}",
          "summary": "Delete Schedule",
          "description": "Deletes a schedule entry by ID. Returns 404 if the schedule does not exist.",
          "path_params": [
            {
              "name": "schedule_id",
              "type": "str"
            }
          ],
          "status_code": 204
        },
        {
          "method": "POST",
          "path": "/availability",
          "summary": "Create Availability",
          "description": "Creates a new availability record for a user, stage, or resource. Validates that referenced entities exist. Returns 400 if any foreign key reference is invalid.",
          "request_body": {
            "schema_name": "AvailabilityCreate",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "resource_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "end_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "reason",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "AvailabilityResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "resource_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "end_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "reason",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/availability",
          "summary": "List Availability",
          "description": "Returns a paginated list of availability records. Supports optional filters for user_id, stage_id, resource_id, and is_available status.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "user_id",
              "type": "str",
              "required": false
            },
            {
              "name": "stage_id",
              "type": "str",
              "required": false
            },
            {
              "name": "resource_id",
              "type": "str",
              "required": false
            },
            {
              "name": "is_available",
              "type": "bool",
              "required": false
            }
          ],
          "response": {
            "schema_name": "AvailabilityResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "resource_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "end_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "reason",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/availability/{availability_id}",
          "summary": "Get Availability",
          "description": "Returns a single availability record by ID. Returns 404 if the availability record does not exist.",
          "path_params": [
            {
              "name": "availability_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "AvailabilityResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "resource_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "end_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "reason",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/availability/{availability_id}",
          "summary": "Update Availability",
          "description": "Updates an existing availability record. Only provided fields are updated. Returns 404 if the availability record does not exist, 400 if any foreign key reference is invalid.",
          "path_params": [
            {
              "name": "availability_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "AvailabilityUpdate",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "resource_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_datetime",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "end_datetime",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": false,
                "nullable": true
              },
              {
                "name": "reason",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "AvailabilityResponse",
            "fields": [
              {
                "name": "user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "stage_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "resource_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "start_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "end_datetime",
                "type": "datetime",
                "required": true
              },
              {
                "name": "is_available",
                "type": "bool",
                "required": false,
                "default": true
              },
              {
                "name": "reason",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/availability/{availability_id}",
          "summary": "Delete Availability",
          "description": "Deletes an availability record by ID. Returns 404 if the availability record does not exist.",
          "path_params": [
            {
              "name": "availability_id",
              "type": "str"
            }
          ],
          "status_code": 204
        }
      ]
    },
    {
      "name": "Tasks",
      "prefix": "/tasks",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create Task",
          "description": "Creates a new task record. Validates that the creator user exists, and if provided, that assigned user, production, and venue exist. Returns 400 if any referenced entity does not exist.",
          "request_body": {
            "schema_name": "TaskCreate",
            "fields": [
              {
                "name": "assigned_to_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "priority",
                "type": "TaskPriority",
                "required": true,
                "enum_values": [
                  "LOW",
                  "MEDIUM",
                  "HIGH",
                  "URGENT"
                ]
              },
              {
                "name": "status",
                "type": "TaskStatus",
                "required": true,
                "enum_values": [
                  "TODO",
                  "IN_PROGRESS",
                  "BLOCKED",
                  "COMPLETED",
                  "CANCELLED"
                ]
              },
              {
                "name": "due_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": false
              }
            ]
          },
          "response": {
            "schema_name": "TaskResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "assigned_to_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "priority",
                "type": "str",
                "required": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "due_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "completed_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/",
          "summary": "List Tasks",
          "description": "Returns a paginated list of tasks. Supports optional filters for assigned user, creator, production, venue, status, and priority. Results are ordered by due date ascending, then creation date descending.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "assigned_to_user_id",
              "type": "str",
              "required": false
            },
            {
              "name": "created_by_user_id",
              "type": "str",
              "required": false
            },
            {
              "name": "production_id",
              "type": "str",
              "required": false
            },
            {
              "name": "venue_id",
              "type": "str",
              "required": false
            },
            {
              "name": "status",
              "type": "TaskStatus",
              "required": false
            },
            {
              "name": "priority",
              "type": "TaskPriority",
              "required": false
            }
          ],
          "response": {
            "schema_name": "TaskResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "assigned_to_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "priority",
                "type": "str",
                "required": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "due_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "completed_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{task_id}",
          "summary": "Get Task",
          "description": "Returns a single task by ID. Returns 404 if the task does not exist.",
          "path_params": [
            {
              "name": "task_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "TaskResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "assigned_to_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "priority",
                "type": "str",
                "required": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "due_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "completed_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{task_id}/details",
          "summary": "Get Task Details",
          "description": "Returns detailed task information including assigned user, creator user, production, and venue details. Uses eager loading to prevent N+1 queries. Returns 404 if the task does not exist.",
          "path_params": [
            {
              "name": "task_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "TaskDetailResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "assigned_to_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "priority",
                "type": "str",
                "required": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "due_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "completed_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "assigned_to_user",
                "type": "UserSummary",
                "required": false,
                "nullable": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "first_name",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "last_name",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "email",
                    "type": "str",
                    "required": true
                  }
                ]
              },
              {
                "name": "created_by_user",
                "type": "UserSummary",
                "required": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "first_name",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "last_name",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "email",
                    "type": "str",
                    "required": true
                  }
                ]
              },
              {
                "name": "production",
                "type": "ProductionSummary",
                "required": false,
                "nullable": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "title",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "venue",
                    "type": "VenueSummary",
                    "required": false,
                    "nullable": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "name",
                        "type": "str",
                        "required": true
                      }
                    ]
                  }
                ]
              },
              {
                "name": "venue",
                "type": "VenueSummary",
                "required": false,
                "nullable": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "name",
                    "type": "str",
                    "required": true
                  }
                ]
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/{task_id}",
          "summary": "Update Task",
          "description": "Updates an existing task. All fields are optional. Validates that any provided user, production, or venue IDs exist. Returns 404 if the task does not exist, 400 if validation fails.",
          "path_params": [
            {
              "name": "task_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "TaskUpdate",
            "fields": [
              {
                "name": "assigned_to_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "priority",
                "type": "TaskPriority",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "LOW",
                  "MEDIUM",
                  "HIGH",
                  "URGENT"
                ]
              },
              {
                "name": "status",
                "type": "TaskStatus",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "TODO",
                  "IN_PROGRESS",
                  "BLOCKED",
                  "COMPLETED",
                  "CANCELLED"
                ]
              },
              {
                "name": "due_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "completed_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "TaskResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "assigned_to_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "priority",
                "type": "str",
                "required": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "due_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "completed_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/{task_id}",
          "summary": "Delete Task",
          "description": "Deletes a task. Returns 400 if the task is completed (completed tasks cannot be deleted, only archived). Returns 404 if the task does not exist.",
          "path_params": [
            {
              "name": "task_id",
              "type": "str"
            }
          ],
          "status_code": 204
        },
        {
          "method": "POST",
          "path": "/{task_id}/complete",
          "summary": "Complete Task",
          "description": "Marks a task as completed and sets the completion timestamp. Returns 400 if the task is already completed or cancelled. Returns 404 if the task does not exist.",
          "path_params": [
            {
              "name": "task_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "TaskResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "assigned_to_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "priority",
                "type": "str",
                "required": true
              },
              {
                "name": "status",
                "type": "str",
                "required": true
              },
              {
                "name": "due_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "completed_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        }
      ]
    },
    {
      "name": "Financial Management",
      "prefix": "/financial",
      "endpoints": [
        {
          "method": "POST",
          "path": "/budgets",
          "summary": "Create Budget",
          "description": "Creates a new budget for a production. Returns 404 if the production does not exist. Returns 409 if a budget already exists for the production.",
          "request_body": {
            "schema_name": "BudgetCreate",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "total_budget",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "BudgetResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "total_budget",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/budgets/{budget_id}",
          "summary": "Get Budget",
          "description": "Retrieves a budget by ID. Returns 404 if the budget does not exist.",
          "path_params": [
            {
              "name": "budget_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "BudgetResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "total_budget",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/budgets",
          "summary": "List Budgets",
          "description": "Returns a paginated list of budgets. Supports optional filtering by production ID.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "production_id",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "BudgetResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "total_budget",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/budgets/{budget_id}",
          "summary": "Update Budget",
          "description": "Updates a budget. Returns 404 if the budget or referenced production does not exist. Returns 409 if updating production_id to one that already has a budget.",
          "path_params": [
            {
              "name": "budget_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "BudgetUpdate",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "total_budget",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "BudgetResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "total_budget",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/budgets/{budget_id}",
          "summary": "Delete Budget",
          "description": "Deletes a budget and all associated expenses. Returns 404 if the budget does not exist.",
          "path_params": [
            {
              "name": "budget_id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/expenses",
          "summary": "Create Expense",
          "description": "Creates a new expense record. Validates that referenced budget, production, and venue exist if provided. Returns 404 if any referenced entity does not exist.",
          "request_body": {
            "schema_name": "ExpenseCreate",
            "fields": [
              {
                "name": "budget_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "category",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": true
              },
              {
                "name": "amount",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "expense_date",
                "type": "date",
                "required": true
              },
              {
                "name": "vendor",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "receipt_url",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "ExpenseStatus",
                "required": true,
                "enum_values": [
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "PAID"
                ]
              }
            ]
          },
          "response": {
            "schema_name": "ExpenseResponse",
            "fields": [
              {
                "name": "budget_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "category",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": true
              },
              {
                "name": "amount",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "expense_date",
                "type": "date",
                "required": true
              },
              {
                "name": "vendor",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "receipt_url",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "ExpenseStatus",
                "required": true,
                "enum_values": [
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "PAID"
                ]
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/expenses/{expense_id}",
          "summary": "Get Expense",
          "description": "Retrieves an expense by ID. Returns 404 if the expense does not exist.",
          "path_params": [
            {
              "name": "expense_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ExpenseResponse",
            "fields": [
              {
                "name": "budget_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "category",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": true
              },
              {
                "name": "amount",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "expense_date",
                "type": "date",
                "required": true
              },
              {
                "name": "vendor",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "receipt_url",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "ExpenseStatus",
                "required": true,
                "enum_values": [
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "PAID"
                ]
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/expenses",
          "summary": "List Expenses",
          "description": "Returns a paginated list of expenses. Supports optional filtering by budget ID, production ID, venue ID, and status.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "budget_id",
              "type": "str",
              "required": false
            },
            {
              "name": "production_id",
              "type": "str",
              "required": false
            },
            {
              "name": "venue_id",
              "type": "str",
              "required": false
            },
            {
              "name": "status",
              "type": "ExpenseStatus",
              "required": false
            }
          ],
          "response": {
            "schema_name": "ExpenseResponse",
            "fields": [
              {
                "name": "budget_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "category",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": true
              },
              {
                "name": "amount",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "expense_date",
                "type": "date",
                "required": true
              },
              {
                "name": "vendor",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "receipt_url",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "ExpenseStatus",
                "required": true,
                "enum_values": [
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "PAID"
                ]
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/expenses/{expense_id}",
          "summary": "Update Expense",
          "description": "Updates an expense. Validates that referenced budget, production, and venue exist if being updated. Returns 404 if the expense or any referenced entity does not exist.",
          "path_params": [
            {
              "name": "expense_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "ExpenseUpdate",
            "fields": [
              {
                "name": "budget_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "category",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "amount",
                "type": "Decimal",
                "required": false,
                "nullable": true
              },
              {
                "name": "expense_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "vendor",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "receipt_url",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "ExpenseStatus",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "PAID"
                ]
              }
            ]
          },
          "response": {
            "schema_name": "ExpenseResponse",
            "fields": [
              {
                "name": "budget_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "category",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": true
              },
              {
                "name": "amount",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "expense_date",
                "type": "date",
                "required": true
              },
              {
                "name": "vendor",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "receipt_url",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "ExpenseStatus",
                "required": true,
                "enum_values": [
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "PAID"
                ]
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/expenses/{expense_id}",
          "summary": "Delete Expense",
          "description": "Deletes an expense record. Returns 404 if the expense does not exist.",
          "path_params": [
            {
              "name": "expense_id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/expenses/{expense_id}/details",
          "summary": "Get Expense Details",
          "description": "Retrieves detailed expense information including related budget, production, and venue data. Returns 404 if the expense does not exist.",
          "path_params": [
            {
              "name": "expense_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ExpenseDetailResponse",
            "fields": [
              {
                "name": "budget_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "category",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": true
              },
              {
                "name": "amount",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "expense_date",
                "type": "date",
                "required": true
              },
              {
                "name": "vendor",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "receipt_url",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "ExpenseStatus",
                "required": true,
                "enum_values": [
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "PAID"
                ]
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "budget",
                "type": "BudgetSummary",
                "required": false,
                "nullable": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "total_budget",
                    "type": "Decimal",
                    "required": true
                  },
                  {
                    "name": "production",
                    "type": "ProductionSummary",
                    "required": false,
                    "nullable": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "title",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "venue",
                        "type": "VenueSummary",
                        "required": false,
                        "nullable": true,
                        "fields": [
                          {
                            "name": "id",
                            "type": "str",
                            "required": true
                          },
                          {
                            "name": "name",
                            "type": "str",
                            "required": true
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "name": "production",
                "type": "ProductionSummary",
                "required": false,
                "nullable": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "title",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "venue",
                    "type": "VenueSummary",
                    "required": false,
                    "nullable": true,
                    "fields": [
                      {
                        "name": "id",
                        "type": "str",
                        "required": true
                      },
                      {
                        "name": "name",
                        "type": "str",
                        "required": true
                      }
                    ]
                  }
                ]
              },
              {
                "name": "venue",
                "type": "VenueSummary",
                "required": false,
                "nullable": true,
                "fields": [
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "name",
                    "type": "str",
                    "required": true
                  }
                ]
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/expenses/{expense_id}/approve",
          "summary": "Approve Expense",
          "description": "Approves a pending expense. Returns 404 if the expense does not exist. Returns 400 if the expense is not in pending status.",
          "path_params": [
            {
              "name": "expense_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ExpenseResponse",
            "fields": [
              {
                "name": "budget_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "category",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": true
              },
              {
                "name": "amount",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "expense_date",
                "type": "date",
                "required": true
              },
              {
                "name": "vendor",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "receipt_url",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "ExpenseStatus",
                "required": true,
                "enum_values": [
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "PAID"
                ]
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/expenses/{expense_id}/reject",
          "summary": "Reject Expense",
          "description": "Rejects a pending expense. Returns 404 if the expense does not exist. Returns 400 if the expense is not in pending status.",
          "path_params": [
            {
              "name": "expense_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ExpenseResponse",
            "fields": [
              {
                "name": "budget_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "category",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": true
              },
              {
                "name": "amount",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "expense_date",
                "type": "date",
                "required": true
              },
              {
                "name": "vendor",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "receipt_url",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "status",
                "type": "ExpenseStatus",
                "required": true,
                "enum_values": [
                  "PENDING",
                  "APPROVED",
                  "REJECTED",
                  "PAID"
                ]
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/budgets/{budget_id}/approve-expenses",
          "summary": "Approve All Pending Expenses",
          "description": "Approves all pending expenses for a budget. Returns 404 if the budget does not exist.",
          "path_params": [
            {
              "name": "budget_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "BudgetResponse",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": true
              },
              {
                "name": "total_budget",
                "type": "Decimal",
                "required": false
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        }
      ]
    },
    {
      "name": "Contacts",
      "prefix": "/contacts",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create Contact",
          "description": "Creates a new contact record for an external individual or organization. Validates email format if provided. Returns 400 if required fields are missing or invalid.",
          "request_body": {
            "schema_name": "ContactCreate",
            "fields": [
              {
                "name": "first_name",
                "type": "str",
                "required": false
              },
              {
                "name": "last_name",
                "type": "str",
                "required": false
              },
              {
                "name": "organization",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "contact_type",
                "type": "ContactType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "VENDOR",
                  "CONTRACTOR",
                  "AGENT",
                  "SPONSOR",
                  "DONOR",
                  "OTHER"
                ]
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "ContactResponse",
            "fields": [
              {
                "name": "first_name",
                "type": "str",
                "required": false
              },
              {
                "name": "last_name",
                "type": "str",
                "required": false
              },
              {
                "name": "organization",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "contact_type",
                "type": "ContactType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "VENDOR",
                  "CONTRACTOR",
                  "AGENT",
                  "SPONSOR",
                  "DONOR",
                  "OTHER"
                ]
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/",
          "summary": "List Contacts",
          "description": "Returns a paginated list of contacts. Supports optional search filter on first name, last name, organization, and email fields. Can filter by contact type. Results are ordered by last name then first name.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "search",
              "type": "str",
              "required": false
            },
            {
              "name": "contact_type",
              "type": "ContactType",
              "required": false
            }
          ],
          "response": {
            "schema_name": "ContactResponse",
            "fields": [
              {
                "name": "first_name",
                "type": "str",
                "required": false
              },
              {
                "name": "last_name",
                "type": "str",
                "required": false
              },
              {
                "name": "organization",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "contact_type",
                "type": "ContactType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "VENDOR",
                  "CONTRACTOR",
                  "AGENT",
                  "SPONSOR",
                  "DONOR",
                  "OTHER"
                ]
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{contact_id}",
          "summary": "Get Contact",
          "description": "Returns a single contact by ID. Returns 404 if the contact does not exist.",
          "path_params": [
            {
              "name": "contact_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "ContactResponse",
            "fields": [
              {
                "name": "first_name",
                "type": "str",
                "required": false
              },
              {
                "name": "last_name",
                "type": "str",
                "required": false
              },
              {
                "name": "organization",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "contact_type",
                "type": "ContactType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "VENDOR",
                  "CONTRACTOR",
                  "AGENT",
                  "SPONSOR",
                  "DONOR",
                  "OTHER"
                ]
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/{contact_id}",
          "summary": "Update Contact",
          "description": "Updates an existing contact record. Only provided fields are updated; unset fields remain unchanged. Validates email format if provided. Returns 404 if the contact does not exist.",
          "path_params": [
            {
              "name": "contact_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "ContactUpdate",
            "fields": [
              {
                "name": "first_name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "last_name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "organization",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "contact_type",
                "type": "ContactType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "VENDOR",
                  "CONTRACTOR",
                  "AGENT",
                  "SPONSOR",
                  "DONOR",
                  "OTHER"
                ]
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "ContactResponse",
            "fields": [
              {
                "name": "first_name",
                "type": "str",
                "required": false
              },
              {
                "name": "last_name",
                "type": "str",
                "required": false
              },
              {
                "name": "organization",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "email",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "phone",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "contact_type",
                "type": "ContactType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "VENDOR",
                  "CONTRACTOR",
                  "AGENT",
                  "SPONSOR",
                  "DONOR",
                  "OTHER"
                ]
              },
              {
                "name": "address_line1",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "address_line2",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "city",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "state",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "postal_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "country",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notes",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/{contact_id}",
          "summary": "Delete Contact",
          "description": "Deletes a contact record. Returns 404 if the contact does not exist.",
          "path_params": [
            {
              "name": "contact_id",
              "type": "str"
            }
          ],
          "status_code": 204
        }
      ]
    },
    {
      "name": "Documents",
      "prefix": "/documents",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create Document",
          "description": "Creates a new document record. The document must be associated with either a production or a venue. Validates that the uploaded_by_user_id exists and that file size does not exceed 50MB. Returns 400 if validation fails.",
          "request_body": {
            "schema_name": "DocumentCreate",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "uploaded_by_user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "document_type",
                "type": "DocumentType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "SCRIPT",
                  "CONTRACT",
                  "RIDER",
                  "SCHEDULE",
                  "BUDGET",
                  "OTHER"
                ]
              },
              {
                "name": "file_url",
                "type": "str",
                "required": false
              },
              {
                "name": "file_size_bytes",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "mime_type",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "DocumentResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "uploaded_by_user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "document_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "file_url",
                "type": "str",
                "required": true
              },
              {
                "name": "file_size_bytes",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "mime_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/",
          "summary": "List Documents",
          "description": "Returns a paginated list of documents. Supports optional filters for production_id, venue_id, uploaded_by_user_id, document_type, and search query on title and description fields.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "production_id",
              "type": "str",
              "required": false
            },
            {
              "name": "venue_id",
              "type": "str",
              "required": false
            },
            {
              "name": "uploaded_by_user_id",
              "type": "str",
              "required": false
            },
            {
              "name": "document_type",
              "type": "DocumentType",
              "required": false
            },
            {
              "name": "search",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "DocumentResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "uploaded_by_user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "document_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "file_url",
                "type": "str",
                "required": true
              },
              {
                "name": "file_size_bytes",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "mime_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{document_id}",
          "summary": "Get Document",
          "description": "Returns a single document by ID. Returns 404 if the document does not exist.",
          "path_params": [
            {
              "name": "document_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "DocumentResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "uploaded_by_user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "document_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "file_url",
                "type": "str",
                "required": true
              },
              {
                "name": "file_size_bytes",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "mime_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{document_id}/details",
          "summary": "Get Document Details",
          "description": "Returns detailed information about a document including related production, venue, and uploader user information. Uses eager loading to prevent N+1 queries. Returns 404 if the document does not exist.",
          "path_params": [
            {
              "name": "document_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "DocumentDetailResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "uploaded_by_user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "document_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "file_url",
                "type": "str",
                "required": true
              },
              {
                "name": "file_size_bytes",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "mime_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "production",
                "type": "dict",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue",
                "type": "dict",
                "required": false,
                "nullable": true
              },
              {
                "name": "uploaded_by_user",
                "type": "dict",
                "required": false,
                "nullable": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/{document_id}",
          "summary": "Update Document",
          "description": "Updates an existing document. All fields are optional. Validates foreign key references if they are being updated. Returns 404 if the document does not exist, 400 if validation fails.",
          "path_params": [
            {
              "name": "document_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "DocumentUpdate",
            "fields": [
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "uploaded_by_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "title",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "document_type",
                "type": "DocumentType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "SCRIPT",
                  "CONTRACT",
                  "RIDER",
                  "SCHEDULE",
                  "BUDGET",
                  "OTHER"
                ]
              },
              {
                "name": "file_url",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "file_size_bytes",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "mime_type",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "DocumentResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "uploaded_by_user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "title",
                "type": "str",
                "required": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "document_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "file_url",
                "type": "str",
                "required": true
              },
              {
                "name": "file_size_bytes",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "mime_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/{document_id}",
          "summary": "Delete Document",
          "description": "Deletes a document by ID. Returns 404 if the document does not exist.",
          "path_params": [
            {
              "name": "document_id",
              "type": "str"
            }
          ],
          "status_code": 200
        }
      ]
    },
    {
      "name": "Notifications",
      "prefix": "/notifications",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create Notification",
          "description": "Creates a new notification for a user. Validates that the user exists before creating the notification. Returns 400 if the user does not exist.",
          "request_body": {
            "schema_name": "NotificationCreate",
            "fields": [
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "message",
                "type": "str",
                "required": false
              },
              {
                "name": "notification_type",
                "type": "NotificationType",
                "required": true,
                "enum_values": [
                  "INFO",
                  "WARNING",
                  "ALERT",
                  "REMINDER",
                  "MESSAGE"
                ]
              },
              {
                "name": "related_entity_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "related_entity_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "user_id",
                "type": "str",
                "required": false
              }
            ]
          },
          "response": {
            "schema_name": "NotificationResponse",
            "fields": [
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "message",
                "type": "str",
                "required": false
              },
              {
                "name": "notification_type",
                "type": "NotificationType",
                "required": true,
                "enum_values": [
                  "INFO",
                  "WARNING",
                  "ALERT",
                  "REMINDER",
                  "MESSAGE"
                ]
              },
              {
                "name": "related_entity_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "related_entity_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "is_read",
                "type": "bool",
                "required": true
              },
              {
                "name": "read_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/",
          "summary": "List Notifications",
          "description": "Returns a paginated list of notifications. Supports optional filters for user_id, is_read status, and notification_type. Results are ordered by creation date descending (newest first).",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "user_id",
              "type": "str",
              "required": false
            },
            {
              "name": "is_read",
              "type": "bool",
              "required": false
            },
            {
              "name": "notification_type",
              "type": "NotificationType",
              "required": false
            }
          ],
          "response": {
            "schema_name": "NotificationResponse",
            "fields": [
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "message",
                "type": "str",
                "required": false
              },
              {
                "name": "notification_type",
                "type": "NotificationType",
                "required": true,
                "enum_values": [
                  "INFO",
                  "WARNING",
                  "ALERT",
                  "REMINDER",
                  "MESSAGE"
                ]
              },
              {
                "name": "related_entity_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "related_entity_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "is_read",
                "type": "bool",
                "required": true
              },
              {
                "name": "read_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{notification_id}",
          "summary": "Get Notification",
          "description": "Retrieves a single notification by ID. Returns 404 if the notification does not exist.",
          "path_params": [
            {
              "name": "notification_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "NotificationResponse",
            "fields": [
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "message",
                "type": "str",
                "required": false
              },
              {
                "name": "notification_type",
                "type": "NotificationType",
                "required": true,
                "enum_values": [
                  "INFO",
                  "WARNING",
                  "ALERT",
                  "REMINDER",
                  "MESSAGE"
                ]
              },
              {
                "name": "related_entity_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "related_entity_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "is_read",
                "type": "bool",
                "required": true
              },
              {
                "name": "read_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PATCH",
          "path": "/{notification_id}",
          "summary": "Update Notification",
          "description": "Updates a notification's details. Only provided fields are updated; unset fields remain unchanged. Returns 404 if the notification does not exist.",
          "path_params": [
            {
              "name": "notification_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "NotificationUpdate",
            "fields": [
              {
                "name": "title",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "message",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "notification_type",
                "type": "NotificationType",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "INFO",
                  "WARNING",
                  "ALERT",
                  "REMINDER",
                  "MESSAGE"
                ]
              },
              {
                "name": "is_read",
                "type": "bool",
                "required": false,
                "nullable": true
              },
              {
                "name": "read_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "related_entity_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "related_entity_id",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "NotificationResponse",
            "fields": [
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "message",
                "type": "str",
                "required": false
              },
              {
                "name": "notification_type",
                "type": "NotificationType",
                "required": true,
                "enum_values": [
                  "INFO",
                  "WARNING",
                  "ALERT",
                  "REMINDER",
                  "MESSAGE"
                ]
              },
              {
                "name": "related_entity_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "related_entity_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "is_read",
                "type": "bool",
                "required": true
              },
              {
                "name": "read_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/{notification_id}",
          "summary": "Delete Notification",
          "description": "Deletes a notification by ID. Returns 404 if the notification does not exist.",
          "path_params": [
            {
              "name": "notification_id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/{notification_id}/mark-read",
          "summary": "Mark Notification as Read",
          "description": "Marks a notification as read and sets the read_at timestamp. Returns 400 if the notification is already marked as read. Returns 404 if the notification does not exist.",
          "path_params": [
            {
              "name": "notification_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "NotificationMarkReadRequest",
            "fields": []
          },
          "response": {
            "schema_name": "NotificationResponse",
            "fields": [
              {
                "name": "title",
                "type": "str",
                "required": false
              },
              {
                "name": "message",
                "type": "str",
                "required": false
              },
              {
                "name": "notification_type",
                "type": "NotificationType",
                "required": true,
                "enum_values": [
                  "INFO",
                  "WARNING",
                  "ALERT",
                  "REMINDER",
                  "MESSAGE"
                ]
              },
              {
                "name": "related_entity_type",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "related_entity_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "user_id",
                "type": "str",
                "required": true
              },
              {
                "name": "is_read",
                "type": "bool",
                "required": true
              },
              {
                "name": "read_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        }
      ]
    },
    {
      "name": "Notes",
      "prefix": "/notes",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create Note",
          "description": "Creates a new note record. Validates that the creator user exists and that any referenced production, venue, performance, or rehearsal exists. Returns 400 if validation fails.",
          "request_body": {
            "schema_name": "NoteCreate",
            "fields": [
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": false
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "performance_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "content",
                "type": "str",
                "required": false
              },
              {
                "name": "is_private",
                "type": "bool",
                "required": false,
                "default": false
              }
            ]
          },
          "response": {
            "schema_name": "NoteResponse",
            "fields": [
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": false
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "performance_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "content",
                "type": "str",
                "required": false
              },
              {
                "name": "is_private",
                "type": "bool",
                "required": false,
                "default": false
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/",
          "summary": "List Notes",
          "description": "Returns a paginated list of notes. Supports optional filters by creator user, production, venue, performance, rehearsal, and privacy status. Results are ordered by creation date descending.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "created_by_user_id",
              "type": "str",
              "required": false
            },
            {
              "name": "production_id",
              "type": "str",
              "required": false
            },
            {
              "name": "venue_id",
              "type": "str",
              "required": false
            },
            {
              "name": "performance_id",
              "type": "str",
              "required": false
            },
            {
              "name": "rehearsal_id",
              "type": "str",
              "required": false
            },
            {
              "name": "is_private",
              "type": "bool",
              "required": false
            }
          ],
          "response": {
            "schema_name": "NoteResponse",
            "fields": [
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": false
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "performance_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "content",
                "type": "str",
                "required": false
              },
              {
                "name": "is_private",
                "type": "bool",
                "required": false,
                "default": false
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{note_id}",
          "summary": "Get Note",
          "description": "Returns a single note by ID. Returns 404 if the note does not exist.",
          "path_params": [
            {
              "name": "note_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "NoteResponse",
            "fields": [
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": false
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "performance_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "content",
                "type": "str",
                "required": false
              },
              {
                "name": "is_private",
                "type": "bool",
                "required": false,
                "default": false
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{note_id}/details",
          "summary": "Get Note Details",
          "description": "Returns detailed note information including creator user name, production title, venue name, performance date, and rehearsal date. Uses eager loading to minimize database queries. Returns 404 if the note does not exist.",
          "path_params": [
            {
              "name": "note_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "NoteDetailResponse",
            "fields": [
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": false
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "performance_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "content",
                "type": "str",
                "required": false
              },
              {
                "name": "is_private",
                "type": "bool",
                "required": false,
                "default": false
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "created_by_user_first_name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "created_by_user_last_name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_title",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "performance_date",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_date",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/{note_id}",
          "summary": "Update Note",
          "description": "Updates an existing note. All fields are optional; only provided fields are updated. Validates that any new user, production, venue, performance, or rehearsal references exist. Returns 404 if the note does not exist, 400 if validation fails.",
          "path_params": [
            {
              "name": "note_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "NoteUpdate",
            "fields": [
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "performance_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "content",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "is_private",
                "type": "bool",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "NoteResponse",
            "fields": [
              {
                "name": "created_by_user_id",
                "type": "str",
                "required": false
              },
              {
                "name": "production_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "venue_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "performance_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "rehearsal_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "content",
                "type": "str",
                "required": false
              },
              {
                "name": "is_private",
                "type": "bool",
                "required": false,
                "default": false
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/{note_id}",
          "summary": "Delete Note",
          "description": "Deletes a note by ID. Returns 404 if the note does not exist.",
          "path_params": [
            {
              "name": "note_id",
              "type": "str"
            }
          ],
          "status_code": 204
        }
      ]
    }
  ],
  "enums": {
    "UserRole": [
      "ADMINISTRATOR",
      "VENUE_MANAGER",
      "PRODUCTION_MANAGER",
      "TECHNICAL_DIRECTOR",
      "STAFF_MEMBER",
      "PERFORMER",
      "GUEST"
    ],
    "StageType": [
      "PROSCENIUM",
      "THRUST",
      "ARENA",
      "BLACK_BOX",
      "FLEXIBLE",
      "OUTDOOR",
      "OTHER"
    ],
    "ProductionType": [
      "PLAY",
      "MUSICAL",
      "OPERA",
      "DANCE",
      "CONCERT",
      "COMEDY",
      "OTHER"
    ],
    "ProductionStatus": [
      "PLANNING",
      "IN_REHEARSAL",
      "IN_PRODUCTION",
      "COMPLETED",
      "CANCELLED"
    ],
    "PerformanceStatus": [
      "SCHEDULED",
      "CANCELLED",
      "COMPLETED",
      "IN_PROGRESS"
    ],
    "RehearsalType": [
      "READ_THROUGH",
      "BLOCKING",
      "WORKING",
      "TECHNICAL",
      "DRESS",
      "OTHER"
    ],
    "RehearsalStatus": [
      "SCHEDULED",
      "CANCELLED",
      "COMPLETED"
    ],
    "RoleType": [
      "LEAD",
      "SUPPORTING",
      "ENSEMBLE",
      "UNDERSTUDY",
      "OTHER"
    ],
    "BookingStatus": [
      "INQUIRY",
      "PENDING",
      "APPROVED",
      "REJECTED",
      "CANCELLED",
      "COMPLETED"
    ],
    "ResourceCondition": [
      "EXCELLENT",
      "GOOD",
      "FAIR",
      "POOR",
      "NEEDS_REPAIR",
      "RETIRED"
    ],
    "MaintenanceType": [
      "INSPECTION",
      "REPAIR",
      "CLEANING",
      "CALIBRATION",
      "REPLACEMENT",
      "OTHER"
    ],
    "ScheduleType": [
      "REHEARSAL",
      "PERFORMANCE",
      "MEETING",
      "CALL_TIME",
      "OTHER"
    ],
    "TaskPriority": [
      "LOW",
      "MEDIUM",
      "HIGH",
      "URGENT"
    ],
    "TaskStatus": [
      "TODO",
      "IN_PROGRESS",
      "BLOCKED",
      "COMPLETED",
      "CANCELLED"
    ],
    "ExpenseStatus": [
      "PENDING",
      "APPROVED",
      "REJECTED",
      "PAID"
    ],
    "ContactType": [
      "VENDOR",
      "CONTRACTOR",
      "AGENT",
      "SPONSOR",
      "DONOR",
      "OTHER"
    ],
    "DocumentType": [
      "SCRIPT",
      "CONTRACT",
      "RIDER",
      "SCHEDULE",
      "BUDGET",
      "OTHER"
    ],
    "NotificationType": [
      "INFO",
      "WARNING",
      "ALERT",
      "REMINDER",
      "MESSAGE"
    ]
  }
}
