applicant | Object | Creator of the letter. Contains name and email. | No (Auto) | { "name": "Fauzan", "email": "12345@school.edu" } |
reviewer | Object | Reviewer assigned to approve/reject the letter. Same structure as applicant. | No (Auto) | { "name": "Rifan", "email": "rifan@school.edu" } |
letterType | String (Enum) | Type of letter. Predefined values. | Yes | LEAVE_PERMISSION, RECOMMENDATION, DISPENSATION |
status | String (Enum) | Current state of the letter. | No (Auto) | DRAFT, PENDING, UNDER_REVIEW, REVISIONS_NEEDED, APPROVED, REJECTED |
beginDate | ISO Date | Start date of the letter's validity period. | Depends* | 2023-10-01T00:00:00Z |
endDate | ISO Date | End date of the letter's validity period. | Depends* | 2023-10-05T00:00:00Z |
attachment | String (URL) | Link to uploaded attachment file (e.g., PDF). | Depends** | https://s3.school.edu/attachments/123.pdf |
reason | String | Purpose/description of the letter. | Yes | "Lomba short movie cfd" |
cc | Array<String> | List of email addresses to carbon-copy. | No | ["student1@school.edu", "student2@school.edu"] |
isPrinted | Boolean | Whether the letter has been physically printed. | Yes | false |
letterNumber | String | Auto-generated unique ID after approval (e.g., "SCH/2023/001"). | No | SCH/2023/001 |
letterDate | ISO Date | Official date assigned when the letter is approved. | No | 2023-09-25T14:30:00Z |
letterContent | String | Body/content of the letter (HTML or plain text). | No | https://s3.school.edu/attachments/123.pdf |
createdAt | ISO Date | Timestamp of letter creation (auto-generated). | No (Auto) | 2023-09-25T09:15:00Z |
updatedAt | ISO Date | Timestamp of last update (auto-generated). | No (Auto) | 2023-09-25T10:30:00Z |