# models.yaml user: type: object properties: idUser: type: integer description: Unique identifier for the user. #readOnly: true # Typically generated by the server example: 101 userSurname: type: string description: User's surname (last name). example: "Doe" userName: type: string description: User's given name (first name). example: "John" primaryMail: type: string format: email description: User's primary email address. example: "john.doe@example.com" secondaryMail: type: string format: email description: User's secondary email address (optional). example: "j.doe@personal.com" phoneNumber: type: string description: User's phone number. example: "+33612345678" # Example using international format user-entrepreneur: allOf: - $ref: "#/user" - type: object properties: school: type: string description: The school the entrepreneur attends/attended. example: "ENSEIRB-MATMECA" course: type: string description: The specific course or program of study. example: "Electronics" sneeStatus: type: boolean description: Indicates if the user has SNEE status (Statut National d'Étudiant-Entrepreneur). example: true example: # Added full object example idUser: 101 userSurname: "Doe" userName: "John" primaryMail: "john.doe@example.com" secondaryMail: "j.doe@personal.com" phoneNumber: "+33612345678" school: "ENSEIRB-MATMECA" course: "Electronics" sneeStatus: true user-admin: allOf: - $ref: "#/user" # No additional properties needed for this example example: # Added full object example idUser: 55 userSurname: "Admin" userName: "Super" primaryMail: "admin@myinpulse.com" phoneNumber: "+33512345678" sectionCell: type: object description: Represents a cell (like a sticky note) within a specific section of a project's Lean Canvas. properties: idSectionCell: type: integer description: Unique identifier for the section cell. #readOnly: true # Generated by server example: 508 sectionId: type: integer description: Identifier of the Lean Canvas section this cell belongs to (e.g., 1 for Problem, 2 for Solution). example: 1 contentSectionCell: type: string description: The text content of the section cell. example: "Users find it hard to track project progress." modificationDate: type: string format: date # Using Java LocalDate -> YYYY-MM-DD description: The date when this cell was last modified. #readOnly: true # Typically updated by the server on modification example: "2025-04-15" project: type: object description: Represents a project being managed or developed. properties: idProject: type: integer description: Unique identifier for the project. #readOnly: true # Generated by server example: 12 projectName: type: string description: The name of the project. example: "MyInpulse Mobile App" creationDate: type: string format: date # Using Java LocalDate -> YYYY-MM-DD description: The date when the project was created in the system. #readOnly: true # Set by server example: "2024-11-20" logo: type: string format: byte description: Base64 encoded string representing the project logo image. example: "/*Base64 encoded string representing the project logo image*/" status: type: string enum: [PENDING, ACTIVE, ENDED, ABORTED, REJECTED] description: Corresponds to a status enum internal to the backend, it's value in in requests incoming to the server should be ignored as the client shouldn't be specifying them. example: "NaN" report: type: object description: Represents a report associated with an appointment. properties: idReport: type: integer description: Unique identifier for the report. #readOnly: true # Generated by server example: 987 reportContent: type: string description: The textual content of the report. Could be plain text or Markdown (specify if known). example: "Discussed roadmap milestones for Q3. Agreed on preliminary UI mockups." appointment: # Corrected typo type: object description: Represents a scheduled meeting or appointment. properties: idAppointment: # Assuming there's an ID type: integer description: Unique identifier for the appointment. #readOnly: true example: 303 appointmentDate: type: string format: date # Using Java LocalDate -> YYYY-MM-DD description: The date of the appointment. example: "2025-05-10" appointmentTime: type: string format: time # Using Java LocalTime -> HH:mm:ss description: The time of the appointment (local time). example: "14:30:00" appointmentDuration: type: string description: Duration of the appointment in ISO 8601 duration format (e.g., PT1H30M for 1 hour 30 minutes). example: "PT1H" # Example for 1 hour appointmentPlace: type: string description: Location or meeting link for the appointment. example: "Meeting Room 3 / https://meet.example.com/abc-def-ghi" appointmentSubject: type: string description: The main topic or subject of the appointment. example: "Q3 Roadmap Planning" # Consider adding project ID or user IDs if relevant association exists joinRequest: type: object description: Represents a request from an entrepreneur to join an existing project. properties: projectId: type: integer description: The ID of the project the entrepreneur wants to join. example: 12 # Consider adding userId if the requester isn't implicit from auth context # Consider adding a message field projectDecision: type: object description: Represents a decision from an admin to accept a pending project. properties: projectId: type: integer description: The ID of the project the entrepreneur wants to join. example: 12 adminId: type: integer description: The ID of the project the admin who will supervise the project in case of admission. example: 2 isAccepted: type: boolean description: The boolean value of the decision. example: "true"