Files
herolib/lib/circles/mcc/openapi.json
2025-03-17 01:25:26 +01:00

1972 lines
59 KiB
JSON

{
"openapi": "3.1.0",
"info": {
"title": "HeroLib Circles MCC API",
"description": "API for Multi-Currency Circles (MCC) module of HeroLib Circles.\nThis API provides endpoints for managing emails and calendar events.\n",
"version": "1.0.0",
"contact": {
"name": "FreeFlow Universe",
"url": "https://freeflowuniverse.org"
}
},
"servers": [
{
"url": "https://api.example.com/v1",
"description": "Production server"
},
{
"url": "https://dev-api.example.com/v1",
"description": "Development server"
}
],
"paths": {
"/emails": {
"get": {
"summary": "List all emails",
"description": "Returns a list of all emails in the system",
"operationId": "listEmails",
"parameters": [
{
"name": "mailbox",
"in": "query",
"description": "Filter emails by mailbox",
"required": false,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "A list of emails",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Email"
}
},
"examples": {
"listEmails": {
"value": [
{
"id": 1,
"uid": 101,
"seq_num": 1,
"mailbox": "INBOX",
"message": "Hello, this is a test email.",
"attachments": [],
"flags": [
"\\Seen"
],
"internal_date": 1647356400,
"size": 256,
"envelope": {
"date": 1647356400,
"subject": "Test Email",
"from": [
"sender@example.com"
],
"sender": [
"sender@example.com"
],
"reply_to": [
"sender@example.com"
],
"to": [
"recipient@example.com"
],
"cc": [],
"bcc": [],
"in_reply_to": "",
"message_id": "<abc123@example.com>"
}
},
{
"id": 2,
"uid": 102,
"seq_num": 2,
"mailbox": "INBOX",
"message": "This is another test email with an attachment.",
"attachments": [
{
"filename": "document.pdf",
"content_type": "application/pdf",
"data": "base64encodeddata"
}
],
"flags": [],
"internal_date": 1647442800,
"size": 1024,
"envelope": {
"date": 1647442800,
"subject": "Email with Attachment",
"from": [
"sender2@example.com"
],
"sender": [
"sender2@example.com"
],
"reply_to": [
"sender2@example.com"
],
"to": [
"recipient@example.com"
],
"cc": [
"cc@example.com"
],
"bcc": [],
"in_reply_to": "",
"message_id": "<def456@example.com>"
}
}
]
}
}
}
}
}
}
},
"post": {
"summary": "Create a new email",
"description": "Creates a new email in the system",
"operationId": "createEmail",
"requestBody": {
"description": "Email to create",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmailCreate"
},
"examples": {
"createEmail": {
"value": {
"mailbox": "INBOX",
"message": "Hello, this is a new email.",
"attachments": [],
"flags": [],
"envelope": {
"subject": "New Email",
"from": [
"sender@example.com"
],
"to": [
"recipient@example.com"
],
"cc": [],
"bcc": []
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created email",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Email"
},
"examples": {
"createdEmail": {
"value": {
"id": 3,
"uid": 103,
"seq_num": 3,
"mailbox": "INBOX",
"message": "Hello, this is a new email.",
"attachments": [],
"flags": [],
"internal_date": 1647529200,
"size": 128,
"envelope": {
"date": 1647529200,
"subject": "New Email",
"from": [
"sender@example.com"
],
"sender": [
"sender@example.com"
],
"reply_to": [
"sender@example.com"
],
"to": [
"recipient@example.com"
],
"cc": [],
"bcc": [],
"in_reply_to": "",
"message_id": "<ghi789@example.com>"
}
}
}
}
}
}
}
}
}
},
"/emails/{id}": {
"get": {
"summary": "Get email by ID",
"description": "Returns a single email by ID",
"operationId": "getEmailById",
"parameters": [
{
"name": "id",
"in": "path",
"description": "ID of the email to retrieve",
"required": true,
"schema": {
"type": "integer",
"format": "uint32"
}
}
],
"responses": {
"200": {
"description": "Email found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Email"
},
"examples": {
"getEmail": {
"value": {
"id": 1,
"uid": 101,
"seq_num": 1,
"mailbox": "INBOX",
"message": "Hello, this is a test email.",
"attachments": [],
"flags": [
"\\Seen"
],
"internal_date": 1647356400,
"size": 256,
"envelope": {
"date": 1647356400,
"subject": "Test Email",
"from": [
"sender@example.com"
],
"sender": [
"sender@example.com"
],
"reply_to": [
"sender@example.com"
],
"to": [
"recipient@example.com"
],
"cc": [],
"bcc": [],
"in_reply_to": "",
"message_id": "<abc123@example.com>"
}
}
}
}
}
}
},
"404": {
"description": "Email not found"
}
}
},
"put": {
"summary": "Update email by ID",
"description": "Updates an existing email",
"operationId": "updateEmailById",
"parameters": [
{
"name": "id",
"in": "path",
"description": "ID of the email to update",
"required": true,
"schema": {
"type": "integer",
"format": "uint32"
}
}
],
"requestBody": {
"description": "Updated email data",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmailUpdate"
},
"examples": {
"updateEmail": {
"value": {
"flags": [
"\\Seen",
"\\Flagged"
]
}
}
}
}
}
},
"responses": {
"200": {
"description": "Email updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Email"
}
}
}
},
"404": {
"description": "Email not found"
}
}
},
"delete": {
"summary": "Delete email by ID",
"description": "Deletes an email",
"operationId": "deleteEmailById",
"parameters": [
{
"name": "id",
"in": "path",
"description": "ID of the email to delete",
"required": true,
"schema": {
"type": "integer",
"format": "uint32"
}
}
],
"responses": {
"204": {
"description": "Email deleted"
},
"404": {
"description": "Email not found"
}
}
}
},
"/emails/search": {
"get": {
"summary": "Search emails",
"description": "Search for emails by various criteria",
"operationId": "searchEmails",
"parameters": [
{
"name": "subject",
"in": "query",
"description": "Search by subject",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "address",
"in": "query",
"description": "Search by email address (from, to, cc, bcc)",
"required": false,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Search results",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Email"
}
},
"examples": {
"searchBySubject": {
"value": [
{
"id": 1,
"uid": 101,
"seq_num": 1,
"mailbox": "INBOX",
"message": "Hello, this is a test email.",
"attachments": [],
"flags": [
"\\Seen"
],
"internal_date": 1647356400,
"size": 256,
"envelope": {
"date": 1647356400,
"subject": "Test Email",
"from": [
"sender@example.com"
],
"sender": [
"sender@example.com"
],
"reply_to": [
"sender@example.com"
],
"to": [
"recipient@example.com"
],
"cc": [],
"bcc": [],
"in_reply_to": "",
"message_id": "<abc123@example.com>"
}
}
]
}
}
}
}
}
}
}
},
"/emails/uid/{uid}": {
"get": {
"summary": "Get email by UID",
"description": "Returns a single email by UID",
"operationId": "getEmailByUid",
"parameters": [
{
"name": "uid",
"in": "path",
"description": "UID of the email to retrieve",
"required": true,
"schema": {
"type": "integer",
"format": "uint32"
}
}
],
"responses": {
"200": {
"description": "Email found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Email"
}
}
}
},
"404": {
"description": "Email not found"
}
}
},
"delete": {
"summary": "Delete email by UID",
"description": "Deletes an email by UID",
"operationId": "deleteEmailByUid",
"parameters": [
{
"name": "uid",
"in": "path",
"description": "UID of the email to delete",
"required": true,
"schema": {
"type": "integer",
"format": "uint32"
}
}
],
"responses": {
"204": {
"description": "Email deleted"
},
"404": {
"description": "Email not found"
}
}
}
},
"/emails/mailbox/{mailbox}": {
"get": {
"summary": "Get emails by mailbox",
"description": "Returns all emails in a specific mailbox",
"operationId": "getEmailsByMailbox",
"parameters": [
{
"name": "mailbox",
"in": "path",
"description": "Mailbox name",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Emails found",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Email"
}
},
"examples": {
"getEmailsByMailbox": {
"value": [
{
"id": 1,
"uid": 101,
"seq_num": 1,
"mailbox": "INBOX",
"message": "Hello, this is a test email.",
"attachments": [],
"flags": [
"\\Seen"
],
"internal_date": 1647356400,
"size": 256,
"envelope": {
"date": 1647356400,
"subject": "Test Email",
"from": [
"sender@example.com"
],
"sender": [
"sender@example.com"
],
"reply_to": [
"sender@example.com"
],
"to": [
"recipient@example.com"
],
"cc": [],
"bcc": [],
"in_reply_to": "",
"message_id": "<abc123@example.com>"
}
},
{
"id": 2,
"uid": 102,
"seq_num": 2,
"mailbox": "INBOX",
"message": "This is another test email with an attachment.",
"attachments": [
{
"filename": "document.pdf",
"content_type": "application/pdf",
"data": "base64encodeddata"
}
],
"flags": [],
"internal_date": 1647442800,
"size": 1024,
"envelope": {
"date": 1647442800,
"subject": "Email with Attachment",
"from": [
"sender2@example.com"
],
"sender": [
"sender2@example.com"
],
"reply_to": [
"sender2@example.com"
],
"to": [
"recipient@example.com"
],
"cc": [
"cc@example.com"
],
"bcc": [],
"in_reply_to": "",
"message_id": "<def456@example.com>"
}
}
]
}
}
}
}
}
}
},
"delete": {
"summary": "Delete emails by mailbox",
"description": "Deletes all emails in a specific mailbox",
"operationId": "deleteEmailsByMailbox",
"parameters": [
{
"name": "mailbox",
"in": "path",
"description": "Mailbox name",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"204": {
"description": "Emails deleted"
}
}
}
},
"/emails/flags/{uid}": {
"put": {
"summary": "Update email flags",
"description": "Update the flags of an email by its UID",
"operationId": "updateEmailFlags",
"parameters": [
{
"name": "uid",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "uint32"
},
"description": "Unique identifier of the email",
"example": 101
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"flags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Updated flags for the email",
"example": [
"\\Seen",
"\\Flagged"
]
}
},
"required": [
"flags"
]
}
}
}
},
"responses": {
"200": {
"description": "Email flags updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Email"
},
"example": {
"id": 1,
"uid": 101,
"seq_num": 1,
"mailbox": "INBOX",
"message": "Hello, this is a test email.",
"attachments": [],
"flags": [
"\\Seen",
"\\Flagged"
],
"internal_date": 1647356400,
"size": 256,
"envelope": {
"date": 1647356400,
"subject": "Test Email",
"from": [
"sender@example.com"
],
"sender": [
"sender@example.com"
],
"reply_to": [
"sender@example.com"
],
"to": [
"recipient@example.com"
],
"cc": [],
"bcc": [],
"in_reply_to": "",
"message_id": "<abc123@example.com>"
}
}
}
}
},
"404": {
"description": "Email not found"
},
"500": {
"description": "Internal server error"
}
}
}
},
"/calendar": {
"get": {
"summary": "List all calendar events",
"description": "Returns a list of all calendar events in the system",
"operationId": "listCalendarEvents",
"responses": {
"200": {
"description": "A list of calendar events",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CalendarEvent"
}
},
"examples": {
"listEvents": {
"value": [
{
"id": 1,
"title": "Team Meeting",
"description": "Weekly team sync meeting",
"location": "Conference Room A",
"start_time": "2023-03-15T10:00:00Z",
"end_time": "2023-03-15T11:00:00Z",
"all_day": false,
"recurrence": "FREQ=WEEKLY;BYDAY=MO",
"attendees": [
"john@example.com",
"jane@example.com"
],
"organizer": "manager@example.com",
"status": "CONFIRMED",
"caldav_uid": "event-123@example.com",
"sync_token": "token123",
"etag": "etag123",
"color": "blue"
},
{
"id": 2,
"title": "Company Holiday",
"description": "New Year's Day",
"location": "",
"start_time": "2023-01-01T00:00:00Z",
"end_time": "2023-01-01T23:59:59Z",
"all_day": true,
"recurrence": "",
"attendees": [],
"organizer": "hr@example.com",
"status": "CONFIRMED",
"caldav_uid": "holiday-123@example.com",
"sync_token": "token456",
"etag": "etag456",
"color": "red"
}
]
}
}
}
}
}
}
},
"post": {
"summary": "Create a new calendar event",
"description": "Creates a new calendar event in the system",
"operationId": "createCalendarEvent",
"requestBody": {
"description": "Calendar event to create",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEventCreate"
},
"examples": {
"createEvent": {
"value": {
"title": "Project Kickoff",
"description": "Initial meeting for new project",
"location": "Conference Room B",
"start_time": "2023-04-01T14:00:00Z",
"end_time": "2023-04-01T15:30:00Z",
"all_day": false,
"recurrence": "",
"attendees": [
"team@example.com",
"client@example.com"
],
"organizer": "manager@example.com",
"status": "CONFIRMED",
"color": "green"
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created calendar event",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEvent"
},
"examples": {
"createdEvent": {
"value": {
"id": 3,
"title": "Project Kickoff",
"description": "Initial meeting for new project",
"location": "Conference Room B",
"start_time": "2023-04-01T14:00:00Z",
"end_time": "2023-04-01T15:30:00Z",
"all_day": false,
"recurrence": "",
"attendees": [
"team@example.com",
"client@example.com"
],
"organizer": "manager@example.com",
"status": "CONFIRMED",
"caldav_uid": "event-456@example.com",
"sync_token": "token789",
"etag": "etag789",
"color": "green"
}
}
}
}
}
}
}
}
},
"/calendar/{id}": {
"get": {
"summary": "Get calendar event by ID",
"description": "Returns a single calendar event by ID",
"operationId": "getCalendarEventById",
"parameters": [
{
"name": "id",
"in": "path",
"description": "ID of the calendar event to retrieve",
"required": true,
"schema": {
"type": "integer",
"format": "uint32"
}
}
],
"responses": {
"200": {
"description": "Calendar event found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEvent"
},
"examples": {
"getEvent": {
"value": {
"id": 1,
"title": "Team Meeting",
"description": "Weekly team sync meeting",
"location": "Conference Room A",
"start_time": "2023-03-15T10:00:00Z",
"end_time": "2023-03-15T11:00:00Z",
"all_day": false,
"recurrence": "FREQ=WEEKLY;BYDAY=MO",
"attendees": [
"john@example.com",
"jane@example.com"
],
"organizer": "manager@example.com",
"status": "CONFIRMED",
"caldav_uid": "event-123@example.com",
"sync_token": "token123",
"etag": "etag123",
"color": "blue"
}
}
}
}
}
},
"404": {
"description": "Calendar event not found"
}
}
},
"put": {
"summary": "Update calendar event by ID",
"description": "Updates an existing calendar event",
"operationId": "updateCalendarEventById",
"parameters": [
{
"name": "id",
"in": "path",
"description": "ID of the calendar event to update",
"required": true,
"schema": {
"type": "integer",
"format": "uint32"
}
}
],
"requestBody": {
"description": "Updated calendar event data",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEventUpdate"
},
"examples": {
"updateEvent": {
"value": {
"title": "Updated Team Meeting",
"location": "Virtual Meeting",
"status": "TENTATIVE"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Calendar event updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEvent"
}
}
}
},
"404": {
"description": "Calendar event not found"
}
}
},
"delete": {
"summary": "Delete calendar event by ID",
"description": "Deletes a calendar event",
"operationId": "deleteCalendarEventById",
"parameters": [
{
"name": "id",
"in": "path",
"description": "ID of the calendar event to delete",
"required": true,
"schema": {
"type": "integer",
"format": "uint32"
}
}
],
"responses": {
"204": {
"description": "Calendar event deleted"
},
"404": {
"description": "Calendar event not found"
}
}
}
},
"/calendar/search": {
"get": {
"summary": "Search calendar events",
"description": "Search for calendar events by various criteria",
"operationId": "searchCalendarEvents",
"parameters": [
{
"name": "title",
"in": "query",
"description": "Search by title",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "date",
"in": "query",
"description": "Search by date (YYYY-MM-DD)",
"required": false,
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "organizer",
"in": "query",
"description": "Search by organizer",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "attendee",
"in": "query",
"description": "Search by attendee",
"required": false,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Search results",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CalendarEvent"
}
},
"examples": {
"searchByTitle": {
"value": [
{
"id": 1,
"title": "Team Meeting",
"description": "Weekly team sync meeting",
"location": "Conference Room A",
"start_time": "2023-03-15T10:00:00Z",
"end_time": "2023-03-15T11:00:00Z",
"all_day": false,
"recurrence": "FREQ=WEEKLY;BYDAY=MO",
"attendees": [
"john@example.com",
"jane@example.com"
],
"organizer": "manager@example.com",
"status": "CONFIRMED",
"caldav_uid": "event-123@example.com",
"sync_token": "token123",
"etag": "etag123",
"color": "blue"
}
]
}
}
}
}
}
}
}
},
"/calendar/caldav/{caldav_uid}": {
"get": {
"summary": "Get calendar event by CalDAV UID",
"description": "Returns a single calendar event by CalDAV UID",
"operationId": "getCalendarEventByCaldavUid",
"parameters": [
{
"name": "caldav_uid",
"in": "path",
"description": "CalDAV UID of the calendar event to retrieve",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Calendar event found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEvent"
}
}
}
},
"404": {
"description": "Calendar event not found"
}
}
},
"delete": {
"summary": "Delete calendar event by CalDAV UID",
"description": "Deletes a calendar event by CalDAV UID",
"operationId": "deleteCalendarEventByCaldavUid",
"parameters": [
{
"name": "caldav_uid",
"in": "path",
"description": "CalDAV UID of the calendar event to delete",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"204": {
"description": "Calendar event deleted"
},
"404": {
"description": "Calendar event not found"
}
}
}
},
"/calendar/date/{date}": {
"get": {
"summary": "Get calendar events by date",
"description": "Returns all calendar events on a specific date",
"operationId": "getCalendarEventsByDate",
"parameters": [
{
"name": "date",
"in": "path",
"description": "Date in YYYY-MM-DD format",
"required": true,
"schema": {
"type": "string",
"format": "date"
}
}
],
"responses": {
"200": {
"description": "Calendar events found",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CalendarEvent"
}
},
"examples": {
"getEventsByDate": {
"value": [
{
"id": 1,
"title": "Team Meeting",
"description": "Weekly team sync meeting",
"location": "Conference Room A",
"start_time": "2023-03-15T10:00:00Z",
"end_time": "2023-03-15T11:00:00Z",
"all_day": false,
"recurrence": "FREQ=WEEKLY;BYDAY=MO",
"attendees": [
"john@example.com",
"jane@example.com"
],
"organizer": "manager@example.com",
"status": "CONFIRMED",
"caldav_uid": "event-123@example.com",
"sync_token": "token123",
"etag": "etag123",
"color": "blue"
},
{
"id": 4,
"title": "Lunch with Client",
"description": "Discuss project requirements",
"location": "Restaurant",
"start_time": "2023-03-15T12:30:00Z",
"end_time": "2023-03-15T14:00:00Z",
"all_day": false,
"recurrence": "",
"attendees": [
"client@example.com"
],
"organizer": "sales@example.com",
"status": "CONFIRMED",
"caldav_uid": "event-789@example.com",
"sync_token": "token101112",
"etag": "etag101112",
"color": "purple"
}
]
}
}
}
}
}
}
}
},
"/calendar/organizer/{organizer}": {
"get": {
"summary": "Get calendar events by organizer",
"description": "Retrieve all calendar events organized by a specific person",
"operationId": "getCalendarEventsByOrganizer",
"parameters": [
{
"name": "organizer",
"in": "path",
"required": true,
"schema": {
"type": "string"
},
"description": "Email address of the organizer",
"example": "manager@example.com"
}
],
"responses": {
"200": {
"description": "A list of calendar events organized by the specified person",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CalendarEvent"
}
},
"example": [
{
"id": 1,
"title": "Team Meeting",
"description": "Weekly team sync meeting",
"location": "Conference Room A",
"start_time": "2023-03-15T10:00:00Z",
"end_time": "2023-03-15T11:00:00Z",
"all_day": false,
"recurrence": "FREQ=WEEKLY;BYDAY=MO",
"attendees": [
"john@example.com",
"jane@example.com"
],
"organizer": "manager@example.com",
"status": "CONFIRMED",
"caldav_uid": "event-123@example.com",
"sync_token": "token123",
"etag": "etag123",
"color": "blue"
}
]
}
}
},
"404": {
"description": "No events found for the specified organizer"
},
"500": {
"description": "Internal server error"
}
}
}
},
"/calendar/attendee/{attendee}": {
"get": {
"summary": "Get calendar events by attendee",
"description": "Retrieve all calendar events that a specific person is attending",
"operationId": "getCalendarEventsByAttendee",
"parameters": [
{
"name": "attendee",
"in": "path",
"required": true,
"schema": {
"type": "string"
},
"description": "Email address of the attendee",
"example": "john@example.com"
}
],
"responses": {
"200": {
"description": "A list of calendar events the specified person is attending",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CalendarEvent"
}
},
"example": [
{
"id": 2,
"title": "Project Review",
"description": "Monthly project status review",
"location": "Conference Room B",
"start_time": "2023-03-20T14:00:00Z",
"end_time": "2023-03-20T15:00:00Z",
"all_day": false,
"recurrence": "FREQ=MONTHLY",
"attendees": [
"john@example.com",
"team@example.com"
],
"organizer": "director@example.com",
"status": "CONFIRMED",
"caldav_uid": "event-456@example.com",
"sync_token": "token456",
"etag": "etag456",
"color": "green"
}
]
}
}
},
"404": {
"description": "No events found for the specified attendee"
},
"500": {
"description": "Internal server error"
}
}
}
},
"/calendar/status/{id}": {
"put": {
"summary": "Update calendar event status",
"description": "Update the status of a calendar event by its ID",
"operationId": "updateCalendarEventStatus",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "uint32"
},
"description": "Unique identifier of the calendar event",
"example": 1
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"CONFIRMED",
"CANCELLED",
"TENTATIVE"
],
"description": "New status for the event",
"example": "TENTATIVE"
}
},
"required": [
"status"
]
}
}
}
},
"responses": {
"200": {
"description": "Calendar event status updated successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEvent"
}
}
}
},
"400": {
"description": "Invalid status value"
},
"404": {
"description": "Calendar event not found"
},
"500": {
"description": "Internal server error"
}
}
}
}
},
"components": {
"schemas": {
"Email": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "uint32",
"description": "Database ID (assigned by DBHandler)",
"example": 1
},
"uid": {
"type": "integer",
"format": "uint32",
"description": "Unique identifier of the message (in the circle)",
"example": 101
},
"seq_num": {
"type": "integer",
"format": "uint32",
"description": "IMAP sequence number (in the mailbox)",
"example": 1
},
"mailbox": {
"type": "string",
"description": "The mailbox this email belongs to",
"example": "INBOX"
},
"message": {
"type": "string",
"description": "The email body content",
"example": "Hello, this is a test email."
},
"attachments": {
"type": "array",
"description": "Any file attachments",
"items": {
"$ref": "#/components/schemas/Attachment"
}
},
"flags": {
"type": "array",
"description": "IMAP flags like \\Seen, \\Deleted, etc.",
"items": {
"type": "string"
},
"example": [
"\\Seen"
]
},
"internal_date": {
"type": "integer",
"format": "int64",
"description": "Unix timestamp when the email was received",
"example": 1647356400
},
"size": {
"type": "integer",
"format": "uint32",
"description": "Size of the message in bytes",
"example": 256
},
"envelope": {
"$ref": "#/components/schemas/Envelope"
}
},
"required": [
"id",
"uid",
"mailbox",
"message"
]
},
"EmailCreate": {
"type": "object",
"properties": {
"mailbox": {
"type": "string",
"description": "The mailbox this email belongs to",
"example": "INBOX"
},
"message": {
"type": "string",
"description": "The email body content",
"example": "Hello, this is a new email."
},
"attachments": {
"type": "array",
"description": "Any file attachments",
"items": {
"$ref": "#/components/schemas/Attachment"
}
},
"flags": {
"type": "array",
"description": "IMAP flags like \\Seen, \\Deleted, etc.",
"items": {
"type": "string"
},
"example": []
},
"envelope": {
"$ref": "#/components/schemas/EnvelopeCreate"
}
},
"required": [
"mailbox",
"message"
]
},
"EmailUpdate": {
"type": "object",
"properties": {
"mailbox": {
"type": "string",
"description": "The mailbox this email belongs to"
},
"message": {
"type": "string",
"description": "The email body content"
},
"attachments": {
"type": "array",
"description": "Any file attachments",
"items": {
"$ref": "#/components/schemas/Attachment"
}
},
"flags": {
"type": "array",
"description": "IMAP flags like \\Seen, \\Deleted, etc.",
"items": {
"type": "string"
},
"example": [
"\\Seen",
"\\Flagged"
]
},
"envelope": {
"$ref": "#/components/schemas/EnvelopeCreate"
}
}
},
"Attachment": {
"type": "object",
"properties": {
"filename": {
"type": "string",
"description": "Name of the attached file",
"example": "document.pdf"
},
"content_type": {
"type": "string",
"description": "MIME type of the attachment",
"example": "application/pdf"
},
"data": {
"type": "string",
"description": "Base64 encoded binary data",
"example": "base64encodeddata"
}
},
"required": [
"filename",
"content_type",
"data"
]
},
"Envelope": {
"type": "object",
"properties": {
"date": {
"type": "integer",
"format": "int64",
"description": "Unix timestamp of the email date",
"example": 1647356400
},
"subject": {
"type": "string",
"description": "Email subject",
"example": "Test Email"
},
"from": {
"type": "array",
"description": "From addresses",
"items": {
"type": "string"
},
"example": [
"sender@example.com"
]
},
"sender": {
"type": "array",
"description": "Sender addresses",
"items": {
"type": "string"
},
"example": [
"sender@example.com"
]
},
"reply_to": {
"type": "array",
"description": "Reply-To addresses",
"items": {
"type": "string"
},
"example": [
"sender@example.com"
]
},
"to": {
"type": "array",
"description": "To addresses",
"items": {
"type": "string"
},
"example": [
"recipient@example.com"
]
},
"cc": {
"type": "array",
"description": "CC addresses",
"items": {
"type": "string"
},
"example": []
},
"bcc": {
"type": "array",
"description": "BCC addresses",
"items": {
"type": "string"
},
"example": []
},
"in_reply_to": {
"type": "string",
"description": "Message ID this email is replying to",
"example": ""
},
"message_id": {
"type": "string",
"description": "Unique message ID",
"example": "<abc123@example.com>"
}
},
"required": [
"subject",
"from",
"to"
]
},
"EnvelopeCreate": {
"type": "object",
"properties": {
"subject": {
"type": "string",
"description": "Email subject",
"example": "New Email"
},
"from": {
"type": "array",
"description": "From addresses",
"items": {
"type": "string"
},
"example": [
"sender@example.com"
]
},
"to": {
"type": "array",
"description": "To addresses",
"items": {
"type": "string"
},
"example": [
"recipient@example.com"
]
},
"cc": {
"type": "array",
"description": "CC addresses",
"items": {
"type": "string"
},
"example": []
},
"bcc": {
"type": "array",
"description": "BCC addresses",
"items": {
"type": "string"
},
"example": []
}
},
"required": [
"subject",
"from",
"to"
]
},
"CalendarEvent": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "uint32",
"description": "Unique identifier",
"example": 1
},
"title": {
"type": "string",
"description": "Event title",
"example": "Team Meeting"
},
"description": {
"type": "string",
"description": "Event details",
"example": "Weekly team sync meeting"
},
"location": {
"type": "string",
"description": "Event location",
"example": "Conference Room A"
},
"start_time": {
"type": "string",
"format": "date-time",
"description": "Start time",
"example": "2023-03-15T10:00:00Z"
},
"end_time": {
"type": "string",
"format": "date-time",
"description": "End time",
"example": "2023-03-15T11:00:00Z"
},
"all_day": {
"type": "boolean",
"description": "True if it's an all-day event",
"example": false
},
"recurrence": {
"type": "string",
"description": "RFC 5545 Recurrence Rule",
"example": "FREQ=WEEKLY;BYDAY=MO"
},
"attendees": {
"type": "array",
"description": "List of emails or user IDs",
"items": {
"type": "string"
},
"example": [
"john@example.com",
"jane@example.com"
]
},
"organizer": {
"type": "string",
"description": "Organizer email",
"example": "manager@example.com"
},
"status": {
"type": "string",
"description": "CONFIRMED, CANCELLED, TENTATIVE",
"enum": [
"CONFIRMED",
"CANCELLED",
"TENTATIVE"
],
"example": "CONFIRMED"
},
"caldav_uid": {
"type": "string",
"description": "CalDAV UID for syncing",
"example": "event-123@example.com"
},
"sync_token": {
"type": "string",
"description": "Sync token for tracking changes",
"example": "token123"
},
"etag": {
"type": "string",
"description": "ETag for caching",
"example": "etag123"
},
"color": {
"type": "string",
"description": "User-friendly color categorization",
"example": "blue"
}
},
"required": [
"id",
"title",
"start_time",
"end_time"
]
},
"CalendarEventCreate": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Event title",
"example": "Project Kickoff"
},
"description": {
"type": "string",
"description": "Event details",
"example": "Initial meeting for new project"
},
"location": {
"type": "string",
"description": "Event location",
"example": "Conference Room B"
},
"start_time": {
"type": "string",
"format": "date-time",
"description": "Start time",
"example": "2023-04-01T14:00:00Z"
},
"end_time": {
"type": "string",
"format": "date-time",
"description": "End time",
"example": "2023-04-01T15:30:00Z"
},
"all_day": {
"type": "boolean",
"description": "True if it's an all-day event",
"example": false
},
"recurrence": {
"type": "string",
"description": "RFC 5545 Recurrence Rule",
"example": ""
},
"attendees": {
"type": "array",
"description": "List of emails or user IDs",
"items": {
"type": "string"
},
"example": [
"team@example.com",
"client@example.com"
]
},
"organizer": {
"type": "string",
"description": "Organizer email",
"example": "manager@example.com"
},
"status": {
"type": "string",
"description": "CONFIRMED, CANCELLED, TENTATIVE",
"enum": [
"CONFIRMED",
"CANCELLED",
"TENTATIVE"
],
"example": "CONFIRMED"
},
"color": {
"type": "string",
"description": "User-friendly color categorization",
"example": "green"
}
},
"required": [
"title",
"start_time",
"end_time"
]
},
"CalendarEventUpdate": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Event title",
"example": "Updated Team Meeting"
},
"description": {
"type": "string",
"description": "Event details"
},
"location": {
"type": "string",
"description": "Event location",
"example": "Virtual Meeting"
},
"start_time": {
"type": "string",
"format": "date-time",
"description": "Start time"
},
"end_time": {
"type": "string",
"format": "date-time",
"description": "End time"
},
"all_day": {
"type": "boolean",
"description": "True if it's an all-day event"
},
"recurrence": {
"type": "string",
"description": "RFC 5545 Recurrence Rule"
},
"attendees": {
"type": "array",
"description": "List of emails or user IDs",
"items": {
"type": "string"
}
},
"organizer": {
"type": "string",
"description": "Organizer email"
},
"status": {
"type": "string",
"description": "CONFIRMED, CANCELLED, TENTATIVE",
"enum": [
"CONFIRMED",
"CANCELLED",
"TENTATIVE"
],
"example": "TENTATIVE"
},
"color": {
"type": "string",
"description": "User-friendly color categorization"
}
}
}
}
}
}