{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-to-do/json-schema/microsoft-to-do-microsoft-graph-todo-task-schema.json",
  "title": "microsoft.graph.todoTask",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-to-do-openapi.yml#/components/schemas/microsoft.graph.todoTask",
  "allOf": [
    {
      "$ref": "#/$defs/microsoft.graph.entity"
    },
    {
      "title": "todoTask",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "body": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.itemBody"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The task body that typically contains information about the task."
        },
        "bodyLastModifiedDateTime": {
          "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
          "type": "string",
          "description": "The date and time when the task body was last modified. By default, it is in UTC. You can provide a custom time zone in the request header. The property value uses ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2020 would look like this: '2020-01-01T00:00:00Z'.",
          "format": "date-time"
        },
        "categories": {
          "type": "array",
          "items": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": "The categories associated with the task. Each category corresponds to the displayName property of an outlookCategory that the user has defined."
        },
        "completedDateTime": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.dateTimeTimeZone"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The date and time in the specified time zone that the task was finished."
        },
        "createdDateTime": {
          "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
          "type": "string",
          "description": "The date and time when the task was created. By default, it is in UTC. You can provide a custom time zone in the request header. The property value uses ISO 8601 format. For example, midnight UTC on Jan 1, 2020 would look like this: '2020-01-01T00:00:00Z'.",
          "format": "date-time"
        },
        "dueDateTime": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.dateTimeTimeZone"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The date and time in the specified time zone that the task is to be finished."
        },
        "hasAttachments": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Indicates whether the task has attachments."
        },
        "importance": {
          "$ref": "#/$defs/microsoft.graph.importance"
        },
        "isReminderOn": {
          "type": "boolean",
          "description": "Set to true if an alert is set to remind the user of the task."
        },
        "lastModifiedDateTime": {
          "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
          "type": "string",
          "description": "The date and time when the task was last modified. By default, it is in UTC. You can provide a custom time zone in the request header. The property value uses ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2020 would look like this: '2020-01-01T00:00:00Z'.",
          "format": "date-time"
        },
        "recurrence": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.patternedRecurrence"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The recurrence pattern for the task."
        },
        "reminderDateTime": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.dateTimeTimeZone"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The date and time in the specified time zone for a reminder alert of the task to occur."
        },
        "startDateTime": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.dateTimeTimeZone"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The date and time in the specified time zone at which the task is scheduled to start."
        },
        "status": {
          "$ref": "#/$defs/microsoft.graph.taskStatus"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "description": "A brief description of the task."
        },
        "attachments": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.attachmentBase"
          },
          "description": "A collection of file attachments for the task.",
          "x-ms-navigationProperty": true
        },
        "attachmentSessions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.attachmentSession"
          },
          "x-ms-navigationProperty": true
        },
        "checklistItems": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.checklistItem"
          },
          "description": "A collection of checklistItems linked to a task.",
          "x-ms-navigationProperty": true
        },
        "extensions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.extension"
          },
          "description": "The collection of open extensions defined for the task. Nullable.",
          "x-ms-navigationProperty": true
        },
        "linkedResources": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.linkedResource"
          },
          "description": "A collection of resources linked to the task.",
          "x-ms-navigationProperty": true
        },
        "singleValueExtendedProperties": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.singleValueExtendedProperty"
          },
          "description": "A collection of custom fields linked to the task.",
          "x-ms-navigationProperty": true
        },
        "@odata.type": {
          "type": "string"
        }
      }
    }
  ],
  "x-ms-discriminator-value": "#microsoft.graph.todoTask",
  "$defs": {
    "microsoft.graph.attachmentBase": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "attachmentBase",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "contentType": {
              "type": [
                "string",
                "null"
              ],
              "description": "The MIME type."
            },
            "lastModifiedDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": [
                "string",
                "null"
              ],
              "description": "The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.",
              "format": "date-time"
            },
            "name": {
              "type": [
                "string",
                "null"
              ],
              "description": "The display name of the attachment. This doesn't need to be the actual file name."
            },
            "size": {
              "maximum": 2147483647,
              "minimum": -2147483648,
              "type": "number",
              "description": "The length of the attachment in bytes.",
              "format": "int32"
            },
            "@odata.type": {
              "type": "string"
            }
          }
        }
      ]
    },
    "microsoft.graph.attachmentSession": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "attachmentSession",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "content": {
              "type": [
                "string",
                "null"
              ],
              "description": "The content streams that are uploaded.",
              "format": "base64url"
            },
            "expirationDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": [
                "string",
                "null"
              ],
              "description": "The date and time in UTC when the upload session will expire. The complete file must be uploaded before this expiration time is reached.",
              "format": "date-time"
            },
            "nextExpectedRanges": {
              "type": "array",
              "items": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": "Indicates a single value {start} that represents the location in the file where the next upload should begin."
            },
            "@odata.type": {
              "type": "string"
            }
          }
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.attachmentSession"
    },
    "microsoft.graph.bodyType": {
      "title": "bodyType",
      "enum": [
        "text",
        "html"
      ],
      "type": "string"
    },
    "microsoft.graph.checklistItem": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "checklistItem",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "checkedDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": [
                "string",
                "null"
              ],
              "description": "The date and time when the checklistItem was finished.",
              "format": "date-time"
            },
            "createdDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": "string",
              "description": "The date and time when the checklistItem was created.",
              "format": "date-time"
            },
            "displayName": {
              "type": [
                "string",
                "null"
              ],
              "description": "Indicates the title of the checklistItem."
            },
            "isChecked": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "State that indicates whether the item is checked off or not."
            },
            "@odata.type": {
              "type": "string"
            }
          }
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.checklistItem"
    },
    "microsoft.graph.dateTimeTimeZone": {
      "title": "dateTimeTimeZone",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "dateTime": {
          "type": "string",
          "description": "A single point of time in a combined date and time representation ({date}T{time}; for example, 2017-08-29T04:00:00.0000000)."
        },
        "timeZone": {
          "type": [
            "string",
            "null"
          ],
          "description": "Represents a time zone, for example, 'Pacific Standard Time'. See below for more possible values."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.dayOfWeek": {
      "title": "dayOfWeek",
      "enum": [
        "sunday",
        "monday",
        "tuesday",
        "wednesday",
        "thursday",
        "friday",
        "saturday"
      ],
      "type": "string"
    },
    "microsoft.graph.entity": {
      "title": "entity",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The unique identifier for an entity. Read-only."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.extension": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "extension",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "@odata.type": {
              "type": "string"
            }
          }
        }
      ]
    },
    "microsoft.graph.importance": {
      "title": "importance",
      "enum": [
        "low",
        "normal",
        "high"
      ],
      "type": "string"
    },
    "microsoft.graph.itemBody": {
      "title": "itemBody",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "content": {
          "type": [
            "string",
            "null"
          ],
          "description": "The content of the item."
        },
        "contentType": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.bodyType"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The type of the content. Possible values are text and html."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.linkedResource": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "linkedResource",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "applicationName": {
              "type": [
                "string",
                "null"
              ],
              "description": "The app name of the source that sends the linkedResource."
            },
            "displayName": {
              "type": [
                "string",
                "null"
              ],
              "description": "The title of the linkedResource."
            },
            "externalId": {
              "type": [
                "string",
                "null"
              ],
              "description": "ID of the object that is associated with this task on the third-party/partner system."
            },
            "webUrl": {
              "type": [
                "string",
                "null"
              ],
              "description": "Deep link to the linkedResource."
            },
            "@odata.type": {
              "type": "string"
            }
          }
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.linkedResource"
    },
    "microsoft.graph.patternedRecurrence": {
      "title": "patternedRecurrence",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "pattern": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.recurrencePattern"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The frequency of an event.  For access reviews: Do not specify this property for a one-time access review.  Only interval, dayOfMonth, and type (weekly, absoluteMonthly) properties of recurrencePattern are supported."
        },
        "range": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.recurrenceRange"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The duration of an event."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.recurrencePattern": {
      "title": "recurrencePattern",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "dayOfMonth": {
          "maximum": 2147483647,
          "minimum": -2147483648,
          "type": "number",
          "description": "The day of the month on which the event occurs. Required if type is absoluteMonthly or absoluteYearly.",
          "format": "int32"
        },
        "daysOfWeek": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/microsoft.graph.dayOfWeek"
              },
              {
                "type": [
                  "object",
                  "null"
                ]
              }
            ]
          },
          "description": "A collection of the days of the week on which the event occurs. The possible values are: sunday, monday, tuesday, wednesday, thursday, friday, saturday. If type is relativeMonthly or relativeYearly, and daysOfWeek specifies more than one day, the event falls on the first day that satisfies the pattern.  Required if type is weekly, relativeMonthly, or relativeYearly."
        },
        "firstDayOfWeek": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.dayOfWeek"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The first day of the week. The possible values are: sunday, monday, tuesday, wednesday, thursday, friday, saturday. Default is sunday. Required if type is weekly."
        },
        "index": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.weekIndex"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "Specifies on which instance of the allowed days specified in daysOfWeek the event occurs, counted from the first instance in the month. The possible values are: first, second, third, fourth, last. Default is first. Optional and used if type is relativeMonthly or relativeYearly."
        },
        "interval": {
          "maximum": 2147483647,
          "minimum": -2147483648,
          "type": "number",
          "description": "The number of units between occurrences, where units can be in days, weeks, months, or years, depending on the type. Required.",
          "format": "int32"
        },
        "month": {
          "maximum": 2147483647,
          "minimum": -2147483648,
          "type": "number",
          "description": "The month in which the event occurs.  This is a number from 1 to 12.",
          "format": "int32"
        },
        "type": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.recurrencePatternType"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The recurrence pattern type: daily, weekly, absoluteMonthly, relativeMonthly, absoluteYearly, relativeYearly. Required. For more information, see values of type property."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.recurrencePatternType": {
      "title": "recurrencePatternType",
      "enum": [
        "daily",
        "weekly",
        "absoluteMonthly",
        "relativeMonthly",
        "absoluteYearly",
        "relativeYearly"
      ],
      "type": "string"
    },
    "microsoft.graph.recurrenceRange": {
      "title": "recurrenceRange",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "endDate": {
          "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$",
          "type": [
            "string",
            "null"
          ],
          "description": "The date to stop applying the recurrence pattern. Depending on the recurrence pattern of the event, the last occurrence of the meeting may not be this date. Required if type is endDate.",
          "format": "date"
        },
        "numberOfOccurrences": {
          "maximum": 2147483647,
          "minimum": -2147483648,
          "type": "number",
          "description": "The number of times to repeat the event. Required and must be positive if type is numbered.",
          "format": "int32"
        },
        "recurrenceTimeZone": {
          "type": [
            "string",
            "null"
          ],
          "description": "Time zone for the startDate and endDate properties. Optional. If not specified, the time zone of the event is used."
        },
        "startDate": {
          "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$",
          "type": [
            "string",
            "null"
          ],
          "description": "The date to start applying the recurrence pattern. The first occurrence of the meeting may be this date or later, depending on the recurrence pattern of the event. Must be the same value as the start property of the recurring event. Required.",
          "format": "date"
        },
        "type": {
          "anyOf": [
            {
              "$ref": "#/$defs/microsoft.graph.recurrenceRangeType"
            },
            {
              "type": [
                "object",
                "null"
              ]
            }
          ],
          "description": "The recurrence range. The possible values are: endDate, noEnd, numbered. Required."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.recurrenceRangeType": {
      "title": "recurrenceRangeType",
      "enum": [
        "endDate",
        "noEnd",
        "numbered"
      ],
      "type": "string"
    },
    "microsoft.graph.singleValueExtendedProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "singleValueExtendedProperty",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "value": {
              "type": [
                "string",
                "null"
              ],
              "description": "The value of the property."
            },
            "@odata.type": {
              "type": "string"
            }
          }
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.singleValueExtendedProperty"
    },
    "microsoft.graph.taskStatus": {
      "title": "taskStatus",
      "enum": [
        "notStarted",
        "inProgress",
        "completed",
        "waitingOnOthers",
        "deferred"
      ],
      "type": "string"
    },
    "microsoft.graph.weekIndex": {
      "title": "weekIndex",
      "enum": [
        "first",
        "second",
        "third",
        "fourth",
        "last"
      ],
      "type": "string"
    }
  }
}