ECI Office Integration API
Microsoft 365 integration for ECI products: drive files, mail and calendar for the signed-in user, with nextPageToken cursor paging.
Microsoft 365 integration for ECI products: drive files, mail and calendar for the signed-in user, with nextPageToken cursor paging.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/eci-solutions-office"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
{
"openapi": "3.0.1",
"info": {
"title": "Office Integration",
"description": "This service provides APIs to enable building a single integration\nto access Drive, Email, and Calendar features in different productivity suites.\n\nThis service currently only supports Microsoft 365, but may support other \nservices such as Google Workspace in the future.\n\n## Microsoft 365 Features\n - Access to files in a connected user's OneDrive, SharePoint and Teams.\n - Access to read & send email in a connected user's Outlook account.\n - Access to calendar events in a connected user's Outlook calendar.\n\n## Connection Options\nCredentials to this service can be obtained using the [Integration Engine Self Service Connection flow](https://dev.azure.com/ECISpecialProject/MFG-Integrations/_wiki/wikis/MFG-Integrations.wiki/92/Integration-Connection-Flow).\n\nCurrently the connection process supports Microsoft 365 OAuth2 Authorization Code flow, meaning each end user will\nbe authorizing and connecting their individual user accounts. Each credential issued is associated\nwith a single Microsoft 365 user.\n\nIn the future, this connection will also support OAuth2 Client Credentials for Service Principal authentication.\n\n## Authentication\n\nYou can authenticate with this API using an JWT Bearer token in an HTTP header as shown below:\n\n```Authorization: Bearer <token>```\n\n## Service Information \n\nBuild Version: `1.2.6+79ad6ecb58`",
"version": "v1"
},
"paths": {
"/api/v1/drives": {
"get": {
"tags": [
"Drive"
],
"summary": "Get drives",
"description": "Gets a list of drives available from the backing storage provider.\r\n- For Microsoft 365, returns a list of all OneDrive, Sharepoint, and Team Site drives.",
"operationId": "GetDrives",
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/GetDrivesResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetDrivesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/GetDrivesResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/api/v1/drives/{id}/items": {
"get": {
"tags": [
"Drive"
],
"summary": "Get drive items",
"description": "Gets a list of items in the drive, optionally filtered by the search criteria if provided.\r\n- For Microsoft 365, returns a list of items in the selected drive.",
"operationId": "GetDriveItems",
"parameters": [
{
"name": "id",
"in": "path",
"description": "Drive id",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "search",
"in": "query",
"description": "Search query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/DriveItemResponseListResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveItemResponseListResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/DriveItemResponseListResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/api/v1/me/calendar/events": {
"get": {
"tags": [
"Me"
],
"summary": "Get calendar events.",
"description": "Gets calendar events from the connected user's personal calendar, optionally filtered by the start and end date.\r\n- For Microsoft 365, gets events from the connected user’s Outlook Calendar.",
"operationId": "GetCalendarEvents",
"parameters": [
{
"name": "start_date",
"in": "query",
"description": "The start date of the events to retrieve",
"schema": {
"type": "string"
}
},
{
"name": "end_date",
"in": "query",
"description": "The end date of the events to retrieve",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/CalendarEventResponseListResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEventResponseListResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEventResponseListResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
},
"post": {
"tags": [
"Me"
],
"summary": "Create a calendar event.",
"description": "Creates a new calendar event in the connected user's personal calendar.\r\n- For Microsoft 365, creates a new event in the connected user’s Outlook Calendar.",
"operationId": "CreateCalendarEvent",
"requestBody": {
"description": "The request containing the details of the calendar event to be created.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateCalendarEventRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CreateCalendarEventRequest"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/CreateCalendarEventRequest"
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/CalendarEventResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEventResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEventResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/api/v1/me/calendar/events/{eventId}": {
"get": {
"tags": [
"Me"
],
"summary": "Get a calendar event by Id.",
"description": "Gets a calendar event from the connected user's personal calendar by its Id.\r\n- For Microsoft 365, gets an event from the connected user’s Outlook Calendar by Id.",
"operationId": "GetCalendarEventById",
"parameters": [
{
"name": "eventId",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/CalendarEventResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEventResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEventResponse"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
},
"patch": {
"tags": [
"Me"
],
"summary": "Updates a calendar event.",
"description": "Updates an existing calendar event in the connected user's personal calendar.\r\n- For Microsoft 365, updates an event in the connected user’s Outlook Calendar.",
"operationId": "UpdateCalendarEvent",
"parameters": [
{
"name": "eventId",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateCalendarEventRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UpdateCalendarEventRequest"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UpdateCalendarEventRequest"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/CalendarEventResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEventResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CalendarEventResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
},
"delete": {
"tags": [
"Me"
],
"summary": "Deletes a calendar event.",
"description": "Deletes a calendar event from the connected user's personal calendar.\r\n- For Microsoft 365, deletes an event from the connected user’s Outlook Calendar.",
"operationId": "DeleteCalendarEvent",
"parameters": [
{
"name": "eventId",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/api/v1/me/drive": {
"get": {
"tags": [
"Me"
],
"summary": "Get user's drive.",
"description": "Gets the user's personal drive.\r\n- For Microsoft 365, returns the user's personal drive.",
"operationId": "GetCurrentUserDrive",
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/DriveResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/DriveResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/api/v1/me/drive/items": {
"get": {
"tags": [
"Me"
],
"summary": "Get user's drive items.",
"description": "Gets a list of items in the user's drive, optionally filtered by the search criteria if provided.\r\n- For Microsoft 365, returns a list of items in the user's drive.",
"operationId": "GetCurrentUserDriveItems",
"parameters": [
{
"name": "search",
"in": "query",
"description": "Search query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/DriveItemResponseListResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveItemResponseListResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/DriveItemResponseListResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/api/v1/me/drive/recent": {
"get": {
"tags": [
"Me"
],
"summary": "Get recent files.",
"description": "Gets a list of files that the user has recently accessed, sorted by most recently accessed first.\r\n- For Microsoft 365, returns a list of recently accessed files.",
"operationId": "GetCurrentUserRecentFiles",
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/DriveItemResponseListResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/DriveItemResponseListResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/DriveItemResponseListResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/api/v1/me/mail": {
"post": {
"tags": [
"Me"
],
"summary": "Send Mail",
"description": "Sends an email message using the connected mail account.\r\n- For Microsoft 365, sends an email from the connected user's Outlook mailbox.",
"operationId": "SendMail",
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SendMailRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/SendMailRequest"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/SendMailRequest"
}
}
}
},
"responses": {
"202": {
"description": "Accepted"
},
"403": {
"description": "Forbidden",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/api/v1/me/mail/{folder}/messages": {
"get": {
"tags": [
"Me"
],
"summary": "Get mail messages.",
"description": "Gets a list of mail messages in the specified folder.\r\n\r\n- For Microsoft 365, returns a list of messages in the specified folder.\r\n\r\nIf no parameters are specified, the default is to return the most recent 25 messages in the folder, oldest to newest.",
"operationId": "GetMailFolderMessages",
"parameters": [
{
"name": "folder",
"in": "path",
"description": "The folder to get messages from",
"required": true,
"schema": {
"$ref": "#/components/schemas/Folder"
}
},
{
"name": "top",
"in": "query",
"description": "Limit the number of results. The default value is 25 if not specified.",
"schema": {
"type": "integer",
"format": "int32",
"default": 25
}
},
{
"name": "since",
"in": "query",
"description": "Limit the results to messages received since the given date. Default is last 3 days.",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "before",
"in": "query",
"description": "Limit the results to messages received before the given date.",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "next_page_token",
"in": "query",
"description": "The next page token from a previous request. If this value is provided, all other parameters will be ignored.",
"schema": {
"type": "string"
}
},
{
"name": "sort_order",
"in": "query",
"description": "Indicates the sort order for mail items. Default is oldest first.",
"schema": {
"$ref": "#/components/schemas/MailSortOrder"
}
},
{
"name": "response",
"in": "query",
"description": "",
"schema": {
"$ref": "#/components/schemas/MailResponseType"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/MailItemResponseListResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/MailItemResponseListResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/MailItemResponseListResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/api/v1/me/mail/{folder}/messages/{messageId}": {
"get": {
"tags": [
"Me"
],
"summary": "Get Message",
"description": "Gets a mail message by ID.\r\n\r\n- For Microsoft 365, returns a list of messages in the specified folder.\r\n\r\nIf no parameters are specified, the default is to return the most recent 25 messages in the folder.",
"operationId": "GetMailMessageById",
"parameters": [
{
"name": "folder",
"in": "path",
"description": "The folder to get messages from",
"required": true,
"schema": {
"$ref": "#/components/schemas/Folder"
}
},
{
"name": "messageId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/MailItemResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/MailItemResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/MailItemResponse"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/api/v1/me/mail/{folder}/messages/{messageId}/attachments": {
"get": {
"tags": [
"Me"
],
"summary": "Get Message Attachments",
"description": "Gets a list of attachments for a specific message.\r\n- For Microsoft 365, returns a list of attachments for a message.",
"operationId": "GetMessageAttachments",
"parameters": [
{
"name": "folder",
"in": "path",
"description": "The folder to get messages from",
"required": true,
"schema": {
"$ref": "#/components/schemas/Folder"
}
},
{
"name": "messageId",
"in": "path",
"description": "The message id to get attachments from",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/GetMailAttachmentModelListResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetMailAttachmentModelListResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/GetMailAttachmentModelListResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/api/v1/me/mail/{folder}/messages/{messageId}/attachments/{attachmentId}": {
"get": {
"tags": [
"Me"
],
"summary": "Get Message Attachment",
"description": "Gets a message attachment by ID\r\n- For Microsoft 365, gets the message attachment including it's contents.",
"operationId": "GetMessageAttachment",
"parameters": [
{
"name": "folder",
"in": "path",
"description": "The folder to get messages from",
"required": true,
"schema": {
"$ref": "#/components/schemas/Folder"
}
},
{
"name": "messageId",
"in": "
# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/eci-solutions/refs/heads/main/openapi/eci-solutions-office-openapi.json