Strings - AI Assistant (Beta) ✅

Strings - AI Assistant (Beta) ✅ · GPT-Aktionen

TODO Plugin

Manage tasks, sync sessions with Google Calendar, and handle user preferences.

  • GET /sync_sessionRetrieve user info and sync session.

    Fetch user info, tasks, events for 7 days, sync Calendar. Ensure no conflicts & follow preferences. Alert for overdue sessions & prompt user action. Schedule new session events.

  • POST /update-user-profileUpdate user profile details.

    Update user profile such as username, time zone, and week start day. Ensure updates reflect in Google Calendar and validate all fields.

  • POST /add_or_update_user_preferencesModify user preferences dynamically.

    Add, update, or delete user preferences. Ensure preferences align with user needs and improve scheduling decisions. Confirm changes with user.

  • POST /schedule-eventsSchedule events in Google Calendar.

    Add events to Google Calendar, ensuring no conflicts with existing events. Adhere to user preferences and task scheduling guidelines.

  • POST /reschedule_or_edit_eventsReschedule or edit calendar events.

    Update event start dates, names, and descriptions. Align changes with user's schedule and preferences. Avoid conflicts with other tasks or events.

  • POST /complete_sessionsMark completed sessions and update tasks.

    Update event status to completed in Calendar and Firestore. Adjust task duration and ensure all related sessions are tracked. Confirm updates with user.

  • POST /cancel_sessionsCancel sessions and remove from Calendar.

    Remove events from Calendar and mark tasks as canceled. Confirm cancellation with user and ensure no conflicts.

  • POST /add_tasksAdd new tasks with detailed info.

    Create tasks with titles, descriptions, durations, and scheduling preferences. Server sets default due dates. Sync with user's calendar for scheduling. Ensure alignment with preferences.

  • PUT /update_taskUpdate task or subtask details.

    Modify task or subtask properties like title, description, and duration. Ensure updates reflect in the user's schedule and preferences. Confirm changes with the user.

  • POST /delete_tasksDelete specified tasks or subtasks.

    Remove tasks or subtasks from Firestore and Google Calendar. Ensure tasks are no longer scheduled and confirm deletions with user.

  • POST /complete-tasksMark tasks or subtasks as completed.

    Update status of tasks or subtasks to completed. Reflect changes in Firestore and Google Calendar. Ensure all related sessions are tracked.

  • GET /get-all-user-tasksGet all tasks associated with user

    Retrieve all tasks for the user from Firestore. Organized and accessible overview of all user tasks. Use this to manage tasks effectively.

  • GET /get-all-pending-tasksGet all pending tasks for user.

    Fetch all pending tasks. Use to manage and prioritize tasks needing attention. Ensure tasks are tracked and updated.

Ursprüngliches API-Schema
{
  "openapi": "3.1.0",
  "info": {
    "title": "TODO Plugin",
    "description": "Manage tasks, sync sessions with Google Calendar, and handle user preferences.",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://taskrush.app"
    }
  ],
  "paths": {
    "/sync_session": {
      "get": {
        "operationId": "syncSession",
        "x-openai-isConsequential": false,
        "summary": "Retrieve user info and sync session.",
        "description": "Fetch user info, tasks, events for 7 days, sync Calendar. Ensure no conflicts & follow preferences. Alert for overdue sessions & prompt user action. Schedule new session events.",
        "responses": {
          "200": {
            "description": "User information and pending tasks",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "username": {
                      "type": "string",
                      "description": "The username of the user."
                    },
                    "time_zone": {
                      "type": "string",
                      "description": "The time zone of the user."
                    },
                    "user_preferences": {
                      "type": "string",
                      "description": "User preferences."
                    },
                    "current_time": {
                      "type": "string",
                      "description": "Current time in user's time zone."
                    },
                    "calendar_events_next_7_days": {
                      "type": "string",
                      "description": "Formatted string of events for the next 7 days."
                    },
                    "task_sessions_info": {
                      "type": "string",
                      "description": "Information about upcoming sessions for pending tasks."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/update-user-profile": {
      "post": {
        "operationId": "updateUserProfile",
        "x-openai-isConsequential": false,
        "summary": "Update user profile details.",
        "description": "Update user profile such as username, time zone, and week start day. Ensure updates reflect in Google Calendar and validate all fields.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "new_username": {
                    "type": "string",
                    "description": "The new username for the user."
                  },
                  "time_zone": {
                    "type": "string",
                    "description": "The updated time zone for the user, in IANA Time Zone Database format.",
                    "pattern": "^([A-Za-z]+(?:/[A-Za-z_]+)+)$"
                  },
                  "week_starts_on": {
                    "type": "string",
                    "description": "The first day of the week for the user."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "User profile successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Confirmation that the user profile was updated."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/add_or_update_user_preferences": {
      "post": {
        "operationId": "addOrUpdateUserPreferences",
        "summary": "Modify user preferences dynamically.",
        "description": "Add, update, or delete user preferences. Ensure preferences align with user needs and improve scheduling decisions. Confirm changes with user.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "action": {
                    "type": "string",
                    "enum": [
                      "add",
                      "update",
                      "delete"
                    ],
                    "description": "The action to perform on the user's preferences."
                  },
                  "preference": {
                    "type": "string",
                    "description": "The preference text to add or update. Required for 'add' and 'update' actions."
                  },
                  "index": {
                    "type": "integer",
                    "description": "The index of the preference to update or delete. Required for 'update' and 'delete' actions."
                  }
                },
                "required": [
                  "action"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "User preference successfully modified."
          },
          "400": {
            "description": "Invalid request."
          }
        }
      }
    },
    "/schedule-events": {
      "post": {
        "operationId": "scheduleEvents",
        "x-openai-isConsequential": false,
        "summary": "Schedule events in Google Calendar.",
        "description": "Add events to Google Calendar, ensuring no conflicts with existing events. Adhere to user preferences and task scheduling guidelines.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "event_list": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Event"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Events scheduled successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Confirmation that the events were scheduled successfully."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/reschedule_or_edit_events": {
      "post": {
        "operationId": "rescheduleEvents",
        "x-openai-isConsequential": false,
        "summary": "Reschedule or edit calendar events.",
        "description": "Update event start dates, names, and descriptions. Align changes with user's schedule and preferences. Avoid conflicts with other tasks or events.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "events": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "event_id": {
                          "type": "string",
                          "description": "The ID of the event to reschedule or edit."
                        },
                        "start_date": {
                          "type": "string",
                          "format": "date-time",
                          "description": "The new start date and time for the event."
                        },
                        "name": {
                          "type": "string",
                          "description": "The new name for the event."
                        },
                        "description": {
                          "type": "string",
                          "description": "The new description for the event."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Events rescheduled successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Confirmation that the events were rescheduled successfully."
                    },
                    "event_ids": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "List of event IDs that were successfully rescheduled."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/complete_sessions": {
      "post": {
        "operationId": "completeSessions",
        "x-openai-isConsequential": false,
        "summary": "Mark completed sessions and update tasks.",
        "description": "Update event status to completed in Calendar and Firestore. Adjust task duration and ensure all related sessions are tracked. Confirm updates with user.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "event_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "List of event IDs to mark as completed."
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Events updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Confirmation that the events were updated successfully."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/cancel_sessions": {
      "post": {
        "operationId": "cancelSessions",
        "x-openai-isConsequential": true,
        "summary": "Cancel sessions and remove from Calendar.",
        "description": "Remove events from Calendar and mark tasks as canceled. Confirm cancellation with user and ensure no conflicts.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "event_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "List of event IDs to cancel."
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sessions canceled successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Confirmation that the sessions were canceled successfully."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/add_tasks": {
      "post": {
        "operationId": "addTasks",
        "x-openai-isConsequential": false,
        "summary": "Add new tasks with detailed info.",
        "description": "Create tasks with titles, descriptions, durations, and scheduling preferences. Server sets default due dates. Sync with user's calendar for scheduling. Ensure alignment with preferences.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tasks": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Task"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tasks added successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "task_ids": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Array of IDs for the newly created tasks."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/update_task": {
      "put": {
        "operationId": "updateTask",
        "x-openai-isConsequential": false,
        "summary": "Update task or subtask details.",
        "description": "Modify task or subtask properties like title, description, and duration. Ensure updates reflect in the user's schedule and preferences. Confirm changes with the user.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "item_id": {
                    "type": "string",
                    "description": "The ID of the task or subtask being updated."
                  },
                  "updates": {
                    "$ref": "#/components/schemas/Task"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Task successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Confirmation that the task was successfully updated."
                    },
                    "item_id": {
                      "type": "string",
                      "description": "The ID of the task that was updated."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/delete_tasks": {
      "post": {
        "operationId": "deleteTasks",
        "x-openai-isConsequential": true,
        "summary": "Delete specified tasks or subtasks.",
        "description": "Remove tasks or subtasks from Firestore and Google Calendar. Ensure tasks are no longer scheduled and confirm deletions with user.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "task_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Array of task IDs to be deleted."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tasks deleted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Confirmation that the tasks were successfully deleted."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/complete-tasks": {
      "post": {
        "operationId": "completeTasks",
        "x-openai-isConsequential": false,
        "summary": "Mark tasks or subtasks as completed.",
        "description": "Update status of tasks or subtasks to completed. Reflect changes in Firestore and Google Calendar. Ensure all related sessions are tracked.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "An array of task or subtask IDs to mark as completed."
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tasks or subtasks completed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Confirmation that the tasks or subtasks were successfully marked as completed."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/get-all-user-tasks": {
      "get": {
        "operationId": "getAllUserTasks",
        "x-openai-isConsequential": false,
        "summary": "Get all tasks associated with user",
        "description": "Retrieve all tasks for the user from Firestore. Organized and accessible overview of all user tasks. Use this to manage tasks effectively.",
        "responses": {
          "200": {
            "description": "List of tasks associated with the user",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Task"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/get-all-pending-tasks": {
      "get": {
        "operationId": "getAllPendingTasks",
        "x-openai-isConsequential": false,
        "summary": "Get all pending tasks for user.",
        "description": "Fetch all pending tasks. Use to manage and prioritize tasks needing attention. Ensure tasks are tracked and updated.",
        "responses": {
          "200": {
            "description": "List of pending tasks for user",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Task"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Task": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the task."
          },
          "title": {
            "type": "string",
            "description": "The title or name of the task."
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the task."
          },
          "status": {
            "type": "string",
            "description": "Current status of the task (e.g., pending, completed, archived)."
          },
          "category": {
            "type": "string",
            "description": "Category or classification of the task."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tags or keywords associated with the task."
          },
          "dueDate": {
            "type": "string",
            "format": "date-time",
            "description": "The deadline or due date for the task."
          },
          "priority": {
            "type": "integer",
            "description": "Priority level of the task, usually as a numerical value."
          },
          "recurring": {
            "type": "boolean",
            "description": "Indicates whether the task is recurring."
          },
          "repeat_frequency": {
            "type": "object",
            "properties": {
              "interval_type": {
                "type": "string",
                "description": "Type of interval for repeat. Possible values are daily, weekly, or monthly."
              },
              "interval_count": {
                "type": "integer",
                "description": "Number specifying how often the task repeats within the cycle. (ie. if a weekly task, how many days per week)"
              },
              "days_of_week": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Specific days of the week when the task repeats."
              }
            }
          },
          "subtasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Subtask"
            },
            "description": "List of associated subtasks."
          },
          "duration": {
            "type": "integer",
            "description": "Duration of the task in minutes."
          },
          "time_remaining": {
            "type": "integer",
            "description": "Time remaining to complete the task in minutes."
          },
          "scheduling_preferences": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of scheduling preferences for the task."
          }
        }
      },
      "Subtask": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The title or name of the subtask."
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the subtask."
          },
          "status": {
            "type": "string",
            "description": "Current status of the subtask (e.g., pending, completed, archived)."
          },
          "duration": {
            "type": "integer",
            "description": "Duration of the subtask in minutes."
          }
        },
        "required": [
          "title",
          "status",
          "duration"
        ],
        "description": "A subtask object, representing a smaller, manageable part of a larger task."
      },
      "Event": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the event."
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the event."
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "description": "The start time of the event."
          },
          "duration": {
            "type": "integer",
            "description": "The duration of the event in minutes."
          },
          "task_id": {
            "type": "string",
            "description": "The ID of the associated task or subtask."
          }
        }
      }
    }
  }
}