{
  "meta": {
    "title": "Contio MeetingOS Partner API",
    "version": "1.8.1",
    "servers": [
      {
        "url": "https://api.contio.ai"
      }
    ],
    "flag_legend": {
      "missing_idempotency_key": "This mutating operation does not accept an Idempotency-Key header, so a blind retry after a network error may apply the change more than once. Re-read state before retrying if you are unsure the first call succeeded."
    }
  },
  "operations": {
    "addMeetingParticipant": {
      "id": "addMeetingParticipant",
      "method": "POST",
      "path": "/v1/partner/user/meetings/{id}/participants",
      "summary": "Add meeting participant",
      "description": "Adds a participant to a specific meeting. User must be an editor of the meeting.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "participant",
            "in": "body",
            "required": true,
            "description": "Participant details",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "email": {
              "type": "string",
              "example": "john.doe@example.com"
            },
            "name": {
              "type": "string",
              "example": "John Doe"
            },
            "role": {
              "type": "string",
              "enum": [
                "EDITOR",
                "VIEWER"
              ],
              "example": "EDITOR"
            }
          },
          "required": [
            "email",
            "name",
            "role"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Participant added successfully",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "description": "Timestamp when the participant was added",
                "example": "2023-01-01T00:00:00Z"
              },
              "email": {
                "type": "string",
                "description": "Participant's email address",
                "example": "john.doe@example.com"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the participant record",
                "example": "123e4567-e89b-12d3-a456-426614174004"
              },
              "is_attended": {
                "type": "boolean",
                "description": "Whether the participant attended the meeting",
                "example": true
              },
              "meeting_id": {
                "type": "string",
                "description": "ID of the meeting this participant belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "description": "Participant's display name",
                "example": "John Doe"
              },
              "role": {
                "type": "string",
                "description": "Participant's role in the meeting (EDITOR or VIEWER)",
                "example": "EDITOR"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the participant record was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "user_id": {
                "type": "string",
                "description": "ID of the user if they have a Contio account",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "User is not an editor of the meeting",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "Participant already exists",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "OAuth user operation (`meetings:write`) that adds a participant to a meeting\n(`id`). Returns the created participant. Adding the same person twice may\ncreate a duplicate unless deduplicated, so check existing participants\nfirst."
    },
    "addTemplateNextStep": {
      "id": "addTemplateNextStep",
      "method": "POST",
      "path": "/v1/partner/admin/templates/{templateId}/next-steps",
      "summary": "Add next step to template",
      "description": "Adds a next step to a template for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "description": "Template ID",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Add to template request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "autopilot": {
              "type": "boolean",
              "example": false
            },
            "next_step_id": {
              "type": "string",
              "example": "123e4567-e89b-12d3-a456-426614174000"
            },
            "sort_order": {
              "type": "integer",
              "example": 1
            }
          },
          "required": [
            "next_step_id"
          ]
        }
      },
      "responses": {
        "204": {
          "description": "Next step added to template successfully",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Template or next step not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key) that associates a next step with a template (`templateId`).\nReturns 204 on success. Adding the same next step again may create a\nduplicate association unless deduplicated, so check existing associations\nfirst. Accepts an optional `Idempotency-Key`."
    },
    "adminCreateToolkit": {
      "id": "adminCreateToolkit",
      "method": "POST",
      "path": "/v1/partner/admin/toolkits",
      "summary": "Create a toolkit",
      "description": "Creates a new toolkit for the authenticated partner app. Set dry_run=true to validate without creating.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Toolkit creation request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "description": {
              "type": "string",
              "example": "Complete sales workflow toolkit"
            },
            "dry_run": {
              "type": "boolean",
              "description": "DryRun validates the manifest without creating the toolkit"
            },
            "manifest": {
              "type": "object",
              "properties": {
                "action_buttons": {
                  "type": "array",
                  "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID references an existing action button (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-action-button"
                          },
                          "content_format": {
                            "type": "string",
                            "description": "Content format: rich_text, markdown, plain_text, html",
                            "enum": [
                              "rich_text",
                              "markdown",
                              "plain_text",
                              "html"
                            ],
                            "example": "plain_text"
                          },
                          "delivery_mechanism": {
                            "type": "string",
                            "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                            "enum": [
                              "clipboard",
                              "email",
                              "os_email_client",
                              "file_download",
                              "integration",
                              "webhook",
                              "redirect"
                            ],
                            "example": "webhook"
                          },
                          "file_format": {
                            "type": "string",
                            "description": "File format for file delivery",
                            "example": "pdf"
                          },
                          "icon_name": {
                            "type": "string",
                            "description": "Icon name from the vocabulary",
                            "example": "share"
                          },
                          "integration_type": {
                            "type": "string",
                            "description": "Integration type",
                            "example": "salesforce"
                          },
                          "is_default_for_next_step": {
                            "type": "boolean",
                            "description": "Whether this is the default action for a next step",
                            "example": false
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the action button",
                            "example": "Send to CRM"
                          },
                          "redirect_url": {
                            "type": "string",
                            "description": "Redirect URL for redirect delivery",
                            "example": "https://app.example.com/action"
                          },
                          "requires_connected_integration": {
                            "type": "boolean",
                            "description": "Whether this action requires a connected integration",
                            "example": false
                          },
                          "sort_order": {
                            "type": "integer",
                            "description": "Sort order for display",
                            "example": 1
                          },
                          "webhook_url": {
                            "type": "string",
                            "description": "Webhook URL for webhook delivery",
                            "example": "https://api.example.com/webhook"
                          }
                        },
                        "required": [
                          "content_format",
                          "delivery_mechanism",
                          "name"
                        ]
                      }
                    }
                  }
                },
                "next_steps": {
                  "type": "array",
                  "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "action_buttons": {
                        "type": "array",
                        "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                        "items": {
                          "type": "object",
                          "properties": {
                            "action_button": {
                              "type": "object",
                              "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "ID references an existing entity by its database ID",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "$ref": {
                                  "type": "string",
                                  "description": "Ref references an entity defined in the same manifest via its $id value",
                                  "example": "my-next-step"
                                }
                              }
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "SortOrder is the display order of the action button within the next step",
                              "example": 1
                            }
                          },
                          "required": [
                            "action_button"
                          ]
                        }
                      },
                      "default_action_button": {
                        "type": "object",
                        "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "ID references an existing entity by its database ID",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "$ref": {
                            "type": "string",
                            "description": "Ref references an entity defined in the same manifest via its $id value",
                            "example": "my-next-step"
                          }
                        }
                      },
                      "id": {
                        "type": "string",
                        "description": "ID references an existing next step (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-next-step"
                          },
                          "ai_prompt": {
                            "type": "string",
                            "description": "AI prompt for AI-type next steps",
                            "example": "Generate an invoice..."
                          },
                          "color": {
                            "type": "string",
                            "description": "Color for display",
                            "example": "#FF5733"
                          },
                          "description": {
                            "type": "string",
                            "description": "Description of the next step",
                            "example": "Generates an invoice from meeting notes"
                          },
                          "icon_name": {
                            "type": "string",
                            "description": "Icon name for display",
                            "example": "receipt"
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the next step",
                            "example": "Generate Invoice"
                          },
                          "redirect_url": {
                            "type": "string",
                            "description": "Redirect URL for redirect-type next steps",
                            "example": "https://partner.example.com/invoice"
                          },
                          "sort_order": {
                            "type": "integer",
                            "description": "Sort order for display",
                            "example": 1
                          },
                          "type": {
                            "type": "string",
                            "description": "Type of next step: \"ai\" or \"redirect\"",
                            "enum": [
                              "ai",
                              "redirect"
                            ],
                            "example": "ai"
                          }
                        },
                        "required": [
                          "name",
                          "type"
                        ]
                      }
                    }
                  }
                },
                "shortcuts": {
                  "type": "array",
                  "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-shortcut"
                          },
                          "color": {
                            "type": "string",
                            "description": "Color for display",
                            "example": "#4F46E5"
                          },
                          "description": {
                            "type": "string",
                            "description": "Description of the shortcut",
                            "example": "Generates a concise meeting summary"
                          },
                          "icon_name": {
                            "type": "string",
                            "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                            "example": "faLightbulb"
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the shortcut",
                            "example": "Summarize Meeting"
                          },
                          "prompt": {
                            "type": "string",
                            "description": "AI prompt template",
                            "example": "Summarize the key points discussed in this meeting."
                          },
                          "surfaces": {
                            "type": "array",
                            "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                            "items": {
                              "type": "object",
                              "properties": {
                                "position": {
                                  "type": "integer",
                                  "description": "Position on the surface (1-10)",
                                  "example": 1
                                },
                                "surface": {
                                  "type": "string",
                                  "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                  "example": "HOME"
                                }
                              },
                              "required": [
                                "position",
                                "surface"
                              ]
                            }
                          }
                        },
                        "required": [
                          "name",
                          "prompt"
                        ]
                      }
                    }
                  }
                },
                "templates": {
                  "type": "array",
                  "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID references an existing template (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "next_steps": {
                        "type": "array",
                        "description": "NextSteps defines the next steps to attach to this template with junction fields",
                        "items": {
                          "type": "object",
                          "properties": {
                            "autopilot": {
                              "type": "boolean",
                              "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                              "example": false
                            },
                            "next_step": {
                              "type": "object",
                              "description": "NextStep is the reference to the next step entity ($ref or $id)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "ID references an existing entity by its database ID",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "$ref": {
                                  "type": "string",
                                  "description": "Ref references an entity defined in the same manifest via its $id value",
                                  "example": "my-next-step"
                                }
                              }
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "SortOrder is the display order of the next step within the template",
                              "example": 1
                            }
                          },
                          "required": [
                            "next_step"
                          ]
                        }
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-template"
                          },
                          "agenda_items": {
                            "type": "array",
                            "description": "AgendaItems defines the template's agenda items",
                            "items": {
                              "type": "object",
                              "properties": {
                                "content": {
                                  "type": "string",
                                  "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description is an optional short description/subtitle",
                                  "example": "Review current quarter pipeline status"
                                },
                                "item_type": {
                                  "type": "string",
                                  "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                  "example": "DISCUSSION"
                                },
                                "restricted_to_leads": {
                                  "type": "boolean",
                                  "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                  "example": false
                                },
                                "sequence": {
                                  "type": "string",
                                  "description": "Sequence controls the display order",
                                  "example": "1"
                                },
                                "time_allocation_minutes": {
                                  "type": "number",
                                  "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                  "example": 15
                                },
                                "title": {
                                  "type": "string",
                                  "description": "Title is the agenda item's title",
                                  "example": "Pipeline Review"
                                }
                              },
                              "required": [
                                "item_type",
                                "title"
                              ]
                            }
                          },
                          "backing_meeting_id": {
                            "type": "string",
                            "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "description": {
                            "type": "string",
                            "description": "Description of the template",
                            "example": "Template for sales meetings"
                          },
                          "detail_level": {
                            "type": "string",
                            "description": "DetailLevel controls the granularity of meeting notes",
                            "enum": [
                              "BULLET_POINTS",
                              "STANDARD",
                              "VERBATIM"
                            ],
                            "example": "STANDARD"
                          },
                          "meeting_duration_seconds": {
                            "type": "integer",
                            "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                            "example": 3600
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the template",
                            "example": "Sales Meeting Template"
                          },
                          "participants": {
                            "type": "array",
                            "description": "Participants defines the template's default participants",
                            "items": {
                              "type": "object",
                              "properties": {
                                "email": {
                                  "type": "string",
                                  "description": "Email is the participant's email address",
                                  "example": "sarah@acme.com"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name is the participant's display name",
                                  "example": "Sarah Chen"
                                },
                                "role": {
                                  "type": "string",
                                  "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                  "enum": [
                                    "EDITOR",
                                    "VIEWER"
                                  ],
                                  "example": "EDITOR"
                                }
                              },
                              "required": [
                                "email",
                                "name",
                                "role"
                              ]
                            }
                          },
                          "start_time_offset_seconds": {
                            "type": "integer",
                            "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                            "example": 36000
                          },
                          "title": {
                            "type": "string",
                            "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                            "example": "Weekly Sales Standup"
                          }
                        },
                        "required": [
                          "name"
                        ]
                      }
                    }
                  }
                },
                "toolkit_prompt": {
                  "type": "string",
                  "description": "Default AI persona/behavioral instructions for the toolkit"
                }
              }
            },
            "name": {
              "type": "string",
              "example": "Sales Pipeline Toolkit"
            },
            "slug": {
              "type": "string",
              "example": "sales-pipeline"
            },
            "version": {
              "type": "string",
              "example": "1.0.0"
            }
          },
          "required": [
            "manifest",
            "name",
            "slug",
            "version"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "Dry-run validation result",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "conflicts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "conflict_type": {
                      "type": "string",
                      "example": "name_collision"
                    },
                    "entity_name": {
                      "type": "string",
                      "example": "Generate Invoice"
                    },
                    "entity_type": {
                      "type": "string",
                      "example": "next_step"
                    },
                    "existing_entity_id": {
                      "type": "string",
                      "example": "abc-123"
                    },
                    "message": {
                      "type": "string",
                      "description": "separated due to formatting for long example",
                      "example": "A next step with this name already exists for this partner app"
                    },
                    "resolution": {
                      "type": "string",
                      "example": "informational"
                    }
                  }
                }
              },
              "summary": {
                "type": "object",
                "properties": {
                  "action_buttons": {
                    "type": "integer"
                  },
                  "next_steps": {
                    "type": "integer"
                  },
                  "shortcuts": {
                    "type": "integer"
                  },
                  "templates": {
                    "type": "integer"
                  }
                }
              },
              "toolkit": {
                "type": "object",
                "properties": {
                  "auto_install_on_new_workspaces": {
                    "type": "boolean",
                    "example": true
                  },
                  "auto_propagate": {
                    "type": "boolean",
                    "example": true
                  },
                  "created_at": {
                    "type": "string",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "description": {
                    "type": "string",
                    "example": "Complete sales workflow toolkit"
                  },
                  "id": {
                    "type": "string",
                    "example": "123e4567-e89b-12d3-a456-426614174000"
                  },
                  "is_active": {
                    "type": "boolean",
                    "example": true
                  },
                  "manifest": {
                    "type": "object",
                    "properties": {
                      "action_buttons": {
                        "type": "array",
                        "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "ID references an existing action button (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-action-button"
                                },
                                "content_format": {
                                  "type": "string",
                                  "description": "Content format: rich_text, markdown, plain_text, html",
                                  "enum": [
                                    "rich_text",
                                    "markdown",
                                    "plain_text",
                                    "html"
                                  ],
                                  "example": "plain_text"
                                },
                                "delivery_mechanism": {
                                  "type": "string",
                                  "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                                  "enum": [
                                    "clipboard",
                                    "email",
                                    "os_email_client",
                                    "file_download",
                                    "integration",
                                    "webhook",
                                    "redirect"
                                  ],
                                  "example": "webhook"
                                },
                                "file_format": {
                                  "type": "string",
                                  "description": "File format for file delivery",
                                  "example": "pdf"
                                },
                                "icon_name": {
                                  "type": "string",
                                  "description": "Icon name from the vocabulary",
                                  "example": "share"
                                },
                                "integration_type": {
                                  "type": "string",
                                  "description": "Integration type",
                                  "example": "salesforce"
                                },
                                "is_default_for_next_step": {
                                  "type": "boolean",
                                  "description": "Whether this is the default action for a next step",
                                  "example": false
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the action button",
                                  "example": "Send to CRM"
                                },
                                "redirect_url": {
                                  "type": "string",
                                  "description": "Redirect URL for redirect delivery",
                                  "example": "https://app.example.com/action"
                                },
                                "requires_connected_integration": {
                                  "type": "boolean",
                                  "description": "Whether this action requires a connected integration",
                                  "example": false
                                },
                                "sort_order": {
                                  "type": "integer",
                                  "description": "Sort order for display",
                                  "example": 1
                                },
                                "webhook_url": {
                                  "type": "string",
                                  "description": "Webhook URL for webhook delivery",
                                  "example": "https://api.example.com/webhook"
                                }
                              },
                              "required": [
                                "content_format",
                                "delivery_mechanism",
                                "name"
                              ]
                            }
                          }
                        }
                      },
                      "next_steps": {
                        "type": "array",
                        "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "action_buttons": {
                              "type": "array",
                              "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "action_button": {
                                    "type": "object",
                                    "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                                    "properties": {
                                      "$id": {
                                        "type": "string",
                                        "description": "ID references an existing entity by its database ID",
                                        "example": "123e4567-e89b-12d3-a456-426614174000"
                                      },
                                      "$ref": {
                                        "type": "string",
                                        "description": "Ref references an entity defined in the same manifest via its $id value",
                                        "example": "my-next-step"
                                      }
                                    }
                                  },
                                  "sort_order": {
                                    "type": "integer",
                                    "description": "SortOrder is the display order of the action button within the next step",
                                    "example": 1
                                  }
                                },
                                "required": [
                                  "action_button"
                                ]
                              }
                            },
                            "default_action_button": {
                              "type": "object",
                              "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "ID references an existing entity by its database ID",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "$ref": {
                                  "type": "string",
                                  "description": "Ref references an entity defined in the same manifest via its $id value",
                                  "example": "my-next-step"
                                }
                              }
                            },
                            "id": {
                              "type": "string",
                              "description": "ID references an existing next step (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-next-step"
                                },
                                "ai_prompt": {
                                  "type": "string",
                                  "description": "AI prompt for AI-type next steps",
                                  "example": "Generate an invoice..."
                                },
                                "color": {
                                  "type": "string",
                                  "description": "Color for display",
                                  "example": "#FF5733"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description of the next step",
                                  "example": "Generates an invoice from meeting notes"
                                },
                                "icon_name": {
                                  "type": "string",
                                  "description": "Icon name for display",
                                  "example": "receipt"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the next step",
                                  "example": "Generate Invoice"
                                },
                                "redirect_url": {
                                  "type": "string",
                                  "description": "Redirect URL for redirect-type next steps",
                                  "example": "https://partner.example.com/invoice"
                                },
                                "sort_order": {
                                  "type": "integer",
                                  "description": "Sort order for display",
                                  "example": 1
                                },
                                "type": {
                                  "type": "string",
                                  "description": "Type of next step: \"ai\" or \"redirect\"",
                                  "enum": [
                                    "ai",
                                    "redirect"
                                  ],
                                  "example": "ai"
                                }
                              },
                              "required": [
                                "name",
                                "type"
                              ]
                            }
                          }
                        }
                      },
                      "shortcuts": {
                        "type": "array",
                        "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-shortcut"
                                },
                                "color": {
                                  "type": "string",
                                  "description": "Color for display",
                                  "example": "#4F46E5"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description of the shortcut",
                                  "example": "Generates a concise meeting summary"
                                },
                                "icon_name": {
                                  "type": "string",
                                  "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                                  "example": "faLightbulb"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the shortcut",
                                  "example": "Summarize Meeting"
                                },
                                "prompt": {
                                  "type": "string",
                                  "description": "AI prompt template",
                                  "example": "Summarize the key points discussed in this meeting."
                                },
                                "surfaces": {
                                  "type": "array",
                                  "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "position": {
                                        "type": "integer",
                                        "description": "Position on the surface (1-10)",
                                        "example": 1
                                      },
                                      "surface": {
                                        "type": "string",
                                        "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                        "example": "HOME"
                                      }
                                    },
                                    "required": [
                                      "position",
                                      "surface"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "name",
                                "prompt"
                              ]
                            }
                          }
                        }
                      },
                      "templates": {
                        "type": "array",
                        "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "ID references an existing template (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "next_steps": {
                              "type": "array",
                              "description": "NextSteps defines the next steps to attach to this template with junction fields",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "autopilot": {
                                    "type": "boolean",
                                    "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                                    "example": false
                                  },
                                  "next_step": {
                                    "type": "object",
                                    "description": "NextStep is the reference to the next step entity ($ref or $id)",
                                    "properties": {
                                      "$id": {
                                        "type": "string",
                                        "description": "ID references an existing entity by its database ID",
                                        "example": "123e4567-e89b-12d3-a456-426614174000"
                                      },
                                      "$ref": {
                                        "type": "string",
                                        "description": "Ref references an entity defined in the same manifest via its $id value",
                                        "example": "my-next-step"
                                      }
                                    }
                                  },
                                  "sort_order": {
                                    "type": "integer",
                                    "description": "SortOrder is the display order of the next step within the template",
                                    "example": 1
                                  }
                                },
                                "required": [
                                  "next_step"
                                ]
                              }
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-template"
                                },
                                "agenda_items": {
                                  "type": "array",
                                  "description": "AgendaItems defines the template's agenda items",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "content": {
                                        "type": "string",
                                        "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                      },
                                      "description": {
                                        "type": "string",
                                        "description": "Description is an optional short description/subtitle",
                                        "example": "Review current quarter pipeline status"
                                      },
                                      "item_type": {
                                        "type": "string",
                                        "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                        "example": "DISCUSSION"
                                      },
                                      "restricted_to_leads": {
                                        "type": "boolean",
                                        "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                        "example": false
                                      },
                                      "sequence": {
                                        "type": "string",
                                        "description": "Sequence controls the display order",
                                        "example": "1"
                                      },
                                      "time_allocation_minutes": {
                                        "type": "number",
                                        "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                        "example": 15
                                      },
                                      "title": {
                                        "type": "string",
                                        "description": "Title is the agenda item's title",
                                        "example": "Pipeline Review"
                                      }
                                    },
                                    "required": [
                                      "item_type",
                                      "title"
                                    ]
                                  }
                                },
                                "backing_meeting_id": {
                                  "type": "string",
                                  "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description of the template",
                                  "example": "Template for sales meetings"
                                },
                                "detail_level": {
                                  "type": "string",
                                  "description": "DetailLevel controls the granularity of meeting notes",
                                  "enum": [
                                    "BULLET_POINTS",
                                    "STANDARD",
                                    "VERBATIM"
                                  ],
                                  "example": "STANDARD"
                                },
                                "meeting_duration_seconds": {
                                  "type": "integer",
                                  "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                                  "example": 3600
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the template",
                                  "example": "Sales Meeting Template"
                                },
                                "participants": {
                                  "type": "array",
                                  "description": "Participants defines the template's default participants",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "email": {
                                        "type": "string",
                                        "description": "Email is the participant's email address",
                                        "example": "sarah@acme.com"
                                      },
                                      "name": {
                                        "type": "string",
                                        "description": "Name is the participant's display name",
                                        "example": "Sarah Chen"
                                      },
                                      "role": {
                                        "type": "string",
                                        "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                        "enum": [
                                          "EDITOR",
                                          "VIEWER"
                                        ],
                                        "example": "EDITOR"
                                      }
                                    },
                                    "required": [
                                      "email",
                                      "name",
                                      "role"
                                    ]
                                  }
                                },
                                "start_time_offset_seconds": {
                                  "type": "integer",
                                  "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                                  "example": 36000
                                },
                                "title": {
                                  "type": "string",
                                  "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                                  "example": "Weekly Sales Standup"
                                }
                              },
                              "required": [
                                "name"
                              ]
                            }
                          }
                        }
                      },
                      "toolkit_prompt": {
                        "type": "string",
                        "description": "Default AI persona/behavioral instructions for the toolkit"
                      }
                    }
                  },
                  "name": {
                    "type": "string",
                    "example": "Sales Pipeline Toolkit"
                  },
                  "ownership_type": {
                    "type": "string",
                    "example": "PARTNER"
                  },
                  "partner_app_id": {
                    "type": "string",
                    "example": "123e4567-e89b-12d3-a456-426614174001"
                  },
                  "slug": {
                    "type": "string",
                    "example": "sales-pipeline"
                  },
                  "updated_at": {
                    "type": "string",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "version": {
                    "type": "string",
                    "example": "1.0.0"
                  }
                }
              },
              "validation": {
                "type": "object",
                "properties": {
                  "errors": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "example": "MISSING_REQUIRED"
                        },
                        "message": {
                          "type": "string",
                          "example": "name is required"
                        },
                        "path": {
                          "type": "string",
                          "example": "next_steps[0]"
                        }
                      }
                    }
                  },
                  "valid": {
                    "type": "boolean"
                  },
                  "warnings": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "example": "MISSING_REQUIRED"
                        },
                        "message": {
                          "type": "string",
                          "example": "name is required"
                        },
                        "path": {
                          "type": "string",
                          "example": "next_steps[0]"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "201": {
          "description": "Toolkit created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "conflicts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "conflict_type": {
                      "type": "string",
                      "example": "name_collision"
                    },
                    "entity_name": {
                      "type": "string",
                      "example": "Generate Invoice"
                    },
                    "entity_type": {
                      "type": "string",
                      "example": "next_step"
                    },
                    "existing_entity_id": {
                      "type": "string",
                      "example": "abc-123"
                    },
                    "message": {
                      "type": "string",
                      "description": "separated due to formatting for long example",
                      "example": "A next step with this name already exists for this partner app"
                    },
                    "resolution": {
                      "type": "string",
                      "example": "informational"
                    }
                  }
                }
              },
              "summary": {
                "type": "object",
                "properties": {
                  "action_buttons": {
                    "type": "integer"
                  },
                  "next_steps": {
                    "type": "integer"
                  },
                  "shortcuts": {
                    "type": "integer"
                  },
                  "templates": {
                    "type": "integer"
                  }
                }
              },
              "toolkit": {
                "type": "object",
                "properties": {
                  "auto_install_on_new_workspaces": {
                    "type": "boolean",
                    "example": true
                  },
                  "auto_propagate": {
                    "type": "boolean",
                    "example": true
                  },
                  "created_at": {
                    "type": "string",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "description": {
                    "type": "string",
                    "example": "Complete sales workflow toolkit"
                  },
                  "id": {
                    "type": "string",
                    "example": "123e4567-e89b-12d3-a456-426614174000"
                  },
                  "is_active": {
                    "type": "boolean",
                    "example": true
                  },
                  "manifest": {
                    "type": "object",
                    "properties": {
                      "action_buttons": {
                        "type": "array",
                        "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "ID references an existing action button (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-action-button"
                                },
                                "content_format": {
                                  "type": "string",
                                  "description": "Content format: rich_text, markdown, plain_text, html",
                                  "enum": [
                                    "rich_text",
                                    "markdown",
                                    "plain_text",
                                    "html"
                                  ],
                                  "example": "plain_text"
                                },
                                "delivery_mechanism": {
                                  "type": "string",
                                  "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                                  "enum": [
                                    "clipboard",
                                    "email",
                                    "os_email_client",
                                    "file_download",
                                    "integration",
                                    "webhook",
                                    "redirect"
                                  ],
                                  "example": "webhook"
                                },
                                "file_format": {
                                  "type": "string",
                                  "description": "File format for file delivery",
                                  "example": "pdf"
                                },
                                "icon_name": {
                                  "type": "string",
                                  "description": "Icon name from the vocabulary",
                                  "example": "share"
                                },
                                "integration_type": {
                                  "type": "string",
                                  "description": "Integration type",
                                  "example": "salesforce"
                                },
                                "is_default_for_next_step": {
                                  "type": "boolean",
                                  "description": "Whether this is the default action for a next step",
                                  "example": false
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the action button",
                                  "example": "Send to CRM"
                                },
                                "redirect_url": {
                                  "type": "string",
                                  "description": "Redirect URL for redirect delivery",
                                  "example": "https://app.example.com/action"
                                },
                                "requires_connected_integration": {
                                  "type": "boolean",
                                  "description": "Whether this action requires a connected integration",
                                  "example": false
                                },
                                "sort_order": {
                                  "type": "integer",
                                  "description": "Sort order for display",
                                  "example": 1
                                },
                                "webhook_url": {
                                  "type": "string",
                                  "description": "Webhook URL for webhook delivery",
                                  "example": "https://api.example.com/webhook"
                                }
                              },
                              "required": [
                                "content_format",
                                "delivery_mechanism",
                                "name"
                              ]
                            }
                          }
                        }
                      },
                      "next_steps": {
                        "type": "array",
                        "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "action_buttons": {
                              "type": "array",
                              "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "action_button": {
                                    "type": "object",
                                    "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                                    "properties": {
                                      "$id": {
                                        "type": "string",
                                        "description": "ID references an existing entity by its database ID",
                                        "example": "123e4567-e89b-12d3-a456-426614174000"
                                      },
                                      "$ref": {
                                        "type": "string",
                                        "description": "Ref references an entity defined in the same manifest via its $id value",
                                        "example": "my-next-step"
                                      }
                                    }
                                  },
                                  "sort_order": {
                                    "type": "integer",
                                    "description": "SortOrder is the display order of the action button within the next step",
                                    "example": 1
                                  }
                                },
                                "required": [
                                  "action_button"
                                ]
                              }
                            },
                            "default_action_button": {
                              "type": "object",
                              "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "ID references an existing entity by its database ID",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "$ref": {
                                  "type": "string",
                                  "description": "Ref references an entity defined in the same manifest via its $id value",
                                  "example": "my-next-step"
                                }
                              }
                            },
                            "id": {
                              "type": "string",
                              "description": "ID references an existing next step (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-next-step"
                                },
                                "ai_prompt": {
                                  "type": "string",
                                  "description": "AI prompt for AI-type next steps",
                                  "example": "Generate an invoice..."
                                },
                                "color": {
                                  "type": "string",
                                  "description": "Color for display",
                                  "example": "#FF5733"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description of the next step",
                                  "example": "Generates an invoice from meeting notes"
                                },
                                "icon_name": {
                                  "type": "string",
                                  "description": "Icon name for display",
                                  "example": "receipt"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the next step",
                                  "example": "Generate Invoice"
                                },
                                "redirect_url": {
                                  "type": "string",
                                  "description": "Redirect URL for redirect-type next steps",
                                  "example": "https://partner.example.com/invoice"
                                },
                                "sort_order": {
                                  "type": "integer",
                                  "description": "Sort order for display",
                                  "example": 1
                                },
                                "type": {
                                  "type": "string",
                                  "description": "Type of next step: \"ai\" or \"redirect\"",
                                  "enum": [
                                    "ai",
                                    "redirect"
                                  ],
                                  "example": "ai"
                                }
                              },
                              "required": [
                                "name",
                                "type"
                              ]
                            }
                          }
                        }
                      },
                      "shortcuts": {
                        "type": "array",
                        "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-shortcut"
                                },
                                "color": {
                                  "type": "string",
                                  "description": "Color for display",
                                  "example": "#4F46E5"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description of the shortcut",
                                  "example": "Generates a concise meeting summary"
                                },
                                "icon_name": {
                                  "type": "string",
                                  "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                                  "example": "faLightbulb"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the shortcut",
                                  "example": "Summarize Meeting"
                                },
                                "prompt": {
                                  "type": "string",
                                  "description": "AI prompt template",
                                  "example": "Summarize the key points discussed in this meeting."
                                },
                                "surfaces": {
                                  "type": "array",
                                  "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "position": {
                                        "type": "integer",
                                        "description": "Position on the surface (1-10)",
                                        "example": 1
                                      },
                                      "surface": {
                                        "type": "string",
                                        "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                        "example": "HOME"
                                      }
                                    },
                                    "required": [
                                      "position",
                                      "surface"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "name",
                                "prompt"
                              ]
                            }
                          }
                        }
                      },
                      "templates": {
                        "type": "array",
                        "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "ID references an existing template (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "next_steps": {
                              "type": "array",
                              "description": "NextSteps defines the next steps to attach to this template with junction fields",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "autopilot": {
                                    "type": "boolean",
                                    "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                                    "example": false
                                  },
                                  "next_step": {
                                    "type": "object",
                                    "description": "NextStep is the reference to the next step entity ($ref or $id)",
                                    "properties": {
                                      "$id": {
                                        "type": "string",
                                        "description": "ID references an existing entity by its database ID",
                                        "example": "123e4567-e89b-12d3-a456-426614174000"
                                      },
                                      "$ref": {
                                        "type": "string",
                                        "description": "Ref references an entity defined in the same manifest via its $id value",
                                        "example": "my-next-step"
                                      }
                                    }
                                  },
                                  "sort_order": {
                                    "type": "integer",
                                    "description": "SortOrder is the display order of the next step within the template",
                                    "example": 1
                                  }
                                },
                                "required": [
                                  "next_step"
                                ]
                              }
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-template"
                                },
                                "agenda_items": {
                                  "type": "array",
                                  "description": "AgendaItems defines the template's agenda items",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "content": {
                                        "type": "string",
                                        "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                      },
                                      "description": {
                                        "type": "string",
                                        "description": "Description is an optional short description/subtitle",
                                        "example": "Review current quarter pipeline status"
                                      },
                                      "item_type": {
                                        "type": "string",
                                        "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                        "example": "DISCUSSION"
                                      },
                                      "restricted_to_leads": {
                                        "type": "boolean",
                                        "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                        "example": false
                                      },
                                      "sequence": {
                                        "type": "string",
                                        "description": "Sequence controls the display order",
                                        "example": "1"
                                      },
                                      "time_allocation_minutes": {
                                        "type": "number",
                                        "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                        "example": 15
                                      },
                                      "title": {
                                        "type": "string",
                                        "description": "Title is the agenda item's title",
                                        "example": "Pipeline Review"
                                      }
                                    },
                                    "required": [
                                      "item_type",
                                      "title"
                                    ]
                                  }
                                },
                                "backing_meeting_id": {
                                  "type": "string",
                                  "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description of the template",
                                  "example": "Template for sales meetings"
                                },
                                "detail_level": {
                                  "type": "string",
                                  "description": "DetailLevel controls the granularity of meeting notes",
                                  "enum": [
                                    "BULLET_POINTS",
                                    "STANDARD",
                                    "VERBATIM"
                                  ],
                                  "example": "STANDARD"
                                },
                                "meeting_duration_seconds": {
                                  "type": "integer",
                                  "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                                  "example": 3600
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the template",
                                  "example": "Sales Meeting Template"
                                },
                                "participants": {
                                  "type": "array",
                                  "description": "Participants defines the template's default participants",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "email": {
                                        "type": "string",
                                        "description": "Email is the participant's email address",
                                        "example": "sarah@acme.com"
                                      },
                                      "name": {
                                        "type": "string",
                                        "description": "Name is the participant's display name",
                                        "example": "Sarah Chen"
                                      },
                                      "role": {
                                        "type": "string",
                                        "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                        "enum": [
                                          "EDITOR",
                                          "VIEWER"
                                        ],
                                        "example": "EDITOR"
                                      }
                                    },
                                    "required": [
                                      "email",
                                      "name",
                                      "role"
                                    ]
                                  }
                                },
                                "start_time_offset_seconds": {
                                  "type": "integer",
                                  "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                                  "example": 36000
                                },
                                "title": {
                                  "type": "string",
                                  "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                                  "example": "Weekly Sales Standup"
                                }
                              },
                              "required": [
                                "name"
                              ]
                            }
                          }
                        }
                      },
                      "toolkit_prompt": {
                        "type": "string",
                        "description": "Default AI persona/behavioral instructions for the toolkit"
                      }
                    }
                  },
                  "name": {
                    "type": "string",
                    "example": "Sales Pipeline Toolkit"
                  },
                  "ownership_type": {
                    "type": "string",
                    "example": "PARTNER"
                  },
                  "partner_app_id": {
                    "type": "string",
                    "example": "123e4567-e89b-12d3-a456-426614174001"
                  },
                  "slug": {
                    "type": "string",
                    "example": "sales-pipeline"
                  },
                  "updated_at": {
                    "type": "string",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "version": {
                    "type": "string",
                    "example": "1.0.0"
                  }
                }
              },
              "validation": {
                "type": "object",
                "properties": {
                  "errors": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "example": "MISSING_REQUIRED"
                        },
                        "message": {
                          "type": "string",
                          "example": "name is required"
                        },
                        "path": {
                          "type": "string",
                          "example": "next_steps[0]"
                        }
                      }
                    }
                  },
                  "valid": {
                    "type": "boolean"
                  },
                  "warnings": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "example": "MISSING_REQUIRED"
                        },
                        "message": {
                          "type": "string",
                          "example": "name is required"
                        },
                        "path": {
                          "type": "string",
                          "example": "next_steps[0]"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key) creation of a toolkit for the partner app. Set\n`dry_run=true` to validate the request without creating anything (returns\n200), otherwise it creates and returns 201. Not idempotent beyond the\noptional `Idempotency-Key`. A created toolkit still needs a published\nversion before it can be installed."
    },
    "adminCreateToolkitVersion": {
      "id": "adminCreateToolkitVersion",
      "method": "POST",
      "path": "/v1/partner/admin/toolkits/{toolkitId}/versions",
      "summary": "Create a toolkit version",
      "description": "Creates a new draft version for a toolkit owned by the authenticated partner app. Set dry_run=true to validate without creating.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Version creation request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "changelog": {
              "type": "string",
              "description": "Changelog describes the changes in this version",
              "example": "Added new action button for CRM sync"
            },
            "dry_run": {
              "type": "boolean",
              "description": "DryRun validates the manifest without creating the version"
            },
            "manifest": {
              "type": "object",
              "description": "Manifest is the toolkit manifest for this version",
              "properties": {
                "action_buttons": {
                  "type": "array",
                  "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID references an existing action button (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-action-button"
                          },
                          "content_format": {
                            "type": "string",
                            "description": "Content format: rich_text, markdown, plain_text, html",
                            "enum": [
                              "rich_text",
                              "markdown",
                              "plain_text",
                              "html"
                            ],
                            "example": "plain_text"
                          },
                          "delivery_mechanism": {
                            "type": "string",
                            "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                            "enum": [
                              "clipboard",
                              "email",
                              "os_email_client",
                              "file_download",
                              "integration",
                              "webhook",
                              "redirect"
                            ],
                            "example": "webhook"
                          },
                          "file_format": {
                            "type": "string",
                            "description": "File format for file delivery",
                            "example": "pdf"
                          },
                          "icon_name": {
                            "type": "string",
                            "description": "Icon name from the vocabulary",
                            "example": "share"
                          },
                          "integration_type": {
                            "type": "string",
                            "description": "Integration type",
                            "example": "salesforce"
                          },
                          "is_default_for_next_step": {
                            "type": "boolean",
                            "description": "Whether this is the default action for a next step",
                            "example": false
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the action button",
                            "example": "Send to CRM"
                          },
                          "redirect_url": {
                            "type": "string",
                            "description": "Redirect URL for redirect delivery",
                            "example": "https://app.example.com/action"
                          },
                          "requires_connected_integration": {
                            "type": "boolean",
                            "description": "Whether this action requires a connected integration",
                            "example": false
                          },
                          "sort_order": {
                            "type": "integer",
                            "description": "Sort order for display",
                            "example": 1
                          },
                          "webhook_url": {
                            "type": "string",
                            "description": "Webhook URL for webhook delivery",
                            "example": "https://api.example.com/webhook"
                          }
                        },
                        "required": [
                          "content_format",
                          "delivery_mechanism",
                          "name"
                        ]
                      }
                    }
                  }
                },
                "next_steps": {
                  "type": "array",
                  "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "action_buttons": {
                        "type": "array",
                        "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                        "items": {
                          "type": "object",
                          "properties": {
                            "action_button": {
                              "type": "object",
                              "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "ID references an existing entity by its database ID",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "$ref": {
                                  "type": "string",
                                  "description": "Ref references an entity defined in the same manifest via its $id value",
                                  "example": "my-next-step"
                                }
                              }
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "SortOrder is the display order of the action button within the next step",
                              "example": 1
                            }
                          },
                          "required": [
                            "action_button"
                          ]
                        }
                      },
                      "default_action_button": {
                        "type": "object",
                        "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "ID references an existing entity by its database ID",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "$ref": {
                            "type": "string",
                            "description": "Ref references an entity defined in the same manifest via its $id value",
                            "example": "my-next-step"
                          }
                        }
                      },
                      "id": {
                        "type": "string",
                        "description": "ID references an existing next step (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-next-step"
                          },
                          "ai_prompt": {
                            "type": "string",
                            "description": "AI prompt for AI-type next steps",
                            "example": "Generate an invoice..."
                          },
                          "color": {
                            "type": "string",
                            "description": "Color for display",
                            "example": "#FF5733"
                          },
                          "description": {
                            "type": "string",
                            "description": "Description of the next step",
                            "example": "Generates an invoice from meeting notes"
                          },
                          "icon_name": {
                            "type": "string",
                            "description": "Icon name for display",
                            "example": "receipt"
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the next step",
                            "example": "Generate Invoice"
                          },
                          "redirect_url": {
                            "type": "string",
                            "description": "Redirect URL for redirect-type next steps",
                            "example": "https://partner.example.com/invoice"
                          },
                          "sort_order": {
                            "type": "integer",
                            "description": "Sort order for display",
                            "example": 1
                          },
                          "type": {
                            "type": "string",
                            "description": "Type of next step: \"ai\" or \"redirect\"",
                            "enum": [
                              "ai",
                              "redirect"
                            ],
                            "example": "ai"
                          }
                        },
                        "required": [
                          "name",
                          "type"
                        ]
                      }
                    }
                  }
                },
                "shortcuts": {
                  "type": "array",
                  "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-shortcut"
                          },
                          "color": {
                            "type": "string",
                            "description": "Color for display",
                            "example": "#4F46E5"
                          },
                          "description": {
                            "type": "string",
                            "description": "Description of the shortcut",
                            "example": "Generates a concise meeting summary"
                          },
                          "icon_name": {
                            "type": "string",
                            "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                            "example": "faLightbulb"
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the shortcut",
                            "example": "Summarize Meeting"
                          },
                          "prompt": {
                            "type": "string",
                            "description": "AI prompt template",
                            "example": "Summarize the key points discussed in this meeting."
                          },
                          "surfaces": {
                            "type": "array",
                            "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                            "items": {
                              "type": "object",
                              "properties": {
                                "position": {
                                  "type": "integer",
                                  "description": "Position on the surface (1-10)",
                                  "example": 1
                                },
                                "surface": {
                                  "type": "string",
                                  "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                  "example": "HOME"
                                }
                              },
                              "required": [
                                "position",
                                "surface"
                              ]
                            }
                          }
                        },
                        "required": [
                          "name",
                          "prompt"
                        ]
                      }
                    }
                  }
                },
                "templates": {
                  "type": "array",
                  "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID references an existing template (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "next_steps": {
                        "type": "array",
                        "description": "NextSteps defines the next steps to attach to this template with junction fields",
                        "items": {
                          "type": "object",
                          "properties": {
                            "autopilot": {
                              "type": "boolean",
                              "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                              "example": false
                            },
                            "next_step": {
                              "type": "object",
                              "description": "NextStep is the reference to the next step entity ($ref or $id)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "ID references an existing entity by its database ID",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "$ref": {
                                  "type": "string",
                                  "description": "Ref references an entity defined in the same manifest via its $id value",
                                  "example": "my-next-step"
                                }
                              }
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "SortOrder is the display order of the next step within the template",
                              "example": 1
                            }
                          },
                          "required": [
                            "next_step"
                          ]
                        }
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-template"
                          },
                          "agenda_items": {
                            "type": "array",
                            "description": "AgendaItems defines the template's agenda items",
                            "items": {
                              "type": "object",
                              "properties": {
                                "content": {
                                  "type": "string",
                                  "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description is an optional short description/subtitle",
                                  "example": "Review current quarter pipeline status"
                                },
                                "item_type": {
                                  "type": "string",
                                  "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                  "example": "DISCUSSION"
                                },
                                "restricted_to_leads": {
                                  "type": "boolean",
                                  "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                  "example": false
                                },
                                "sequence": {
                                  "type": "string",
                                  "description": "Sequence controls the display order",
                                  "example": "1"
                                },
                                "time_allocation_minutes": {
                                  "type": "number",
                                  "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                  "example": 15
                                },
                                "title": {
                                  "type": "string",
                                  "description": "Title is the agenda item's title",
                                  "example": "Pipeline Review"
                                }
                              },
                              "required": [
                                "item_type",
                                "title"
                              ]
                            }
                          },
                          "backing_meeting_id": {
                            "type": "string",
                            "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "description": {
                            "type": "string",
                            "description": "Description of the template",
                            "example": "Template for sales meetings"
                          },
                          "detail_level": {
                            "type": "string",
                            "description": "DetailLevel controls the granularity of meeting notes",
                            "enum": [
                              "BULLET_POINTS",
                              "STANDARD",
                              "VERBATIM"
                            ],
                            "example": "STANDARD"
                          },
                          "meeting_duration_seconds": {
                            "type": "integer",
                            "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                            "example": 3600
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the template",
                            "example": "Sales Meeting Template"
                          },
                          "participants": {
                            "type": "array",
                            "description": "Participants defines the template's default participants",
                            "items": {
                              "type": "object",
                              "properties": {
                                "email": {
                                  "type": "string",
                                  "description": "Email is the participant's email address",
                                  "example": "sarah@acme.com"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name is the participant's display name",
                                  "example": "Sarah Chen"
                                },
                                "role": {
                                  "type": "string",
                                  "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                  "enum": [
                                    "EDITOR",
                                    "VIEWER"
                                  ],
                                  "example": "EDITOR"
                                }
                              },
                              "required": [
                                "email",
                                "name",
                                "role"
                              ]
                            }
                          },
                          "start_time_offset_seconds": {
                            "type": "integer",
                            "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                            "example": 36000
                          },
                          "title": {
                            "type": "string",
                            "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                            "example": "Weekly Sales Standup"
                          }
                        },
                        "required": [
                          "name"
                        ]
                      }
                    }
                  }
                },
                "toolkit_prompt": {
                  "type": "string",
                  "description": "Default AI persona/behavioral instructions for the toolkit"
                }
              }
            },
            "version_label": {
              "type": "string",
              "description": "VersionLabel is a human-readable label for this version (e.g., \"2.0.0\")",
              "example": "2.0.0"
            }
          },
          "required": [
            "manifest",
            "version_label"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "Dry-run validation result",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "conflicts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "conflict_type": {
                      "type": "string",
                      "example": "name_collision"
                    },
                    "entity_name": {
                      "type": "string",
                      "example": "Generate Invoice"
                    },
                    "entity_type": {
                      "type": "string",
                      "example": "next_step"
                    },
                    "existing_entity_id": {
                      "type": "string",
                      "example": "abc-123"
                    },
                    "message": {
                      "type": "string",
                      "description": "separated due to formatting for long example",
                      "example": "A next step with this name already exists for this partner app"
                    },
                    "resolution": {
                      "type": "string",
                      "example": "informational"
                    }
                  }
                }
              },
              "summary": {
                "type": "object",
                "properties": {
                  "action_buttons": {
                    "type": "integer"
                  },
                  "next_steps": {
                    "type": "integer"
                  },
                  "shortcuts": {
                    "type": "integer"
                  },
                  "templates": {
                    "type": "integer"
                  }
                }
              },
              "validation": {
                "type": "object",
                "properties": {
                  "errors": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "example": "MISSING_REQUIRED"
                        },
                        "message": {
                          "type": "string",
                          "example": "name is required"
                        },
                        "path": {
                          "type": "string",
                          "example": "next_steps[0]"
                        }
                      }
                    }
                  },
                  "valid": {
                    "type": "boolean"
                  },
                  "warnings": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "example": "MISSING_REQUIRED"
                        },
                        "message": {
                          "type": "string",
                          "example": "name is required"
                        },
                        "path": {
                          "type": "string",
                          "example": "next_steps[0]"
                        }
                      }
                    }
                  }
                }
              },
              "version": {
                "type": "object",
                "properties": {
                  "changelog": {
                    "type": "string",
                    "example": "Added new features"
                  },
                  "created_at": {
                    "type": "string",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "created_by": {
                    "type": "string",
                    "example": "user-123"
                  },
                  "deprecated_at": {
                    "type": "string",
                    "example": "2023-06-01T00:00:00Z"
                  },
                  "id": {
                    "type": "string",
                    "example": "123e4567-e89b-12d3-a456-426614174000"
                  },
                  "manifest": {
                    "type": "object",
                    "properties": {
                      "action_buttons": {
                        "type": "array",
                        "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "ID references an existing action button (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-action-button"
                                },
                                "content_format": {
                                  "type": "string",
                                  "description": "Content format: rich_text, markdown, plain_text, html",
                                  "enum": [
                                    "rich_text",
                                    "markdown",
                                    "plain_text",
                                    "html"
                                  ],
                                  "example": "plain_text"
                                },
                                "delivery_mechanism": {
                                  "type": "string",
                                  "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                                  "enum": [
                                    "clipboard",
                                    "email",
                                    "os_email_client",
                                    "file_download",
                                    "integration",
                                    "webhook",
                                    "redirect"
                                  ],
                                  "example": "webhook"
                                },
                                "file_format": {
                                  "type": "string",
                                  "description": "File format for file delivery",
                                  "example": "pdf"
                                },
                                "icon_name": {
                                  "type": "string",
                                  "description": "Icon name from the vocabulary",
                                  "example": "share"
                                },
                                "integration_type": {
                                  "type": "string",
                                  "description": "Integration type",
                                  "example": "salesforce"
                                },
                                "is_default_for_next_step": {
                                  "type": "boolean",
                                  "description": "Whether this is the default action for a next step",
                                  "example": false
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the action button",
                                  "example": "Send to CRM"
                                },
                                "redirect_url": {
                                  "type": "string",
                                  "description": "Redirect URL for redirect delivery",
                                  "example": "https://app.example.com/action"
                                },
                                "requires_connected_integration": {
                                  "type": "boolean",
                                  "description": "Whether this action requires a connected integration",
                                  "example": false
                                },
                                "sort_order": {
                                  "type": "integer",
                                  "description": "Sort order for display",
                                  "example": 1
                                },
                                "webhook_url": {
                                  "type": "string",
                                  "description": "Webhook URL for webhook delivery",
                                  "example": "https://api.example.com/webhook"
                                }
                              },
                              "required": [
                                "content_format",
                                "delivery_mechanism",
                                "name"
                              ]
                            }
                          }
                        }
                      },
                      "next_steps": {
                        "type": "array",
                        "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "action_buttons": {
                              "type": "array",
                              "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "action_button": {
                                    "type": "object",
                                    "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                                    "properties": {
                                      "$id": {
                                        "type": "string",
                                        "description": "ID references an existing entity by its database ID",
                                        "example": "123e4567-e89b-12d3-a456-426614174000"
                                      },
                                      "$ref": {
                                        "type": "string",
                                        "description": "Ref references an entity defined in the same manifest via its $id value",
                                        "example": "my-next-step"
                                      }
                                    }
                                  },
                                  "sort_order": {
                                    "type": "integer",
                                    "description": "SortOrder is the display order of the action button within the next step",
                                    "example": 1
                                  }
                                },
                                "required": [
                                  "action_button"
                                ]
                              }
                            },
                            "default_action_button": {
                              "type": "object",
                              "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "ID references an existing entity by its database ID",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "$ref": {
                                  "type": "string",
                                  "description": "Ref references an entity defined in the same manifest via its $id value",
                                  "example": "my-next-step"
                                }
                              }
                            },
                            "id": {
                              "type": "string",
                              "description": "ID references an existing next step (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-next-step"
                                },
                                "ai_prompt": {
                                  "type": "string",
                                  "description": "AI prompt for AI-type next steps",
                                  "example": "Generate an invoice..."
                                },
                                "color": {
                                  "type": "string",
                                  "description": "Color for display",
                                  "example": "#FF5733"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description of the next step",
                                  "example": "Generates an invoice from meeting notes"
                                },
                                "icon_name": {
                                  "type": "string",
                                  "description": "Icon name for display",
                                  "example": "receipt"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the next step",
                                  "example": "Generate Invoice"
                                },
                                "redirect_url": {
                                  "type": "string",
                                  "description": "Redirect URL for redirect-type next steps",
                                  "example": "https://partner.example.com/invoice"
                                },
                                "sort_order": {
                                  "type": "integer",
                                  "description": "Sort order for display",
                                  "example": 1
                                },
                                "type": {
                                  "type": "string",
                                  "description": "Type of next step: \"ai\" or \"redirect\"",
                                  "enum": [
                                    "ai",
                                    "redirect"
                                  ],
                                  "example": "ai"
                                }
                              },
                              "required": [
                                "name",
                                "type"
                              ]
                            }
                          }
                        }
                      },
                      "shortcuts": {
                        "type": "array",
                        "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-shortcut"
                                },
                                "color": {
                                  "type": "string",
                                  "description": "Color for display",
                                  "example": "#4F46E5"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description of the shortcut",
                                  "example": "Generates a concise meeting summary"
                                },
                                "icon_name": {
                                  "type": "string",
                                  "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                                  "example": "faLightbulb"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the shortcut",
                                  "example": "Summarize Meeting"
                                },
                                "prompt": {
                                  "type": "string",
                                  "description": "AI prompt template",
                                  "example": "Summarize the key points discussed in this meeting."
                                },
                                "surfaces": {
                                  "type": "array",
                                  "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "position": {
                                        "type": "integer",
                                        "description": "Position on the surface (1-10)",
                                        "example": 1
                                      },
                                      "surface": {
                                        "type": "string",
                                        "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                        "example": "HOME"
                                      }
                                    },
                                    "required": [
                                      "position",
                                      "surface"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "name",
                                "prompt"
                              ]
                            }
                          }
                        }
                      },
                      "templates": {
                        "type": "array",
                        "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "ID references an existing template (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "next_steps": {
                              "type": "array",
                              "description": "NextSteps defines the next steps to attach to this template with junction fields",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "autopilot": {
                                    "type": "boolean",
                                    "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                                    "example": false
                                  },
                                  "next_step": {
                                    "type": "object",
                                    "description": "NextStep is the reference to the next step entity ($ref or $id)",
                                    "properties": {
                                      "$id": {
                                        "type": "string",
                                        "description": "ID references an existing entity by its database ID",
                                        "example": "123e4567-e89b-12d3-a456-426614174000"
                                      },
                                      "$ref": {
                                        "type": "string",
                                        "description": "Ref references an entity defined in the same manifest via its $id value",
                                        "example": "my-next-step"
                                      }
                                    }
                                  },
                                  "sort_order": {
                                    "type": "integer",
                                    "description": "SortOrder is the display order of the next step within the template",
                                    "example": 1
                                  }
                                },
                                "required": [
                                  "next_step"
                                ]
                              }
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-template"
                                },
                                "agenda_items": {
                                  "type": "array",
                                  "description": "AgendaItems defines the template's agenda items",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "content": {
                                        "type": "string",
                                        "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                      },
                                      "description": {
                                        "type": "string",
                                        "description": "Description is an optional short description/subtitle",
                                        "example": "Review current quarter pipeline status"
                                      },
                                      "item_type": {
                                        "type": "string",
                                        "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                        "example": "DISCUSSION"
                                      },
                                      "restricted_to_leads": {
                                        "type": "boolean",
                                        "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                        "example": false
                                      },
                                      "sequence": {
                                        "type": "string",
                                        "description": "Sequence controls the display order",
                                        "example": "1"
                                      },
                                      "time_allocation_minutes": {
                                        "type": "number",
                                        "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                        "example": 15
                                      },
                                      "title": {
                                        "type": "string",
                                        "description": "Title is the agenda item's title",
                                        "example": "Pipeline Review"
                                      }
                                    },
                                    "required": [
                                      "item_type",
                                      "title"
                                    ]
                                  }
                                },
                                "backing_meeting_id": {
                                  "type": "string",
                                  "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description of the template",
                                  "example": "Template for sales meetings"
                                },
                                "detail_level": {
                                  "type": "string",
                                  "description": "DetailLevel controls the granularity of meeting notes",
                                  "enum": [
                                    "BULLET_POINTS",
                                    "STANDARD",
                                    "VERBATIM"
                                  ],
                                  "example": "STANDARD"
                                },
                                "meeting_duration_seconds": {
                                  "type": "integer",
                                  "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                                  "example": 3600
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the template",
                                  "example": "Sales Meeting Template"
                                },
                                "participants": {
                                  "type": "array",
                                  "description": "Participants defines the template's default participants",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "email": {
                                        "type": "string",
                                        "description": "Email is the participant's email address",
                                        "example": "sarah@acme.com"
                                      },
                                      "name": {
                                        "type": "string",
                                        "description": "Name is the participant's display name",
                                        "example": "Sarah Chen"
                                      },
                                      "role": {
                                        "type": "string",
                                        "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                        "enum": [
                                          "EDITOR",
                                          "VIEWER"
                                        ],
                                        "example": "EDITOR"
                                      }
                                    },
                                    "required": [
                                      "email",
                                      "name",
                                      "role"
                                    ]
                                  }
                                },
                                "start_time_offset_seconds": {
                                  "type": "integer",
                                  "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                                  "example": 36000
                                },
                                "title": {
                                  "type": "string",
                                  "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                                  "example": "Weekly Sales Standup"
                                }
                              },
                              "required": [
                                "name"
                              ]
                            }
                          }
                        }
                      },
                      "toolkit_prompt": {
                        "type": "string",
                        "description": "Default AI persona/behavioral instructions for the toolkit"
                      }
                    }
                  },
                  "published_at": {
                    "type": "string",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "status": {
                    "type": "string",
                    "example": "DRAFT"
                  },
                  "toolkit_id": {
                    "type": "string",
                    "example": "123e4567-e89b-12d3-a456-426614174001"
                  },
                  "updated_at": {
                    "type": "string",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "version_label": {
                    "type": "string",
                    "example": "2.0.0"
                  },
                  "version_number": {
                    "type": "integer",
                    "example": 2
                  }
                }
              }
            }
          }
        },
        "201": {
          "description": "Version created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "conflicts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "conflict_type": {
                      "type": "string",
                      "example": "name_collision"
                    },
                    "entity_name": {
                      "type": "string",
                      "example": "Generate Invoice"
                    },
                    "entity_type": {
                      "type": "string",
                      "example": "next_step"
                    },
                    "existing_entity_id": {
                      "type": "string",
                      "example": "abc-123"
                    },
                    "message": {
                      "type": "string",
                      "description": "separated due to formatting for long example",
                      "example": "A next step with this name already exists for this partner app"
                    },
                    "resolution": {
                      "type": "string",
                      "example": "informational"
                    }
                  }
                }
              },
              "summary": {
                "type": "object",
                "properties": {
                  "action_buttons": {
                    "type": "integer"
                  },
                  "next_steps": {
                    "type": "integer"
                  },
                  "shortcuts": {
                    "type": "integer"
                  },
                  "templates": {
                    "type": "integer"
                  }
                }
              },
              "validation": {
                "type": "object",
                "properties": {
                  "errors": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "example": "MISSING_REQUIRED"
                        },
                        "message": {
                          "type": "string",
                          "example": "name is required"
                        },
                        "path": {
                          "type": "string",
                          "example": "next_steps[0]"
                        }
                      }
                    }
                  },
                  "valid": {
                    "type": "boolean"
                  },
                  "warnings": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "example": "MISSING_REQUIRED"
                        },
                        "message": {
                          "type": "string",
                          "example": "name is required"
                        },
                        "path": {
                          "type": "string",
                          "example": "next_steps[0]"
                        }
                      }
                    }
                  }
                }
              },
              "version": {
                "type": "object",
                "properties": {
                  "changelog": {
                    "type": "string",
                    "example": "Added new features"
                  },
                  "created_at": {
                    "type": "string",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "created_by": {
                    "type": "string",
                    "example": "user-123"
                  },
                  "deprecated_at": {
                    "type": "string",
                    "example": "2023-06-01T00:00:00Z"
                  },
                  "id": {
                    "type": "string",
                    "example": "123e4567-e89b-12d3-a456-426614174000"
                  },
                  "manifest": {
                    "type": "object",
                    "properties": {
                      "action_buttons": {
                        "type": "array",
                        "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "ID references an existing action button (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-action-button"
                                },
                                "content_format": {
                                  "type": "string",
                                  "description": "Content format: rich_text, markdown, plain_text, html",
                                  "enum": [
                                    "rich_text",
                                    "markdown",
                                    "plain_text",
                                    "html"
                                  ],
                                  "example": "plain_text"
                                },
                                "delivery_mechanism": {
                                  "type": "string",
                                  "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                                  "enum": [
                                    "clipboard",
                                    "email",
                                    "os_email_client",
                                    "file_download",
                                    "integration",
                                    "webhook",
                                    "redirect"
                                  ],
                                  "example": "webhook"
                                },
                                "file_format": {
                                  "type": "string",
                                  "description": "File format for file delivery",
                                  "example": "pdf"
                                },
                                "icon_name": {
                                  "type": "string",
                                  "description": "Icon name from the vocabulary",
                                  "example": "share"
                                },
                                "integration_type": {
                                  "type": "string",
                                  "description": "Integration type",
                                  "example": "salesforce"
                                },
                                "is_default_for_next_step": {
                                  "type": "boolean",
                                  "description": "Whether this is the default action for a next step",
                                  "example": false
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the action button",
                                  "example": "Send to CRM"
                                },
                                "redirect_url": {
                                  "type": "string",
                                  "description": "Redirect URL for redirect delivery",
                                  "example": "https://app.example.com/action"
                                },
                                "requires_connected_integration": {
                                  "type": "boolean",
                                  "description": "Whether this action requires a connected integration",
                                  "example": false
                                },
                                "sort_order": {
                                  "type": "integer",
                                  "description": "Sort order for display",
                                  "example": 1
                                },
                                "webhook_url": {
                                  "type": "string",
                                  "description": "Webhook URL for webhook delivery",
                                  "example": "https://api.example.com/webhook"
                                }
                              },
                              "required": [
                                "content_format",
                                "delivery_mechanism",
                                "name"
                              ]
                            }
                          }
                        }
                      },
                      "next_steps": {
                        "type": "array",
                        "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "action_buttons": {
                              "type": "array",
                              "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "action_button": {
                                    "type": "object",
                                    "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                                    "properties": {
                                      "$id": {
                                        "type": "string",
                                        "description": "ID references an existing entity by its database ID",
                                        "example": "123e4567-e89b-12d3-a456-426614174000"
                                      },
                                      "$ref": {
                                        "type": "string",
                                        "description": "Ref references an entity defined in the same manifest via its $id value",
                                        "example": "my-next-step"
                                      }
                                    }
                                  },
                                  "sort_order": {
                                    "type": "integer",
                                    "description": "SortOrder is the display order of the action button within the next step",
                                    "example": 1
                                  }
                                },
                                "required": [
                                  "action_button"
                                ]
                              }
                            },
                            "default_action_button": {
                              "type": "object",
                              "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "ID references an existing entity by its database ID",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "$ref": {
                                  "type": "string",
                                  "description": "Ref references an entity defined in the same manifest via its $id value",
                                  "example": "my-next-step"
                                }
                              }
                            },
                            "id": {
                              "type": "string",
                              "description": "ID references an existing next step (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-next-step"
                                },
                                "ai_prompt": {
                                  "type": "string",
                                  "description": "AI prompt for AI-type next steps",
                                  "example": "Generate an invoice..."
                                },
                                "color": {
                                  "type": "string",
                                  "description": "Color for display",
                                  "example": "#FF5733"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description of the next step",
                                  "example": "Generates an invoice from meeting notes"
                                },
                                "icon_name": {
                                  "type": "string",
                                  "description": "Icon name for display",
                                  "example": "receipt"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the next step",
                                  "example": "Generate Invoice"
                                },
                                "redirect_url": {
                                  "type": "string",
                                  "description": "Redirect URL for redirect-type next steps",
                                  "example": "https://partner.example.com/invoice"
                                },
                                "sort_order": {
                                  "type": "integer",
                                  "description": "Sort order for display",
                                  "example": 1
                                },
                                "type": {
                                  "type": "string",
                                  "description": "Type of next step: \"ai\" or \"redirect\"",
                                  "enum": [
                                    "ai",
                                    "redirect"
                                  ],
                                  "example": "ai"
                                }
                              },
                              "required": [
                                "name",
                                "type"
                              ]
                            }
                          }
                        }
                      },
                      "shortcuts": {
                        "type": "array",
                        "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-shortcut"
                                },
                                "color": {
                                  "type": "string",
                                  "description": "Color for display",
                                  "example": "#4F46E5"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description of the shortcut",
                                  "example": "Generates a concise meeting summary"
                                },
                                "icon_name": {
                                  "type": "string",
                                  "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                                  "example": "faLightbulb"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the shortcut",
                                  "example": "Summarize Meeting"
                                },
                                "prompt": {
                                  "type": "string",
                                  "description": "AI prompt template",
                                  "example": "Summarize the key points discussed in this meeting."
                                },
                                "surfaces": {
                                  "type": "array",
                                  "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "position": {
                                        "type": "integer",
                                        "description": "Position on the surface (1-10)",
                                        "example": 1
                                      },
                                      "surface": {
                                        "type": "string",
                                        "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                        "example": "HOME"
                                      }
                                    },
                                    "required": [
                                      "position",
                                      "surface"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "name",
                                "prompt"
                              ]
                            }
                          }
                        }
                      },
                      "templates": {
                        "type": "array",
                        "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "ID references an existing template (mutually exclusive with Spec)",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "next_steps": {
                              "type": "array",
                              "description": "NextSteps defines the next steps to attach to this template with junction fields",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "autopilot": {
                                    "type": "boolean",
                                    "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                                    "example": false
                                  },
                                  "next_step": {
                                    "type": "object",
                                    "description": "NextStep is the reference to the next step entity ($ref or $id)",
                                    "properties": {
                                      "$id": {
                                        "type": "string",
                                        "description": "ID references an existing entity by its database ID",
                                        "example": "123e4567-e89b-12d3-a456-426614174000"
                                      },
                                      "$ref": {
                                        "type": "string",
                                        "description": "Ref references an entity defined in the same manifest via its $id value",
                                        "example": "my-next-step"
                                      }
                                    }
                                  },
                                  "sort_order": {
                                    "type": "integer",
                                    "description": "SortOrder is the display order of the next step within the template",
                                    "example": 1
                                  }
                                },
                                "required": [
                                  "next_step"
                                ]
                              }
                            },
                            "spec": {
                              "type": "object",
                              "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                  "example": "my-template"
                                },
                                "agenda_items": {
                                  "type": "array",
                                  "description": "AgendaItems defines the template's agenda items",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "content": {
                                        "type": "string",
                                        "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                      },
                                      "description": {
                                        "type": "string",
                                        "description": "Description is an optional short description/subtitle",
                                        "example": "Review current quarter pipeline status"
                                      },
                                      "item_type": {
                                        "type": "string",
                                        "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                        "example": "DISCUSSION"
                                      },
                                      "restricted_to_leads": {
                                        "type": "boolean",
                                        "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                        "example": false
                                      },
                                      "sequence": {
                                        "type": "string",
                                        "description": "Sequence controls the display order",
                                        "example": "1"
                                      },
                                      "time_allocation_minutes": {
                                        "type": "number",
                                        "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                        "example": 15
                                      },
                                      "title": {
                                        "type": "string",
                                        "description": "Title is the agenda item's title",
                                        "example": "Pipeline Review"
                                      }
                                    },
                                    "required": [
                                      "item_type",
                                      "title"
                                    ]
                                  }
                                },
                                "backing_meeting_id": {
                                  "type": "string",
                                  "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description of the template",
                                  "example": "Template for sales meetings"
                                },
                                "detail_level": {
                                  "type": "string",
                                  "description": "DetailLevel controls the granularity of meeting notes",
                                  "enum": [
                                    "BULLET_POINTS",
                                    "STANDARD",
                                    "VERBATIM"
                                  ],
                                  "example": "STANDARD"
                                },
                                "meeting_duration_seconds": {
                                  "type": "integer",
                                  "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                                  "example": 3600
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name of the template",
                                  "example": "Sales Meeting Template"
                                },
                                "participants": {
                                  "type": "array",
                                  "description": "Participants defines the template's default participants",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "email": {
                                        "type": "string",
                                        "description": "Email is the participant's email address",
                                        "example": "sarah@acme.com"
                                      },
                                      "name": {
                                        "type": "string",
                                        "description": "Name is the participant's display name",
                                        "example": "Sarah Chen"
                                      },
                                      "role": {
                                        "type": "string",
                                        "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                        "enum": [
                                          "EDITOR",
                                          "VIEWER"
                                        ],
                                        "example": "EDITOR"
                                      }
                                    },
                                    "required": [
                                      "email",
                                      "name",
                                      "role"
                                    ]
                                  }
                                },
                                "start_time_offset_seconds": {
                                  "type": "integer",
                                  "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                                  "example": 36000
                                },
                                "title": {
                                  "type": "string",
                                  "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                                  "example": "Weekly Sales Standup"
                                }
                              },
                              "required": [
                                "name"
                              ]
                            }
                          }
                        }
                      },
                      "toolkit_prompt": {
                        "type": "string",
                        "description": "Default AI persona/behavioral instructions for the toolkit"
                      }
                    }
                  },
                  "published_at": {
                    "type": "string",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "status": {
                    "type": "string",
                    "example": "DRAFT"
                  },
                  "toolkit_id": {
                    "type": "string",
                    "example": "123e4567-e89b-12d3-a456-426614174001"
                  },
                  "updated_at": {
                    "type": "string",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "version_label": {
                    "type": "string",
                    "example": "2.0.0"
                  },
                  "version_number": {
                    "type": "integer",
                    "example": 2
                  }
                }
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Toolkit not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "Draft version already exists",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key) creation of a new DRAFT version for a toolkit (`toolkitId`).\nSet `dry_run=true` to validate without creating (200); otherwise creates and\nreturns 201. A draft is not live until published via\n`adminPublishToolkitVersion`. 409 can indicate a conflicting draft already\nexists. Accepts an optional `Idempotency-Key`."
    },
    "adminDeleteToolkit": {
      "id": "adminDeleteToolkit",
      "method": "DELETE",
      "path": "/v1/partner/admin/toolkits/{toolkitId}",
      "summary": "Delete a toolkit",
      "description": "Deletes a toolkit for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Toolkit deleted",
          "has_schema": false
        },
        "400": {
          "description": "Invalid toolkit ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Toolkit not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) deletion of a toolkit by `toolkitId`. Destructive: removing\na toolkit affects its availability for installation. Returns 204; 404 if\nunknown. Accepts an optional `Idempotency-Key`; deleting when absent is a\nsafe no-op."
    },
    "adminDiscardToolkitVersion": {
      "id": "adminDiscardToolkitVersion",
      "method": "DELETE",
      "path": "/v1/partner/admin/toolkits/{toolkitId}/versions/{versionId}",
      "summary": "Discard a draft toolkit version",
      "description": "Permanently deletes a draft version. Only draft versions can be discarded.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "description": "Version ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Version discarded",
          "has_schema": false
        },
        "400": {
          "description": "Version is not in draft status",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Version not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) that discards a DRAFT toolkit version\n(`toolkitId`/`versionId`). Only unpublished drafts can be discarded —\npublished versions cannot be deleted this way. Returns 204. Accepts an\noptional `Idempotency-Key`; discarding an already-discarded draft is a safe\nno-op."
    },
    "adminExportEntities": {
      "id": "adminExportEntities",
      "method": "POST",
      "path": "/v1/partner/admin/toolkits/export",
      "summary": "Export entities as a portable manifest",
      "description": "Builds a portable toolkit manifest from selected entity IDs. Dependencies are auto-discovered.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Export request with entity IDs",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "action_button_ids": {
              "type": "array",
              "description": "ActionButtonIDs lists standalone action button IDs to include",
              "items": {
                "type": "string"
              }
            },
            "description": {
              "type": "string",
              "description": "Description is an optional description for the exported manifest metadata"
            },
            "name": {
              "type": "string",
              "description": "Name is an optional name for the exported manifest metadata"
            },
            "next_step_ids": {
              "type": "array",
              "description": "NextStepIDs lists next step IDs to include (auto-discovers action buttons)",
              "items": {
                "type": "string"
              }
            },
            "shortcut_ids": {
              "type": "array",
              "description": "ShortcutIDs lists shortcut IDs to include",
              "items": {
                "type": "string"
              }
            },
            "template_ids": {
              "type": "array",
              "description": "TemplateIDs lists meeting template IDs to include (auto-discovers next steps and action buttons)",
              "items": {
                "type": "string"
              }
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "manifest": {
                "type": "object",
                "properties": {
                  "action_buttons": {
                    "type": "array",
                    "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing action button (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-action-button"
                            },
                            "content_format": {
                              "type": "string",
                              "description": "Content format: rich_text, markdown, plain_text, html",
                              "enum": [
                                "rich_text",
                                "markdown",
                                "plain_text",
                                "html"
                              ],
                              "example": "plain_text"
                            },
                            "delivery_mechanism": {
                              "type": "string",
                              "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                              "enum": [
                                "clipboard",
                                "email",
                                "os_email_client",
                                "file_download",
                                "integration",
                                "webhook",
                                "redirect"
                              ],
                              "example": "webhook"
                            },
                            "file_format": {
                              "type": "string",
                              "description": "File format for file delivery",
                              "example": "pdf"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "Icon name from the vocabulary",
                              "example": "share"
                            },
                            "integration_type": {
                              "type": "string",
                              "description": "Integration type",
                              "example": "salesforce"
                            },
                            "is_default_for_next_step": {
                              "type": "boolean",
                              "description": "Whether this is the default action for a next step",
                              "example": false
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the action button",
                              "example": "Send to CRM"
                            },
                            "redirect_url": {
                              "type": "string",
                              "description": "Redirect URL for redirect delivery",
                              "example": "https://app.example.com/action"
                            },
                            "requires_connected_integration": {
                              "type": "boolean",
                              "description": "Whether this action requires a connected integration",
                              "example": false
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "Sort order for display",
                              "example": 1
                            },
                            "webhook_url": {
                              "type": "string",
                              "description": "Webhook URL for webhook delivery",
                              "example": "https://api.example.com/webhook"
                            }
                          },
                          "required": [
                            "content_format",
                            "delivery_mechanism",
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "next_steps": {
                    "type": "array",
                    "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "action_buttons": {
                          "type": "array",
                          "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                          "items": {
                            "type": "object",
                            "properties": {
                              "action_button": {
                                "type": "object",
                                "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "SortOrder is the display order of the action button within the next step",
                                "example": 1
                              }
                            },
                            "required": [
                              "action_button"
                            ]
                          }
                        },
                        "default_action_button": {
                          "type": "object",
                          "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "ID references an existing entity by its database ID",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "$ref": {
                              "type": "string",
                              "description": "Ref references an entity defined in the same manifest via its $id value",
                              "example": "my-next-step"
                            }
                          }
                        },
                        "id": {
                          "type": "string",
                          "description": "ID references an existing next step (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-next-step"
                            },
                            "ai_prompt": {
                              "type": "string",
                              "description": "AI prompt for AI-type next steps",
                              "example": "Generate an invoice..."
                            },
                            "color": {
                              "type": "string",
                              "description": "Color for display",
                              "example": "#FF5733"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the next step",
                              "example": "Generates an invoice from meeting notes"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "Icon name for display",
                              "example": "receipt"
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the next step",
                              "example": "Generate Invoice"
                            },
                            "redirect_url": {
                              "type": "string",
                              "description": "Redirect URL for redirect-type next steps",
                              "example": "https://partner.example.com/invoice"
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "Sort order for display",
                              "example": 1
                            },
                            "type": {
                              "type": "string",
                              "description": "Type of next step: \"ai\" or \"redirect\"",
                              "enum": [
                                "ai",
                                "redirect"
                              ],
                              "example": "ai"
                            }
                          },
                          "required": [
                            "name",
                            "type"
                          ]
                        }
                      }
                    }
                  },
                  "shortcuts": {
                    "type": "array",
                    "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-shortcut"
                            },
                            "color": {
                              "type": "string",
                              "description": "Color for display",
                              "example": "#4F46E5"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the shortcut",
                              "example": "Generates a concise meeting summary"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                              "example": "faLightbulb"
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the shortcut",
                              "example": "Summarize Meeting"
                            },
                            "prompt": {
                              "type": "string",
                              "description": "AI prompt template",
                              "example": "Summarize the key points discussed in this meeting."
                            },
                            "surfaces": {
                              "type": "array",
                              "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "position": {
                                    "type": "integer",
                                    "description": "Position on the surface (1-10)",
                                    "example": 1
                                  },
                                  "surface": {
                                    "type": "string",
                                    "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                    "example": "HOME"
                                  }
                                },
                                "required": [
                                  "position",
                                  "surface"
                                ]
                              }
                            }
                          },
                          "required": [
                            "name",
                            "prompt"
                          ]
                        }
                      }
                    }
                  },
                  "templates": {
                    "type": "array",
                    "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing template (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "next_steps": {
                          "type": "array",
                          "description": "NextSteps defines the next steps to attach to this template with junction fields",
                          "items": {
                            "type": "object",
                            "properties": {
                              "autopilot": {
                                "type": "boolean",
                                "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                                "example": false
                              },
                              "next_step": {
                                "type": "object",
                                "description": "NextStep is the reference to the next step entity ($ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "SortOrder is the display order of the next step within the template",
                                "example": 1
                              }
                            },
                            "required": [
                              "next_step"
                            ]
                          }
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-template"
                            },
                            "agenda_items": {
                              "type": "array",
                              "description": "AgendaItems defines the template's agenda items",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string",
                                    "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "Description is an optional short description/subtitle",
                                    "example": "Review current quarter pipeline status"
                                  },
                                  "item_type": {
                                    "type": "string",
                                    "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                    "example": "DISCUSSION"
                                  },
                                  "restricted_to_leads": {
                                    "type": "boolean",
                                    "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                    "example": false
                                  },
                                  "sequence": {
                                    "type": "string",
                                    "description": "Sequence controls the display order",
                                    "example": "1"
                                  },
                                  "time_allocation_minutes": {
                                    "type": "number",
                                    "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                    "example": 15
                                  },
                                  "title": {
                                    "type": "string",
                                    "description": "Title is the agenda item's title",
                                    "example": "Pipeline Review"
                                  }
                                },
                                "required": [
                                  "item_type",
                                  "title"
                                ]
                              }
                            },
                            "backing_meeting_id": {
                              "type": "string",
                              "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the template",
                              "example": "Template for sales meetings"
                            },
                            "detail_level": {
                              "type": "string",
                              "description": "DetailLevel controls the granularity of meeting notes",
                              "enum": [
                                "BULLET_POINTS",
                                "STANDARD",
                                "VERBATIM"
                              ],
                              "example": "STANDARD"
                            },
                            "meeting_duration_seconds": {
                              "type": "integer",
                              "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                              "example": 3600
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the template",
                              "example": "Sales Meeting Template"
                            },
                            "participants": {
                              "type": "array",
                              "description": "Participants defines the template's default participants",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "email": {
                                    "type": "string",
                                    "description": "Email is the participant's email address",
                                    "example": "sarah@acme.com"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Name is the participant's display name",
                                    "example": "Sarah Chen"
                                  },
                                  "role": {
                                    "type": "string",
                                    "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                    "enum": [
                                      "EDITOR",
                                      "VIEWER"
                                    ],
                                    "example": "EDITOR"
                                  }
                                },
                                "required": [
                                  "email",
                                  "name",
                                  "role"
                                ]
                              }
                            },
                            "start_time_offset_seconds": {
                              "type": "integer",
                              "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                              "example": 36000
                            },
                            "title": {
                              "type": "string",
                              "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                              "example": "Weekly Sales Standup"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "toolkit_prompt": {
                    "type": "string",
                    "description": "Default AI persona/behavioral instructions for the toolkit"
                  }
                }
              },
              "metadata": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "slug": {
                    "type": "string"
                  },
                  "version": {
                    "type": "string"
                  }
                }
              },
              "summary": {
                "type": "object",
                "properties": {
                  "action_buttons": {
                    "type": "integer"
                  },
                  "next_steps": {
                    "type": "integer"
                  },
                  "shortcuts": {
                    "type": "integer"
                  },
                  "templates": {
                    "type": "integer"
                  }
                }
              },
              "warnings": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "entity_name": {
                      "type": "string"
                    },
                    "entity_type": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body or no entities specified",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key) that builds a portable toolkit manifest from a set of\nselected entity IDs; dependencies referenced by those entities are auto-\ndiscovered and included so the manifest is self-contained. Returns the\nmanifest in the response and does not itself create or modify a toolkit.\nRead/transform operation."
    },
    "adminExportToolkit": {
      "id": "adminExportToolkit",
      "method": "GET",
      "path": "/v1/partner/admin/toolkits/{toolkitId}/export",
      "summary": "Export a toolkit as a portable manifest",
      "description": "Resolves an existing toolkit's manifest into a portable format with $id/$ref identifiers.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "manifest": {
                "type": "object",
                "properties": {
                  "action_buttons": {
                    "type": "array",
                    "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing action button (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-action-button"
                            },
                            "content_format": {
                              "type": "string",
                              "description": "Content format: rich_text, markdown, plain_text, html",
                              "enum": [
                                "rich_text",
                                "markdown",
                                "plain_text",
                                "html"
                              ],
                              "example": "plain_text"
                            },
                            "delivery_mechanism": {
                              "type": "string",
                              "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                              "enum": [
                                "clipboard",
                                "email",
                                "os_email_client",
                                "file_download",
                                "integration",
                                "webhook",
                                "redirect"
                              ],
                              "example": "webhook"
                            },
                            "file_format": {
                              "type": "string",
                              "description": "File format for file delivery",
                              "example": "pdf"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "Icon name from the vocabulary",
                              "example": "share"
                            },
                            "integration_type": {
                              "type": "string",
                              "description": "Integration type",
                              "example": "salesforce"
                            },
                            "is_default_for_next_step": {
                              "type": "boolean",
                              "description": "Whether this is the default action for a next step",
                              "example": false
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the action button",
                              "example": "Send to CRM"
                            },
                            "redirect_url": {
                              "type": "string",
                              "description": "Redirect URL for redirect delivery",
                              "example": "https://app.example.com/action"
                            },
                            "requires_connected_integration": {
                              "type": "boolean",
                              "description": "Whether this action requires a connected integration",
                              "example": false
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "Sort order for display",
                              "example": 1
                            },
                            "webhook_url": {
                              "type": "string",
                              "description": "Webhook URL for webhook delivery",
                              "example": "https://api.example.com/webhook"
                            }
                          },
                          "required": [
                            "content_format",
                            "delivery_mechanism",
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "next_steps": {
                    "type": "array",
                    "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "action_buttons": {
                          "type": "array",
                          "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                          "items": {
                            "type": "object",
                            "properties": {
                              "action_button": {
                                "type": "object",
                                "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "SortOrder is the display order of the action button within the next step",
                                "example": 1
                              }
                            },
                            "required": [
                              "action_button"
                            ]
                          }
                        },
                        "default_action_button": {
                          "type": "object",
                          "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "ID references an existing entity by its database ID",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "$ref": {
                              "type": "string",
                              "description": "Ref references an entity defined in the same manifest via its $id value",
                              "example": "my-next-step"
                            }
                          }
                        },
                        "id": {
                          "type": "string",
                          "description": "ID references an existing next step (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-next-step"
                            },
                            "ai_prompt": {
                              "type": "string",
                              "description": "AI prompt for AI-type next steps",
                              "example": "Generate an invoice..."
                            },
                            "color": {
                              "type": "string",
                              "description": "Color for display",
                              "example": "#FF5733"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the next step",
                              "example": "Generates an invoice from meeting notes"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "Icon name for display",
                              "example": "receipt"
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the next step",
                              "example": "Generate Invoice"
                            },
                            "redirect_url": {
                              "type": "string",
                              "description": "Redirect URL for redirect-type next steps",
                              "example": "https://partner.example.com/invoice"
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "Sort order for display",
                              "example": 1
                            },
                            "type": {
                              "type": "string",
                              "description": "Type of next step: \"ai\" or \"redirect\"",
                              "enum": [
                                "ai",
                                "redirect"
                              ],
                              "example": "ai"
                            }
                          },
                          "required": [
                            "name",
                            "type"
                          ]
                        }
                      }
                    }
                  },
                  "shortcuts": {
                    "type": "array",
                    "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-shortcut"
                            },
                            "color": {
                              "type": "string",
                              "description": "Color for display",
                              "example": "#4F46E5"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the shortcut",
                              "example": "Generates a concise meeting summary"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                              "example": "faLightbulb"
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the shortcut",
                              "example": "Summarize Meeting"
                            },
                            "prompt": {
                              "type": "string",
                              "description": "AI prompt template",
                              "example": "Summarize the key points discussed in this meeting."
                            },
                            "surfaces": {
                              "type": "array",
                              "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "position": {
                                    "type": "integer",
                                    "description": "Position on the surface (1-10)",
                                    "example": 1
                                  },
                                  "surface": {
                                    "type": "string",
                                    "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                    "example": "HOME"
                                  }
                                },
                                "required": [
                                  "position",
                                  "surface"
                                ]
                              }
                            }
                          },
                          "required": [
                            "name",
                            "prompt"
                          ]
                        }
                      }
                    }
                  },
                  "templates": {
                    "type": "array",
                    "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing template (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "next_steps": {
                          "type": "array",
                          "description": "NextSteps defines the next steps to attach to this template with junction fields",
                          "items": {
                            "type": "object",
                            "properties": {
                              "autopilot": {
                                "type": "boolean",
                                "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                                "example": false
                              },
                              "next_step": {
                                "type": "object",
                                "description": "NextStep is the reference to the next step entity ($ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "SortOrder is the display order of the next step within the template",
                                "example": 1
                              }
                            },
                            "required": [
                              "next_step"
                            ]
                          }
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-template"
                            },
                            "agenda_items": {
                              "type": "array",
                              "description": "AgendaItems defines the template's agenda items",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string",
                                    "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "Description is an optional short description/subtitle",
                                    "example": "Review current quarter pipeline status"
                                  },
                                  "item_type": {
                                    "type": "string",
                                    "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                    "example": "DISCUSSION"
                                  },
                                  "restricted_to_leads": {
                                    "type": "boolean",
                                    "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                    "example": false
                                  },
                                  "sequence": {
                                    "type": "string",
                                    "description": "Sequence controls the display order",
                                    "example": "1"
                                  },
                                  "time_allocation_minutes": {
                                    "type": "number",
                                    "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                    "example": 15
                                  },
                                  "title": {
                                    "type": "string",
                                    "description": "Title is the agenda item's title",
                                    "example": "Pipeline Review"
                                  }
                                },
                                "required": [
                                  "item_type",
                                  "title"
                                ]
                              }
                            },
                            "backing_meeting_id": {
                              "type": "string",
                              "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the template",
                              "example": "Template for sales meetings"
                            },
                            "detail_level": {
                              "type": "string",
                              "description": "DetailLevel controls the granularity of meeting notes",
                              "enum": [
                                "BULLET_POINTS",
                                "STANDARD",
                                "VERBATIM"
                              ],
                              "example": "STANDARD"
                            },
                            "meeting_duration_seconds": {
                              "type": "integer",
                              "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                              "example": 3600
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the template",
                              "example": "Sales Meeting Template"
                            },
                            "participants": {
                              "type": "array",
                              "description": "Participants defines the template's default participants",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "email": {
                                    "type": "string",
                                    "description": "Email is the participant's email address",
                                    "example": "sarah@acme.com"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Name is the participant's display name",
                                    "example": "Sarah Chen"
                                  },
                                  "role": {
                                    "type": "string",
                                    "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                    "enum": [
                                      "EDITOR",
                                      "VIEWER"
                                    ],
                                    "example": "EDITOR"
                                  }
                                },
                                "required": [
                                  "email",
                                  "name",
                                  "role"
                                ]
                              }
                            },
                            "start_time_offset_seconds": {
                              "type": "integer",
                              "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                              "example": 36000
                            },
                            "title": {
                              "type": "string",
                              "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                              "example": "Weekly Sales Standup"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "toolkit_prompt": {
                    "type": "string",
                    "description": "Default AI persona/behavioral instructions for the toolkit"
                  }
                }
              },
              "metadata": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "slug": {
                    "type": "string"
                  },
                  "version": {
                    "type": "string"
                  }
                }
              },
              "summary": {
                "type": "object",
                "properties": {
                  "action_buttons": {
                    "type": "integer"
                  },
                  "next_steps": {
                    "type": "integer"
                  },
                  "shortcuts": {
                    "type": "integer"
                  },
                  "templates": {
                    "type": "integer"
                  }
                }
              },
              "warnings": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "entity_name": {
                      "type": "string"
                    },
                    "entity_type": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Toolkit not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) that resolves an existing toolkit (`toolkitId`) into a\nportable manifest with `$id`/`$ref` identifiers suitable for re-import\nelsewhere. Returns the manifest; read-only with respect to the toolkit."
    },
    "adminGetToolkit": {
      "id": "adminGetToolkit",
      "method": "GET",
      "path": "/v1/partner/admin/toolkits/{toolkitId}",
      "summary": "Get a toolkit",
      "description": "Retrieves a toolkit by ID for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "auto_install_on_new_workspaces": {
                "type": "boolean",
                "example": true
              },
              "auto_propagate": {
                "type": "boolean",
                "example": true
              },
              "created_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "example": "Complete sales workflow toolkit"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "is_active": {
                "type": "boolean",
                "example": true
              },
              "manifest": {
                "type": "object",
                "properties": {
                  "action_buttons": {
                    "type": "array",
                    "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing action button (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-action-button"
                            },
                            "content_format": {
                              "type": "string",
                              "description": "Content format: rich_text, markdown, plain_text, html",
                              "enum": [
                                "rich_text",
                                "markdown",
                                "plain_text",
                                "html"
                              ],
                              "example": "plain_text"
                            },
                            "delivery_mechanism": {
                              "type": "string",
                              "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                              "enum": [
                                "clipboard",
                                "email",
                                "os_email_client",
                                "file_download",
                                "integration",
                                "webhook",
                                "redirect"
                              ],
                              "example": "webhook"
                            },
                            "file_format": {
                              "type": "string",
                              "description": "File format for file delivery",
                              "example": "pdf"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "Icon name from the vocabulary",
                              "example": "share"
                            },
                            "integration_type": {
                              "type": "string",
                              "description": "Integration type",
                              "example": "salesforce"
                            },
                            "is_default_for_next_step": {
                              "type": "boolean",
                              "description": "Whether this is the default action for a next step",
                              "example": false
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the action button",
                              "example": "Send to CRM"
                            },
                            "redirect_url": {
                              "type": "string",
                              "description": "Redirect URL for redirect delivery",
                              "example": "https://app.example.com/action"
                            },
                            "requires_connected_integration": {
                              "type": "boolean",
                              "description": "Whether this action requires a connected integration",
                              "example": false
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "Sort order for display",
                              "example": 1
                            },
                            "webhook_url": {
                              "type": "string",
                              "description": "Webhook URL for webhook delivery",
                              "example": "https://api.example.com/webhook"
                            }
                          },
                          "required": [
                            "content_format",
                            "delivery_mechanism",
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "next_steps": {
                    "type": "array",
                    "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "action_buttons": {
                          "type": "array",
                          "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                          "items": {
                            "type": "object",
                            "properties": {
                              "action_button": {
                                "type": "object",
                                "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "SortOrder is the display order of the action button within the next step",
                                "example": 1
                              }
                            },
                            "required": [
                              "action_button"
                            ]
                          }
                        },
                        "default_action_button": {
                          "type": "object",
                          "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "ID references an existing entity by its database ID",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "$ref": {
                              "type": "string",
                              "description": "Ref references an entity defined in the same manifest via its $id value",
                              "example": "my-next-step"
                            }
                          }
                        },
                        "id": {
                          "type": "string",
                          "description": "ID references an existing next step (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-next-step"
                            },
                            "ai_prompt": {
                              "type": "string",
                              "description": "AI prompt for AI-type next steps",
                              "example": "Generate an invoice..."
                            },
                            "color": {
                              "type": "string",
                              "description": "Color for display",
                              "example": "#FF5733"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the next step",
                              "example": "Generates an invoice from meeting notes"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "Icon name for display",
                              "example": "receipt"
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the next step",
                              "example": "Generate Invoice"
                            },
                            "redirect_url": {
                              "type": "string",
                              "description": "Redirect URL for redirect-type next steps",
                              "example": "https://partner.example.com/invoice"
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "Sort order for display",
                              "example": 1
                            },
                            "type": {
                              "type": "string",
                              "description": "Type of next step: \"ai\" or \"redirect\"",
                              "enum": [
                                "ai",
                                "redirect"
                              ],
                              "example": "ai"
                            }
                          },
                          "required": [
                            "name",
                            "type"
                          ]
                        }
                      }
                    }
                  },
                  "shortcuts": {
                    "type": "array",
                    "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-shortcut"
                            },
                            "color": {
                              "type": "string",
                              "description": "Color for display",
                              "example": "#4F46E5"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the shortcut",
                              "example": "Generates a concise meeting summary"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                              "example": "faLightbulb"
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the shortcut",
                              "example": "Summarize Meeting"
                            },
                            "prompt": {
                              "type": "string",
                              "description": "AI prompt template",
                              "example": "Summarize the key points discussed in this meeting."
                            },
                            "surfaces": {
                              "type": "array",
                              "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "position": {
                                    "type": "integer",
                                    "description": "Position on the surface (1-10)",
                                    "example": 1
                                  },
                                  "surface": {
                                    "type": "string",
                                    "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                    "example": "HOME"
                                  }
                                },
                                "required": [
                                  "position",
                                  "surface"
                                ]
                              }
                            }
                          },
                          "required": [
                            "name",
                            "prompt"
                          ]
                        }
                      }
                    }
                  },
                  "templates": {
                    "type": "array",
                    "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing template (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "next_steps": {
                          "type": "array",
                          "description": "NextSteps defines the next steps to attach to this template with junction fields",
                          "items": {
                            "type": "object",
                            "properties": {
                              "autopilot": {
                                "type": "boolean",
                                "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                                "example": false
                              },
                              "next_step": {
                                "type": "object",
                                "description": "NextStep is the reference to the next step entity ($ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "SortOrder is the display order of the next step within the template",
                                "example": 1
                              }
                            },
                            "required": [
                              "next_step"
                            ]
                          }
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-template"
                            },
                            "agenda_items": {
                              "type": "array",
                              "description": "AgendaItems defines the template's agenda items",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string",
                                    "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "Description is an optional short description/subtitle",
                                    "example": "Review current quarter pipeline status"
                                  },
                                  "item_type": {
                                    "type": "string",
                                    "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                    "example": "DISCUSSION"
                                  },
                                  "restricted_to_leads": {
                                    "type": "boolean",
                                    "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                    "example": false
                                  },
                                  "sequence": {
                                    "type": "string",
                                    "description": "Sequence controls the display order",
                                    "example": "1"
                                  },
                                  "time_allocation_minutes": {
                                    "type": "number",
                                    "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                    "example": 15
                                  },
                                  "title": {
                                    "type": "string",
                                    "description": "Title is the agenda item's title",
                                    "example": "Pipeline Review"
                                  }
                                },
                                "required": [
                                  "item_type",
                                  "title"
                                ]
                              }
                            },
                            "backing_meeting_id": {
                              "type": "string",
                              "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the template",
                              "example": "Template for sales meetings"
                            },
                            "detail_level": {
                              "type": "string",
                              "description": "DetailLevel controls the granularity of meeting notes",
                              "enum": [
                                "BULLET_POINTS",
                                "STANDARD",
                                "VERBATIM"
                              ],
                              "example": "STANDARD"
                            },
                            "meeting_duration_seconds": {
                              "type": "integer",
                              "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                              "example": 3600
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the template",
                              "example": "Sales Meeting Template"
                            },
                            "participants": {
                              "type": "array",
                              "description": "Participants defines the template's default participants",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "email": {
                                    "type": "string",
                                    "description": "Email is the participant's email address",
                                    "example": "sarah@acme.com"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Name is the participant's display name",
                                    "example": "Sarah Chen"
                                  },
                                  "role": {
                                    "type": "string",
                                    "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                    "enum": [
                                      "EDITOR",
                                      "VIEWER"
                                    ],
                                    "example": "EDITOR"
                                  }
                                },
                                "required": [
                                  "email",
                                  "name",
                                  "role"
                                ]
                              }
                            },
                            "start_time_offset_seconds": {
                              "type": "integer",
                              "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                              "example": 36000
                            },
                            "title": {
                              "type": "string",
                              "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                              "example": "Weekly Sales Standup"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "toolkit_prompt": {
                    "type": "string",
                    "description": "Default AI persona/behavioral instructions for the toolkit"
                  }
                }
              },
              "name": {
                "type": "string",
                "example": "Sales Pipeline Toolkit"
              },
              "ownership_type": {
                "type": "string",
                "example": "PARTNER"
              },
              "partner_app_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "slug": {
                "type": "string",
                "example": "sales-pipeline"
              },
              "updated_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "version": {
                "type": "string",
                "example": "1.0.0"
              }
            }
          }
        },
        "400": {
          "description": "Invalid toolkit ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Toolkit not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) read of a single toolkit by `toolkitId`; 404 if unknown or\nowned by another app. Read-only."
    },
    "adminGetToolkitVersion": {
      "id": "adminGetToolkitVersion",
      "method": "GET",
      "path": "/v1/partner/admin/toolkits/{toolkitId}/versions/{versionId}",
      "summary": "Get a toolkit version",
      "description": "Retrieves a specific version for a toolkit owned by the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "description": "Version ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "changelog": {
                "type": "string",
                "example": "Added new features"
              },
              "created_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "created_by": {
                "type": "string",
                "example": "user-123"
              },
              "deprecated_at": {
                "type": "string",
                "example": "2023-06-01T00:00:00Z"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "manifest": {
                "type": "object",
                "properties": {
                  "action_buttons": {
                    "type": "array",
                    "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing action button (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-action-button"
                            },
                            "content_format": {
                              "type": "string",
                              "description": "Content format: rich_text, markdown, plain_text, html",
                              "enum": [
                                "rich_text",
                                "markdown",
                                "plain_text",
                                "html"
                              ],
                              "example": "plain_text"
                            },
                            "delivery_mechanism": {
                              "type": "string",
                              "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                              "enum": [
                                "clipboard",
                                "email",
                                "os_email_client",
                                "file_download",
                                "integration",
                                "webhook",
                                "redirect"
                              ],
                              "example": "webhook"
                            },
                            "file_format": {
                              "type": "string",
                              "description": "File format for file delivery",
                              "example": "pdf"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "Icon name from the vocabulary",
                              "example": "share"
                            },
                            "integration_type": {
                              "type": "string",
                              "description": "Integration type",
                              "example": "salesforce"
                            },
                            "is_default_for_next_step": {
                              "type": "boolean",
                              "description": "Whether this is the default action for a next step",
                              "example": false
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the action button",
                              "example": "Send to CRM"
                            },
                            "redirect_url": {
                              "type": "string",
                              "description": "Redirect URL for redirect delivery",
                              "example": "https://app.example.com/action"
                            },
                            "requires_connected_integration": {
                              "type": "boolean",
                              "description": "Whether this action requires a connected integration",
                              "example": false
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "Sort order for display",
                              "example": 1
                            },
                            "webhook_url": {
                              "type": "string",
                              "description": "Webhook URL for webhook delivery",
                              "example": "https://api.example.com/webhook"
                            }
                          },
                          "required": [
                            "content_format",
                            "delivery_mechanism",
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "next_steps": {
                    "type": "array",
                    "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "action_buttons": {
                          "type": "array",
                          "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                          "items": {
                            "type": "object",
                            "properties": {
                              "action_button": {
                                "type": "object",
                                "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "SortOrder is the display order of the action button within the next step",
                                "example": 1
                              }
                            },
                            "required": [
                              "action_button"
                            ]
                          }
                        },
                        "default_action_button": {
                          "type": "object",
                          "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "ID references an existing entity by its database ID",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "$ref": {
                              "type": "string",
                              "description": "Ref references an entity defined in the same manifest via its $id value",
                              "example": "my-next-step"
                            }
                          }
                        },
                        "id": {
                          "type": "string",
                          "description": "ID references an existing next step (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-next-step"
                            },
                            "ai_prompt": {
                              "type": "string",
                              "description": "AI prompt for AI-type next steps",
                              "example": "Generate an invoice..."
                            },
                            "color": {
                              "type": "string",
                              "description": "Color for display",
                              "example": "#FF5733"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the next step",
                              "example": "Generates an invoice from meeting notes"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "Icon name for display",
                              "example": "receipt"
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the next step",
                              "example": "Generate Invoice"
                            },
                            "redirect_url": {
                              "type": "string",
                              "description": "Redirect URL for redirect-type next steps",
                              "example": "https://partner.example.com/invoice"
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "Sort order for display",
                              "example": 1
                            },
                            "type": {
                              "type": "string",
                              "description": "Type of next step: \"ai\" or \"redirect\"",
                              "enum": [
                                "ai",
                                "redirect"
                              ],
                              "example": "ai"
                            }
                          },
                          "required": [
                            "name",
                            "type"
                          ]
                        }
                      }
                    }
                  },
                  "shortcuts": {
                    "type": "array",
                    "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-shortcut"
                            },
                            "color": {
                              "type": "string",
                              "description": "Color for display",
                              "example": "#4F46E5"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the shortcut",
                              "example": "Generates a concise meeting summary"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                              "example": "faLightbulb"
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the shortcut",
                              "example": "Summarize Meeting"
                            },
                            "prompt": {
                              "type": "string",
                              "description": "AI prompt template",
                              "example": "Summarize the key points discussed in this meeting."
                            },
                            "surfaces": {
                              "type": "array",
                              "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "position": {
                                    "type": "integer",
                                    "description": "Position on the surface (1-10)",
                                    "example": 1
                                  },
                                  "surface": {
                                    "type": "string",
                                    "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                    "example": "HOME"
                                  }
                                },
                                "required": [
                                  "position",
                                  "surface"
                                ]
                              }
                            }
                          },
                          "required": [
                            "name",
                            "prompt"
                          ]
                        }
                      }
                    }
                  },
                  "templates": {
                    "type": "array",
                    "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing template (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "next_steps": {
                          "type": "array",
                          "description": "NextSteps defines the next steps to attach to this template with junction fields",
                          "items": {
                            "type": "object",
                            "properties": {
                              "autopilot": {
                                "type": "boolean",
                                "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                                "example": false
                              },
                              "next_step": {
                                "type": "object",
                                "description": "NextStep is the reference to the next step entity ($ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "SortOrder is the display order of the next step within the template",
                                "example": 1
                              }
                            },
                            "required": [
                              "next_step"
                            ]
                          }
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-template"
                            },
                            "agenda_items": {
                              "type": "array",
                              "description": "AgendaItems defines the template's agenda items",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string",
                                    "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "Description is an optional short description/subtitle",
                                    "example": "Review current quarter pipeline status"
                                  },
                                  "item_type": {
                                    "type": "string",
                                    "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                    "example": "DISCUSSION"
                                  },
                                  "restricted_to_leads": {
                                    "type": "boolean",
                                    "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                    "example": false
                                  },
                                  "sequence": {
                                    "type": "string",
                                    "description": "Sequence controls the display order",
                                    "example": "1"
                                  },
                                  "time_allocation_minutes": {
                                    "type": "number",
                                    "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                    "example": 15
                                  },
                                  "title": {
                                    "type": "string",
                                    "description": "Title is the agenda item's title",
                                    "example": "Pipeline Review"
                                  }
                                },
                                "required": [
                                  "item_type",
                                  "title"
                                ]
                              }
                            },
                            "backing_meeting_id": {
                              "type": "string",
                              "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the template",
                              "example": "Template for sales meetings"
                            },
                            "detail_level": {
                              "type": "string",
                              "description": "DetailLevel controls the granularity of meeting notes",
                              "enum": [
                                "BULLET_POINTS",
                                "STANDARD",
                                "VERBATIM"
                              ],
                              "example": "STANDARD"
                            },
                            "meeting_duration_seconds": {
                              "type": "integer",
                              "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                              "example": 3600
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the template",
                              "example": "Sales Meeting Template"
                            },
                            "participants": {
                              "type": "array",
                              "description": "Participants defines the template's default participants",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "email": {
                                    "type": "string",
                                    "description": "Email is the participant's email address",
                                    "example": "sarah@acme.com"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Name is the participant's display name",
                                    "example": "Sarah Chen"
                                  },
                                  "role": {
                                    "type": "string",
                                    "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                    "enum": [
                                      "EDITOR",
                                      "VIEWER"
                                    ],
                                    "example": "EDITOR"
                                  }
                                },
                                "required": [
                                  "email",
                                  "name",
                                  "role"
                                ]
                              }
                            },
                            "start_time_offset_seconds": {
                              "type": "integer",
                              "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                              "example": 36000
                            },
                            "title": {
                              "type": "string",
                              "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                              "example": "Weekly Sales Standup"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "toolkit_prompt": {
                    "type": "string",
                    "description": "Default AI persona/behavioral instructions for the toolkit"
                  }
                }
              },
              "published_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "status": {
                "type": "string",
                "example": "DRAFT"
              },
              "toolkit_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "updated_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "version_label": {
                "type": "string",
                "example": "2.0.0"
              },
              "version_number": {
                "type": "integer",
                "example": 2
              }
            }
          }
        },
        "400": {
          "description": "Invalid parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Version not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) read of a specific toolkit version\n(`toolkitId`/`versionId`), including its draft/published state and manifest.\nRead-only."
    },
    "adminListToolkitInstallations": {
      "id": "adminListToolkitInstallations",
      "method": "GET",
      "path": "/v1/partner/admin/toolkits/{toolkitId}/installations",
      "summary": "List toolkit installations",
      "description": "Lists all installations of a toolkit owned by the authenticated partner app, including active and opted-out installations across the partner's connected workspaces. The response includes per-workspace installation details, summary counts (active, opted_out, never_installed), and the partner's total connected workspace count, supporting partner visibility into their toolkit's distribution footprint.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return (default 50, max 100)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of items to skip from the beginning (default 0)",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Installations on the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "installed_at": {
                      "type": "string",
                      "description": "Timestamp when the installation was created (active installations only)",
                      "example": "2026-04-15T10:30:00Z"
                    },
                    "status": {
                      "type": "object",
                      "description": "Installation status: \"active\" or \"opted_out\"",
                      "enum": [
                        "active",
                        "opted_out"
                      ],
                      "example": "active"
                    },
                    "uninstalled_at": {
                      "type": "string",
                      "description": "Timestamp when the workspace opted out (opted_out installations only)",
                      "example": "2026-05-01T14:00:00Z"
                    },
                    "version_label": {
                      "type": "string",
                      "description": "Human-readable version label of the installed toolkit version (active installations only)",
                      "example": "1.2.0"
                    },
                    "workspace_id": {
                      "type": "string",
                      "description": "ID of the workspace where the toolkit is (or was) installed",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "workspace_name": {
                      "type": "string",
                      "description": "Display name of the workspace",
                      "example": "Acme Corp"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "summary": {
                "type": "object",
                "description": "Aggregate counts across all partner workspaces (active, opted_out, never_installed)",
                "properties": {
                  "active": {
                    "type": "integer",
                    "description": "Number of workspaces with the toolkit currently installed",
                    "example": 142
                  },
                  "never_installed": {
                    "type": "integer",
                    "description": "Number of partner workspaces that have never installed the toolkit",
                    "example": 12
                  },
                  "opted_out": {
                    "type": "integer",
                    "description": "Number of workspaces that have opted out of the toolkit",
                    "example": 8
                  }
                }
              },
              "total_connected_workspaces": {
                "type": "integer",
                "description": "Total number of workspaces connected to the partner app",
                "example": 162
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Toolkit not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) paginated view of where a toolkit (`toolkitId`) is installed\nacross the partner's connected workspaces, including active and opted-out\ninstallations plus summary counts (active, opted_out, never_installed) and\nthe partner's total connected-workspace count. `limit` defaults to 50, max\n100. Read-only; gives distribution-footprint visibility."
    },
    "adminListToolkitVersions": {
      "id": "adminListToolkitVersions",
      "method": "GET",
      "path": "/v1/partner/admin/toolkits/{toolkitId}/versions",
      "summary": "List toolkit versions",
      "description": "Lists all versions for a toolkit owned by the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "changelog": {
                  "type": "string",
                  "example": "Added new features"
                },
                "created_at": {
                  "type": "string",
                  "example": "2023-01-01T00:00:00Z"
                },
                "created_by": {
                  "type": "string",
                  "example": "user-123"
                },
                "deprecated_at": {
                  "type": "string",
                  "example": "2023-06-01T00:00:00Z"
                },
                "id": {
                  "type": "string",
                  "example": "123e4567-e89b-12d3-a456-426614174000"
                },
                "manifest": {
                  "type": "object",
                  "properties": {
                    "action_buttons": {
                      "type": "array",
                      "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "ID references an existing action button (mutually exclusive with Spec)",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "spec": {
                            "type": "object",
                            "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                            "properties": {
                              "$id": {
                                "type": "string",
                                "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                "example": "my-action-button"
                              },
                              "content_format": {
                                "type": "string",
                                "description": "Content format: rich_text, markdown, plain_text, html",
                                "enum": [
                                  "rich_text",
                                  "markdown",
                                  "plain_text",
                                  "html"
                                ],
                                "example": "plain_text"
                              },
                              "delivery_mechanism": {
                                "type": "string",
                                "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                                "enum": [
                                  "clipboard",
                                  "email",
                                  "os_email_client",
                                  "file_download",
                                  "integration",
                                  "webhook",
                                  "redirect"
                                ],
                                "example": "webhook"
                              },
                              "file_format": {
                                "type": "string",
                                "description": "File format for file delivery",
                                "example": "pdf"
                              },
                              "icon_name": {
                                "type": "string",
                                "description": "Icon name from the vocabulary",
                                "example": "share"
                              },
                              "integration_type": {
                                "type": "string",
                                "description": "Integration type",
                                "example": "salesforce"
                              },
                              "is_default_for_next_step": {
                                "type": "boolean",
                                "description": "Whether this is the default action for a next step",
                                "example": false
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the action button",
                                "example": "Send to CRM"
                              },
                              "redirect_url": {
                                "type": "string",
                                "description": "Redirect URL for redirect delivery",
                                "example": "https://app.example.com/action"
                              },
                              "requires_connected_integration": {
                                "type": "boolean",
                                "description": "Whether this action requires a connected integration",
                                "example": false
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "Sort order for display",
                                "example": 1
                              },
                              "webhook_url": {
                                "type": "string",
                                "description": "Webhook URL for webhook delivery",
                                "example": "https://api.example.com/webhook"
                              }
                            },
                            "required": [
                              "content_format",
                              "delivery_mechanism",
                              "name"
                            ]
                          }
                        }
                      }
                    },
                    "next_steps": {
                      "type": "array",
                      "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                      "items": {
                        "type": "object",
                        "properties": {
                          "action_buttons": {
                            "type": "array",
                            "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                            "items": {
                              "type": "object",
                              "properties": {
                                "action_button": {
                                  "type": "object",
                                  "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                                  "properties": {
                                    "$id": {
                                      "type": "string",
                                      "description": "ID references an existing entity by its database ID",
                                      "example": "123e4567-e89b-12d3-a456-426614174000"
                                    },
                                    "$ref": {
                                      "type": "string",
                                      "description": "Ref references an entity defined in the same manifest via its $id value",
                                      "example": "my-next-step"
                                    }
                                  }
                                },
                                "sort_order": {
                                  "type": "integer",
                                  "description": "SortOrder is the display order of the action button within the next step",
                                  "example": 1
                                }
                              },
                              "required": [
                                "action_button"
                              ]
                            }
                          },
                          "default_action_button": {
                            "type": "object",
                            "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                            "properties": {
                              "$id": {
                                "type": "string",
                                "description": "ID references an existing entity by its database ID",
                                "example": "123e4567-e89b-12d3-a456-426614174000"
                              },
                              "$ref": {
                                "type": "string",
                                "description": "Ref references an entity defined in the same manifest via its $id value",
                                "example": "my-next-step"
                              }
                            }
                          },
                          "id": {
                            "type": "string",
                            "description": "ID references an existing next step (mutually exclusive with Spec)",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "spec": {
                            "type": "object",
                            "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                            "properties": {
                              "$id": {
                                "type": "string",
                                "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                "example": "my-next-step"
                              },
                              "ai_prompt": {
                                "type": "string",
                                "description": "AI prompt for AI-type next steps",
                                "example": "Generate an invoice..."
                              },
                              "color": {
                                "type": "string",
                                "description": "Color for display",
                                "example": "#FF5733"
                              },
                              "description": {
                                "type": "string",
                                "description": "Description of the next step",
                                "example": "Generates an invoice from meeting notes"
                              },
                              "icon_name": {
                                "type": "string",
                                "description": "Icon name for display",
                                "example": "receipt"
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the next step",
                                "example": "Generate Invoice"
                              },
                              "redirect_url": {
                                "type": "string",
                                "description": "Redirect URL for redirect-type next steps",
                                "example": "https://partner.example.com/invoice"
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "Sort order for display",
                                "example": 1
                              },
                              "type": {
                                "type": "string",
                                "description": "Type of next step: \"ai\" or \"redirect\"",
                                "enum": [
                                  "ai",
                                  "redirect"
                                ],
                                "example": "ai"
                              }
                            },
                            "required": [
                              "name",
                              "type"
                            ]
                          }
                        }
                      }
                    },
                    "shortcuts": {
                      "type": "array",
                      "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "spec": {
                            "type": "object",
                            "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                            "properties": {
                              "$id": {
                                "type": "string",
                                "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                "example": "my-shortcut"
                              },
                              "color": {
                                "type": "string",
                                "description": "Color for display",
                                "example": "#4F46E5"
                              },
                              "description": {
                                "type": "string",
                                "description": "Description of the shortcut",
                                "example": "Generates a concise meeting summary"
                              },
                              "icon_name": {
                                "type": "string",
                                "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                                "example": "faLightbulb"
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the shortcut",
                                "example": "Summarize Meeting"
                              },
                              "prompt": {
                                "type": "string",
                                "description": "AI prompt template",
                                "example": "Summarize the key points discussed in this meeting."
                              },
                              "surfaces": {
                                "type": "array",
                                "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "position": {
                                      "type": "integer",
                                      "description": "Position on the surface (1-10)",
                                      "example": 1
                                    },
                                    "surface": {
                                      "type": "string",
                                      "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                      "example": "HOME"
                                    }
                                  },
                                  "required": [
                                    "position",
                                    "surface"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "name",
                              "prompt"
                            ]
                          }
                        }
                      }
                    },
                    "templates": {
                      "type": "array",
                      "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "ID references an existing template (mutually exclusive with Spec)",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "next_steps": {
                            "type": "array",
                            "description": "NextSteps defines the next steps to attach to this template with junction fields",
                            "items": {
                              "type": "object",
                              "properties": {
                                "autopilot": {
                                  "type": "boolean",
                                  "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                                  "example": false
                                },
                                "next_step": {
                                  "type": "object",
                                  "description": "NextStep is the reference to the next step entity ($ref or $id)",
                                  "properties": {
                                    "$id": {
                                      "type": "string",
                                      "description": "ID references an existing entity by its database ID",
                                      "example": "123e4567-e89b-12d3-a456-426614174000"
                                    },
                                    "$ref": {
                                      "type": "string",
                                      "description": "Ref references an entity defined in the same manifest via its $id value",
                                      "example": "my-next-step"
                                    }
                                  }
                                },
                                "sort_order": {
                                  "type": "integer",
                                  "description": "SortOrder is the display order of the next step within the template",
                                  "example": 1
                                }
                              },
                              "required": [
                                "next_step"
                              ]
                            }
                          },
                          "spec": {
                            "type": "object",
                            "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                            "properties": {
                              "$id": {
                                "type": "string",
                                "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                "example": "my-template"
                              },
                              "agenda_items": {
                                "type": "array",
                                "description": "AgendaItems defines the template's agenda items",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "content": {
                                      "type": "string",
                                      "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                    },
                                    "description": {
                                      "type": "string",
                                      "description": "Description is an optional short description/subtitle",
                                      "example": "Review current quarter pipeline status"
                                    },
                                    "item_type": {
                                      "type": "string",
                                      "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                      "example": "DISCUSSION"
                                    },
                                    "restricted_to_leads": {
                                      "type": "boolean",
                                      "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                      "example": false
                                    },
                                    "sequence": {
                                      "type": "string",
                                      "description": "Sequence controls the display order",
                                      "example": "1"
                                    },
                                    "time_allocation_minutes": {
                                      "type": "number",
                                      "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                      "example": 15
                                    },
                                    "title": {
                                      "type": "string",
                                      "description": "Title is the agenda item's title",
                                      "example": "Pipeline Review"
                                    }
                                  },
                                  "required": [
                                    "item_type",
                                    "title"
                                  ]
                                }
                              },
                              "backing_meeting_id": {
                                "type": "string",
                                "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                                "example": "123e4567-e89b-12d3-a456-426614174000"
                              },
                              "description": {
                                "type": "string",
                                "description": "Description of the template",
                                "example": "Template for sales meetings"
                              },
                              "detail_level": {
                                "type": "string",
                                "description": "DetailLevel controls the granularity of meeting notes",
                                "enum": [
                                  "BULLET_POINTS",
                                  "STANDARD",
                                  "VERBATIM"
                                ],
                                "example": "STANDARD"
                              },
                              "meeting_duration_seconds": {
                                "type": "integer",
                                "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                                "example": 3600
                              },
                              "name": {
                                "type": "string",
                                "description": "Name of the template",
                                "example": "Sales Meeting Template"
                              },
                              "participants": {
                                "type": "array",
                                "description": "Participants defines the template's default participants",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "email": {
                                      "type": "string",
                                      "description": "Email is the participant's email address",
                                      "example": "sarah@acme.com"
                                    },
                                    "name": {
                                      "type": "string",
                                      "description": "Name is the participant's display name",
                                      "example": "Sarah Chen"
                                    },
                                    "role": {
                                      "type": "string",
                                      "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                      "enum": [
                                        "EDITOR",
                                        "VIEWER"
                                      ],
                                      "example": "EDITOR"
                                    }
                                  },
                                  "required": [
                                    "email",
                                    "name",
                                    "role"
                                  ]
                                }
                              },
                              "start_time_offset_seconds": {
                                "type": "integer",
                                "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                                "example": 36000
                              },
                              "title": {
                                "type": "string",
                                "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                                "example": "Weekly Sales Standup"
                              }
                            },
                            "required": [
                              "name"
                            ]
                          }
                        }
                      }
                    },
                    "toolkit_prompt": {
                      "type": "string",
                      "description": "Default AI persona/behavioral instructions for the toolkit"
                    }
                  }
                },
                "published_at": {
                  "type": "string",
                  "example": "2023-01-01T00:00:00Z"
                },
                "status": {
                  "type": "string",
                  "example": "DRAFT"
                },
                "toolkit_id": {
                  "type": "string",
                  "example": "123e4567-e89b-12d3-a456-426614174001"
                },
                "updated_at": {
                  "type": "string",
                  "example": "2023-01-01T00:00:00Z"
                },
                "version_label": {
                  "type": "string",
                  "example": "2.0.0"
                },
                "version_number": {
                  "type": "integer",
                  "example": 2
                }
              }
            }
          }
        },
        "400": {
          "description": "Invalid toolkit ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Toolkit not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) list of all versions for a toolkit (`toolkitId`), including\ndrafts and published versions. Read-only; version IDs feed the\nget/update/discard/publish operations."
    },
    "adminListToolkits": {
      "id": "adminListToolkits",
      "method": "GET",
      "path": "/v1/partner/admin/toolkits",
      "summary": "Get toolkits",
      "description": "Retrieves all toolkits for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Limit",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "auto_install_on_new_workspaces": {
                      "type": "boolean",
                      "example": true
                    },
                    "auto_propagate": {
                      "type": "boolean",
                      "example": true
                    },
                    "created_at": {
                      "type": "string",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "description": {
                      "type": "string",
                      "example": "Complete sales workflow toolkit"
                    },
                    "id": {
                      "type": "string",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "is_active": {
                      "type": "boolean",
                      "example": true
                    },
                    "manifest": {
                      "type": "object",
                      "properties": {
                        "action_buttons": {
                          "type": "array",
                          "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID references an existing action button (mutually exclusive with Spec)",
                                "example": "123e4567-e89b-12d3-a456-426614174000"
                              },
                              "spec": {
                                "type": "object",
                                "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                    "example": "my-action-button"
                                  },
                                  "content_format": {
                                    "type": "string",
                                    "description": "Content format: rich_text, markdown, plain_text, html",
                                    "enum": [
                                      "rich_text",
                                      "markdown",
                                      "plain_text",
                                      "html"
                                    ],
                                    "example": "plain_text"
                                  },
                                  "delivery_mechanism": {
                                    "type": "string",
                                    "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                                    "enum": [
                                      "clipboard",
                                      "email",
                                      "os_email_client",
                                      "file_download",
                                      "integration",
                                      "webhook",
                                      "redirect"
                                    ],
                                    "example": "webhook"
                                  },
                                  "file_format": {
                                    "type": "string",
                                    "description": "File format for file delivery",
                                    "example": "pdf"
                                  },
                                  "icon_name": {
                                    "type": "string",
                                    "description": "Icon name from the vocabulary",
                                    "example": "share"
                                  },
                                  "integration_type": {
                                    "type": "string",
                                    "description": "Integration type",
                                    "example": "salesforce"
                                  },
                                  "is_default_for_next_step": {
                                    "type": "boolean",
                                    "description": "Whether this is the default action for a next step",
                                    "example": false
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Name of the action button",
                                    "example": "Send to CRM"
                                  },
                                  "redirect_url": {
                                    "type": "string",
                                    "description": "Redirect URL for redirect delivery",
                                    "example": "https://app.example.com/action"
                                  },
                                  "requires_connected_integration": {
                                    "type": "boolean",
                                    "description": "Whether this action requires a connected integration",
                                    "example": false
                                  },
                                  "sort_order": {
                                    "type": "integer",
                                    "description": "Sort order for display",
                                    "example": 1
                                  },
                                  "webhook_url": {
                                    "type": "string",
                                    "description": "Webhook URL for webhook delivery",
                                    "example": "https://api.example.com/webhook"
                                  }
                                },
                                "required": [
                                  "content_format",
                                  "delivery_mechanism",
                                  "name"
                                ]
                              }
                            }
                          }
                        },
                        "next_steps": {
                          "type": "array",
                          "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                          "items": {
                            "type": "object",
                            "properties": {
                              "action_buttons": {
                                "type": "array",
                                "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "action_button": {
                                      "type": "object",
                                      "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                                      "properties": {
                                        "$id": {
                                          "type": "string",
                                          "description": "ID references an existing entity by its database ID",
                                          "example": "123e4567-e89b-12d3-a456-426614174000"
                                        },
                                        "$ref": {
                                          "type": "string",
                                          "description": "Ref references an entity defined in the same manifest via its $id value",
                                          "example": "my-next-step"
                                        }
                                      }
                                    },
                                    "sort_order": {
                                      "type": "integer",
                                      "description": "SortOrder is the display order of the action button within the next step",
                                      "example": 1
                                    }
                                  },
                                  "required": [
                                    "action_button"
                                  ]
                                }
                              },
                              "default_action_button": {
                                "type": "object",
                                "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "id": {
                                "type": "string",
                                "description": "ID references an existing next step (mutually exclusive with Spec)",
                                "example": "123e4567-e89b-12d3-a456-426614174000"
                              },
                              "spec": {
                                "type": "object",
                                "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                    "example": "my-next-step"
                                  },
                                  "ai_prompt": {
                                    "type": "string",
                                    "description": "AI prompt for AI-type next steps",
                                    "example": "Generate an invoice..."
                                  },
                                  "color": {
                                    "type": "string",
                                    "description": "Color for display",
                                    "example": "#FF5733"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "Description of the next step",
                                    "example": "Generates an invoice from meeting notes"
                                  },
                                  "icon_name": {
                                    "type": "string",
                                    "description": "Icon name for display",
                                    "example": "receipt"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Name of the next step",
                                    "example": "Generate Invoice"
                                  },
                                  "redirect_url": {
                                    "type": "string",
                                    "description": "Redirect URL for redirect-type next steps",
                                    "example": "https://partner.example.com/invoice"
                                  },
                                  "sort_order": {
                                    "type": "integer",
                                    "description": "Sort order for display",
                                    "example": 1
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "Type of next step: \"ai\" or \"redirect\"",
                                    "enum": [
                                      "ai",
                                      "redirect"
                                    ],
                                    "example": "ai"
                                  }
                                },
                                "required": [
                                  "name",
                                  "type"
                                ]
                              }
                            }
                          }
                        },
                        "shortcuts": {
                          "type": "array",
                          "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                                "example": "123e4567-e89b-12d3-a456-426614174000"
                              },
                              "spec": {
                                "type": "object",
                                "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                    "example": "my-shortcut"
                                  },
                                  "color": {
                                    "type": "string",
                                    "description": "Color for display",
                                    "example": "#4F46E5"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "Description of the shortcut",
                                    "example": "Generates a concise meeting summary"
                                  },
                                  "icon_name": {
                                    "type": "string",
                                    "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                                    "example": "faLightbulb"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Name of the shortcut",
                                    "example": "Summarize Meeting"
                                  },
                                  "prompt": {
                                    "type": "string",
                                    "description": "AI prompt template",
                                    "example": "Summarize the key points discussed in this meeting."
                                  },
                                  "surfaces": {
                                    "type": "array",
                                    "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "position": {
                                          "type": "integer",
                                          "description": "Position on the surface (1-10)",
                                          "example": 1
                                        },
                                        "surface": {
                                          "type": "string",
                                          "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                          "example": "HOME"
                                        }
                                      },
                                      "required": [
                                        "position",
                                        "surface"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "name",
                                  "prompt"
                                ]
                              }
                            }
                          }
                        },
                        "templates": {
                          "type": "array",
                          "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "ID references an existing template (mutually exclusive with Spec)",
                                "example": "123e4567-e89b-12d3-a456-426614174000"
                              },
                              "next_steps": {
                                "type": "array",
                                "description": "NextSteps defines the next steps to attach to this template with junction fields",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "autopilot": {
                                      "type": "boolean",
                                      "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                                      "example": false
                                    },
                                    "next_step": {
                                      "type": "object",
                                      "description": "NextStep is the reference to the next step entity ($ref or $id)",
                                      "properties": {
                                        "$id": {
                                          "type": "string",
                                          "description": "ID references an existing entity by its database ID",
                                          "example": "123e4567-e89b-12d3-a456-426614174000"
                                        },
                                        "$ref": {
                                          "type": "string",
                                          "description": "Ref references an entity defined in the same manifest via its $id value",
                                          "example": "my-next-step"
                                        }
                                      }
                                    },
                                    "sort_order": {
                                      "type": "integer",
                                      "description": "SortOrder is the display order of the next step within the template",
                                      "example": 1
                                    }
                                  },
                                  "required": [
                                    "next_step"
                                  ]
                                }
                              },
                              "spec": {
                                "type": "object",
                                "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                                    "example": "my-template"
                                  },
                                  "agenda_items": {
                                    "type": "array",
                                    "description": "AgendaItems defines the template's agenda items",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "content": {
                                          "type": "string",
                                          "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                        },
                                        "description": {
                                          "type": "string",
                                          "description": "Description is an optional short description/subtitle",
                                          "example": "Review current quarter pipeline status"
                                        },
                                        "item_type": {
                                          "type": "string",
                                          "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                          "example": "DISCUSSION"
                                        },
                                        "restricted_to_leads": {
                                          "type": "boolean",
                                          "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                          "example": false
                                        },
                                        "sequence": {
                                          "type": "string",
                                          "description": "Sequence controls the display order",
                                          "example": "1"
                                        },
                                        "time_allocation_minutes": {
                                          "type": "number",
                                          "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                          "example": 15
                                        },
                                        "title": {
                                          "type": "string",
                                          "description": "Title is the agenda item's title",
                                          "example": "Pipeline Review"
                                        }
                                      },
                                      "required": [
                                        "item_type",
                                        "title"
                                      ]
                                    }
                                  },
                                  "backing_meeting_id": {
                                    "type": "string",
                                    "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "Description of the template",
                                    "example": "Template for sales meetings"
                                  },
                                  "detail_level": {
                                    "type": "string",
                                    "description": "DetailLevel controls the granularity of meeting notes",
                                    "enum": [
                                      "BULLET_POINTS",
                                      "STANDARD",
                                      "VERBATIM"
                                    ],
                                    "example": "STANDARD"
                                  },
                                  "meeting_duration_seconds": {
                                    "type": "integer",
                                    "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                                    "example": 3600
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Name of the template",
                                    "example": "Sales Meeting Template"
                                  },
                                  "participants": {
                                    "type": "array",
                                    "description": "Participants defines the template's default participants",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "email": {
                                          "type": "string",
                                          "description": "Email is the participant's email address",
                                          "example": "sarah@acme.com"
                                        },
                                        "name": {
                                          "type": "string",
                                          "description": "Name is the participant's display name",
                                          "example": "Sarah Chen"
                                        },
                                        "role": {
                                          "type": "string",
                                          "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                          "enum": [
                                            "EDITOR",
                                            "VIEWER"
                                          ],
                                          "example": "EDITOR"
                                        }
                                      },
                                      "required": [
                                        "email",
                                        "name",
                                        "role"
                                      ]
                                    }
                                  },
                                  "start_time_offset_seconds": {
                                    "type": "integer",
                                    "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                                    "example": 36000
                                  },
                                  "title": {
                                    "type": "string",
                                    "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                                    "example": "Weekly Sales Standup"
                                  }
                                },
                                "required": [
                                  "name"
                                ]
                              }
                            }
                          }
                        },
                        "toolkit_prompt": {
                          "type": "string",
                          "description": "Default AI persona/behavioral instructions for the toolkit"
                        }
                      }
                    },
                    "name": {
                      "type": "string",
                      "example": "Sales Pipeline Toolkit"
                    },
                    "ownership_type": {
                      "type": "string",
                      "example": "PARTNER"
                    },
                    "partner_app_id": {
                      "type": "string",
                      "example": "123e4567-e89b-12d3-a456-426614174001"
                    },
                    "slug": {
                      "type": "string",
                      "example": "sales-pipeline"
                    },
                    "updated_at": {
                      "type": "string",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "version": {
                      "type": "string",
                      "example": "1.0.0"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) paginated list of the partner app's toolkits via\n`limit`/`offset`. Scoped to the calling app. Read-only; toolkit IDs feed the\nget/update/delete, version, and installation operations."
    },
    "adminPublishToolkitVersion": {
      "id": "adminPublishToolkitVersion",
      "method": "POST",
      "path": "/v1/partner/admin/toolkits/{toolkitId}/versions/{versionId}/publish",
      "summary": "Publish a toolkit version",
      "description": "Transitions a draft version to PUBLISHED status. Deprecates any previously published version.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "description": "Version ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Version published",
          "has_schema": false
        },
        "400": {
          "description": "Version is not in draft status",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Version not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key) that publishes a draft toolkit version\n(`toolkitId`/`versionId`), making it the live version available for\ninstallation. Publishing is a state transition on an existing draft; a\npublished version becomes immutable. Depending on the toolkit's propagation\nsettings this can trigger installation/upgrade across connected workspaces.\nAccepts an optional `Idempotency-Key`."
    },
    "adminRepublishToolkitVersion": {
      "id": "adminRepublishToolkitVersion",
      "method": "POST",
      "path": "/v1/partner/admin/toolkits/{toolkitId}/versions/{versionId}/republish",
      "summary": "Republish a toolkit version",
      "description": "Transitions a deprecated version back to PUBLISHED status. Deprecates any currently published version.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "description": "Version ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Version republished",
          "has_schema": false
        },
        "400": {
          "description": "Version is not in deprecated status",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Version not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key) that republishes a previously published toolkit version\n(`toolkitId`/`versionId`) — e.g. to re-trigger propagation to workspaces.\nOperates on an already-published version. Accepts an optional `Idempotency-\nKey`."
    },
    "adminUpdateToolkit": {
      "id": "adminUpdateToolkit",
      "method": "PATCH",
      "path": "/v1/partner/admin/toolkits/{toolkitId}",
      "summary": "Update a toolkit",
      "description": "Updates an existing toolkit's metadata (name, description, is_active) and propagation\nsettings (auto_propagate, auto_install_on_new_workspaces) for the authenticated partner app.\nAll fields are optional; only fields explicitly supplied in the request body are updated\n(true PATCH semantics). The 'manifest' and 'version' fields are deprecated and no longer\naccepted; use the toolkit versioning API instead.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Toolkit update request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "auto_install_on_new_workspaces": {
              "type": "boolean",
              "description": "AutoInstallOnNewWorkspaces, when set, controls whether the toolkit is automatically\ninstalled on newly provisioned partner workspaces. Pointer semantics preserve\ntrue PATCH behavior — only provided fields are updated.",
              "example": true
            },
            "auto_propagate": {
              "type": "boolean",
              "description": "AutoPropagate, when set, controls whether newly published toolkit versions are\nautomatically propagated to existing installations. Pointer semantics preserve\ntrue PATCH behavior — only provided fields are updated.",
              "example": true
            },
            "description": {
              "type": "string",
              "example": "Updated description"
            },
            "is_active": {
              "type": "boolean"
            },
            "manifest": {
              "type": "object",
              "description": "Deprecated: Manifest is no longer accepted via this endpoint. Use the toolkit versioning\nAPI instead: POST /v1/partner/admin/toolkits/{toolkitId}/versions to create a draft,\nthen POST /v1/partner/admin/toolkits/{toolkitId}/versions/{versionId}/publish to publish it.\nProviding this field will return HTTP 409 Conflict.",
              "properties": {
                "action_buttons": {
                  "type": "array",
                  "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID references an existing action button (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-action-button"
                          },
                          "content_format": {
                            "type": "string",
                            "description": "Content format: rich_text, markdown, plain_text, html",
                            "enum": [
                              "rich_text",
                              "markdown",
                              "plain_text",
                              "html"
                            ],
                            "example": "plain_text"
                          },
                          "delivery_mechanism": {
                            "type": "string",
                            "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                            "enum": [
                              "clipboard",
                              "email",
                              "os_email_client",
                              "file_download",
                              "integration",
                              "webhook",
                              "redirect"
                            ],
                            "example": "webhook"
                          },
                          "file_format": {
                            "type": "string",
                            "description": "File format for file delivery",
                            "example": "pdf"
                          },
                          "icon_name": {
                            "type": "string",
                            "description": "Icon name from the vocabulary",
                            "example": "share"
                          },
                          "integration_type": {
                            "type": "string",
                            "description": "Integration type",
                            "example": "salesforce"
                          },
                          "is_default_for_next_step": {
                            "type": "boolean",
                            "description": "Whether this is the default action for a next step",
                            "example": false
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the action button",
                            "example": "Send to CRM"
                          },
                          "redirect_url": {
                            "type": "string",
                            "description": "Redirect URL for redirect delivery",
                            "example": "https://app.example.com/action"
                          },
                          "requires_connected_integration": {
                            "type": "boolean",
                            "description": "Whether this action requires a connected integration",
                            "example": false
                          },
                          "sort_order": {
                            "type": "integer",
                            "description": "Sort order for display",
                            "example": 1
                          },
                          "webhook_url": {
                            "type": "string",
                            "description": "Webhook URL for webhook delivery",
                            "example": "https://api.example.com/webhook"
                          }
                        },
                        "required": [
                          "content_format",
                          "delivery_mechanism",
                          "name"
                        ]
                      }
                    }
                  }
                },
                "next_steps": {
                  "type": "array",
                  "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "action_buttons": {
                        "type": "array",
                        "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                        "items": {
                          "type": "object",
                          "properties": {
                            "action_button": {
                              "type": "object",
                              "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "ID references an existing entity by its database ID",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "$ref": {
                                  "type": "string",
                                  "description": "Ref references an entity defined in the same manifest via its $id value",
                                  "example": "my-next-step"
                                }
                              }
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "SortOrder is the display order of the action button within the next step",
                              "example": 1
                            }
                          },
                          "required": [
                            "action_button"
                          ]
                        }
                      },
                      "default_action_button": {
                        "type": "object",
                        "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "ID references an existing entity by its database ID",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "$ref": {
                            "type": "string",
                            "description": "Ref references an entity defined in the same manifest via its $id value",
                            "example": "my-next-step"
                          }
                        }
                      },
                      "id": {
                        "type": "string",
                        "description": "ID references an existing next step (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-next-step"
                          },
                          "ai_prompt": {
                            "type": "string",
                            "description": "AI prompt for AI-type next steps",
                            "example": "Generate an invoice..."
                          },
                          "color": {
                            "type": "string",
                            "description": "Color for display",
                            "example": "#FF5733"
                          },
                          "description": {
                            "type": "string",
                            "description": "Description of the next step",
                            "example": "Generates an invoice from meeting notes"
                          },
                          "icon_name": {
                            "type": "string",
                            "description": "Icon name for display",
                            "example": "receipt"
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the next step",
                            "example": "Generate Invoice"
                          },
                          "redirect_url": {
                            "type": "string",
                            "description": "Redirect URL for redirect-type next steps",
                            "example": "https://partner.example.com/invoice"
                          },
                          "sort_order": {
                            "type": "integer",
                            "description": "Sort order for display",
                            "example": 1
                          },
                          "type": {
                            "type": "string",
                            "description": "Type of next step: \"ai\" or \"redirect\"",
                            "enum": [
                              "ai",
                              "redirect"
                            ],
                            "example": "ai"
                          }
                        },
                        "required": [
                          "name",
                          "type"
                        ]
                      }
                    }
                  }
                },
                "shortcuts": {
                  "type": "array",
                  "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-shortcut"
                          },
                          "color": {
                            "type": "string",
                            "description": "Color for display",
                            "example": "#4F46E5"
                          },
                          "description": {
                            "type": "string",
                            "description": "Description of the shortcut",
                            "example": "Generates a concise meeting summary"
                          },
                          "icon_name": {
                            "type": "string",
                            "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                            "example": "faLightbulb"
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the shortcut",
                            "example": "Summarize Meeting"
                          },
                          "prompt": {
                            "type": "string",
                            "description": "AI prompt template",
                            "example": "Summarize the key points discussed in this meeting."
                          },
                          "surfaces": {
                            "type": "array",
                            "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                            "items": {
                              "type": "object",
                              "properties": {
                                "position": {
                                  "type": "integer",
                                  "description": "Position on the surface (1-10)",
                                  "example": 1
                                },
                                "surface": {
                                  "type": "string",
                                  "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                  "example": "HOME"
                                }
                              },
                              "required": [
                                "position",
                                "surface"
                              ]
                            }
                          }
                        },
                        "required": [
                          "name",
                          "prompt"
                        ]
                      }
                    }
                  }
                },
                "templates": {
                  "type": "array",
                  "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID references an existing template (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "next_steps": {
                        "type": "array",
                        "description": "NextSteps defines the next steps to attach to this template with junction fields",
                        "items": {
                          "type": "object",
                          "properties": {
                            "autopilot": {
                              "type": "boolean",
                              "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                              "example": false
                            },
                            "next_step": {
                              "type": "object",
                              "description": "NextStep is the reference to the next step entity ($ref or $id)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "ID references an existing entity by its database ID",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "$ref": {
                                  "type": "string",
                                  "description": "Ref references an entity defined in the same manifest via its $id value",
                                  "example": "my-next-step"
                                }
                              }
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "SortOrder is the display order of the next step within the template",
                              "example": 1
                            }
                          },
                          "required": [
                            "next_step"
                          ]
                        }
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-template"
                          },
                          "agenda_items": {
                            "type": "array",
                            "description": "AgendaItems defines the template's agenda items",
                            "items": {
                              "type": "object",
                              "properties": {
                                "content": {
                                  "type": "string",
                                  "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description is an optional short description/subtitle",
                                  "example": "Review current quarter pipeline status"
                                },
                                "item_type": {
                                  "type": "string",
                                  "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                  "example": "DISCUSSION"
                                },
                                "restricted_to_leads": {
                                  "type": "boolean",
                                  "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                  "example": false
                                },
                                "sequence": {
                                  "type": "string",
                                  "description": "Sequence controls the display order",
                                  "example": "1"
                                },
                                "time_allocation_minutes": {
                                  "type": "number",
                                  "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                  "example": 15
                                },
                                "title": {
                                  "type": "string",
                                  "description": "Title is the agenda item's title",
                                  "example": "Pipeline Review"
                                }
                              },
                              "required": [
                                "item_type",
                                "title"
                              ]
                            }
                          },
                          "backing_meeting_id": {
                            "type": "string",
                            "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "description": {
                            "type": "string",
                            "description": "Description of the template",
                            "example": "Template for sales meetings"
                          },
                          "detail_level": {
                            "type": "string",
                            "description": "DetailLevel controls the granularity of meeting notes",
                            "enum": [
                              "BULLET_POINTS",
                              "STANDARD",
                              "VERBATIM"
                            ],
                            "example": "STANDARD"
                          },
                          "meeting_duration_seconds": {
                            "type": "integer",
                            "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                            "example": 3600
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the template",
                            "example": "Sales Meeting Template"
                          },
                          "participants": {
                            "type": "array",
                            "description": "Participants defines the template's default participants",
                            "items": {
                              "type": "object",
                              "properties": {
                                "email": {
                                  "type": "string",
                                  "description": "Email is the participant's email address",
                                  "example": "sarah@acme.com"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name is the participant's display name",
                                  "example": "Sarah Chen"
                                },
                                "role": {
                                  "type": "string",
                                  "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                  "enum": [
                                    "EDITOR",
                                    "VIEWER"
                                  ],
                                  "example": "EDITOR"
                                }
                              },
                              "required": [
                                "email",
                                "name",
                                "role"
                              ]
                            }
                          },
                          "start_time_offset_seconds": {
                            "type": "integer",
                            "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                            "example": 36000
                          },
                          "title": {
                            "type": "string",
                            "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                            "example": "Weekly Sales Standup"
                          }
                        },
                        "required": [
                          "name"
                        ]
                      }
                    }
                  }
                },
                "toolkit_prompt": {
                  "type": "string",
                  "description": "Default AI persona/behavioral instructions for the toolkit"
                }
              }
            },
            "name": {
              "type": "string",
              "example": "Updated Toolkit Name"
            },
            "version": {
              "type": "string",
              "description": "Deprecated: Version is no longer accepted via this endpoint. Use the toolkit versioning\nAPI instead: POST /v1/partner/admin/toolkits/{toolkitId}/versions to create a draft,\nthen POST /v1/partner/admin/toolkits/{toolkitId}/versions/{versionId}/publish to publish it.\nProviding this field will return HTTP 409 Conflict.",
              "example": "1.1.0"
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "auto_install_on_new_workspaces": {
                "type": "boolean",
                "example": true
              },
              "auto_propagate": {
                "type": "boolean",
                "example": true
              },
              "created_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "example": "Complete sales workflow toolkit"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "is_active": {
                "type": "boolean",
                "example": true
              },
              "manifest": {
                "type": "object",
                "properties": {
                  "action_buttons": {
                    "type": "array",
                    "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing action button (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-action-button"
                            },
                            "content_format": {
                              "type": "string",
                              "description": "Content format: rich_text, markdown, plain_text, html",
                              "enum": [
                                "rich_text",
                                "markdown",
                                "plain_text",
                                "html"
                              ],
                              "example": "plain_text"
                            },
                            "delivery_mechanism": {
                              "type": "string",
                              "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                              "enum": [
                                "clipboard",
                                "email",
                                "os_email_client",
                                "file_download",
                                "integration",
                                "webhook",
                                "redirect"
                              ],
                              "example": "webhook"
                            },
                            "file_format": {
                              "type": "string",
                              "description": "File format for file delivery",
                              "example": "pdf"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "Icon name from the vocabulary",
                              "example": "share"
                            },
                            "integration_type": {
                              "type": "string",
                              "description": "Integration type",
                              "example": "salesforce"
                            },
                            "is_default_for_next_step": {
                              "type": "boolean",
                              "description": "Whether this is the default action for a next step",
                              "example": false
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the action button",
                              "example": "Send to CRM"
                            },
                            "redirect_url": {
                              "type": "string",
                              "description": "Redirect URL for redirect delivery",
                              "example": "https://app.example.com/action"
                            },
                            "requires_connected_integration": {
                              "type": "boolean",
                              "description": "Whether this action requires a connected integration",
                              "example": false
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "Sort order for display",
                              "example": 1
                            },
                            "webhook_url": {
                              "type": "string",
                              "description": "Webhook URL for webhook delivery",
                              "example": "https://api.example.com/webhook"
                            }
                          },
                          "required": [
                            "content_format",
                            "delivery_mechanism",
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "next_steps": {
                    "type": "array",
                    "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "action_buttons": {
                          "type": "array",
                          "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                          "items": {
                            "type": "object",
                            "properties": {
                              "action_button": {
                                "type": "object",
                                "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "SortOrder is the display order of the action button within the next step",
                                "example": 1
                              }
                            },
                            "required": [
                              "action_button"
                            ]
                          }
                        },
                        "default_action_button": {
                          "type": "object",
                          "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "ID references an existing entity by its database ID",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "$ref": {
                              "type": "string",
                              "description": "Ref references an entity defined in the same manifest via its $id value",
                              "example": "my-next-step"
                            }
                          }
                        },
                        "id": {
                          "type": "string",
                          "description": "ID references an existing next step (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-next-step"
                            },
                            "ai_prompt": {
                              "type": "string",
                              "description": "AI prompt for AI-type next steps",
                              "example": "Generate an invoice..."
                            },
                            "color": {
                              "type": "string",
                              "description": "Color for display",
                              "example": "#FF5733"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the next step",
                              "example": "Generates an invoice from meeting notes"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "Icon name for display",
                              "example": "receipt"
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the next step",
                              "example": "Generate Invoice"
                            },
                            "redirect_url": {
                              "type": "string",
                              "description": "Redirect URL for redirect-type next steps",
                              "example": "https://partner.example.com/invoice"
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "Sort order for display",
                              "example": 1
                            },
                            "type": {
                              "type": "string",
                              "description": "Type of next step: \"ai\" or \"redirect\"",
                              "enum": [
                                "ai",
                                "redirect"
                              ],
                              "example": "ai"
                            }
                          },
                          "required": [
                            "name",
                            "type"
                          ]
                        }
                      }
                    }
                  },
                  "shortcuts": {
                    "type": "array",
                    "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-shortcut"
                            },
                            "color": {
                              "type": "string",
                              "description": "Color for display",
                              "example": "#4F46E5"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the shortcut",
                              "example": "Generates a concise meeting summary"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                              "example": "faLightbulb"
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the shortcut",
                              "example": "Summarize Meeting"
                            },
                            "prompt": {
                              "type": "string",
                              "description": "AI prompt template",
                              "example": "Summarize the key points discussed in this meeting."
                            },
                            "surfaces": {
                              "type": "array",
                              "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "position": {
                                    "type": "integer",
                                    "description": "Position on the surface (1-10)",
                                    "example": 1
                                  },
                                  "surface": {
                                    "type": "string",
                                    "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                    "example": "HOME"
                                  }
                                },
                                "required": [
                                  "position",
                                  "surface"
                                ]
                              }
                            }
                          },
                          "required": [
                            "name",
                            "prompt"
                          ]
                        }
                      }
                    }
                  },
                  "templates": {
                    "type": "array",
                    "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing template (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "next_steps": {
                          "type": "array",
                          "description": "NextSteps defines the next steps to attach to this template with junction fields",
                          "items": {
                            "type": "object",
                            "properties": {
                              "autopilot": {
                                "type": "boolean",
                                "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                                "example": false
                              },
                              "next_step": {
                                "type": "object",
                                "description": "NextStep is the reference to the next step entity ($ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "SortOrder is the display order of the next step within the template",
                                "example": 1
                              }
                            },
                            "required": [
                              "next_step"
                            ]
                          }
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-template"
                            },
                            "agenda_items": {
                              "type": "array",
                              "description": "AgendaItems defines the template's agenda items",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string",
                                    "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "Description is an optional short description/subtitle",
                                    "example": "Review current quarter pipeline status"
                                  },
                                  "item_type": {
                                    "type": "string",
                                    "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                    "example": "DISCUSSION"
                                  },
                                  "restricted_to_leads": {
                                    "type": "boolean",
                                    "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                    "example": false
                                  },
                                  "sequence": {
                                    "type": "string",
                                    "description": "Sequence controls the display order",
                                    "example": "1"
                                  },
                                  "time_allocation_minutes": {
                                    "type": "number",
                                    "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                    "example": 15
                                  },
                                  "title": {
                                    "type": "string",
                                    "description": "Title is the agenda item's title",
                                    "example": "Pipeline Review"
                                  }
                                },
                                "required": [
                                  "item_type",
                                  "title"
                                ]
                              }
                            },
                            "backing_meeting_id": {
                              "type": "string",
                              "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the template",
                              "example": "Template for sales meetings"
                            },
                            "detail_level": {
                              "type": "string",
                              "description": "DetailLevel controls the granularity of meeting notes",
                              "enum": [
                                "BULLET_POINTS",
                                "STANDARD",
                                "VERBATIM"
                              ],
                              "example": "STANDARD"
                            },
                            "meeting_duration_seconds": {
                              "type": "integer",
                              "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                              "example": 3600
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the template",
                              "example": "Sales Meeting Template"
                            },
                            "participants": {
                              "type": "array",
                              "description": "Participants defines the template's default participants",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "email": {
                                    "type": "string",
                                    "description": "Email is the participant's email address",
                                    "example": "sarah@acme.com"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Name is the participant's display name",
                                    "example": "Sarah Chen"
                                  },
                                  "role": {
                                    "type": "string",
                                    "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                    "enum": [
                                      "EDITOR",
                                      "VIEWER"
                                    ],
                                    "example": "EDITOR"
                                  }
                                },
                                "required": [
                                  "email",
                                  "name",
                                  "role"
                                ]
                              }
                            },
                            "start_time_offset_seconds": {
                              "type": "integer",
                              "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                              "example": 36000
                            },
                            "title": {
                              "type": "string",
                              "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                              "example": "Weekly Sales Standup"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "toolkit_prompt": {
                    "type": "string",
                    "description": "Default AI persona/behavioral instructions for the toolkit"
                  }
                }
              },
              "name": {
                "type": "string",
                "example": "Sales Pipeline Toolkit"
              },
              "ownership_type": {
                "type": "string",
                "example": "PARTNER"
              },
              "partner_app_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "slug": {
                "type": "string",
                "example": "sales-pipeline"
              },
              "updated_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "version": {
                "type": "string",
                "example": "1.0.0"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Toolkit not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "Deprecated fields provided — use the versioning API",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key) partial update (true PATCH) of a toolkit's metadata (`name`,\n`description`, `is_active`) and propagation settings (`auto_propagate`,\n`auto_install_on_new_workspaces`). Only fields present in the body change.\nThe legacy `manifest`/`version` fields are deprecated and rejected — use the\ntoolkit versioning API instead. Enabling auto-install/propagate changes\ndistribution to workspaces. 409 on conflicting state. Accepts an optional\n`Idempotency-Key`."
    },
    "adminUpdateToolkitVersion": {
      "id": "adminUpdateToolkitVersion",
      "method": "PATCH",
      "path": "/v1/partner/admin/toolkits/{toolkitId}/versions/{versionId}",
      "summary": "Update a draft toolkit version",
      "description": "Updates the manifest, label, or changelog of a draft version",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          },
          {
            "name": "versionId",
            "in": "path",
            "required": true,
            "description": "Version ID",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Version update request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "changelog": {
              "type": "string",
              "description": "Changelog describes the changes in this version",
              "example": "Bug fixes and improvements"
            },
            "manifest": {
              "type": "object",
              "description": "Manifest is the toolkit manifest for this version",
              "properties": {
                "action_buttons": {
                  "type": "array",
                  "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID references an existing action button (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-action-button"
                          },
                          "content_format": {
                            "type": "string",
                            "description": "Content format: rich_text, markdown, plain_text, html",
                            "enum": [
                              "rich_text",
                              "markdown",
                              "plain_text",
                              "html"
                            ],
                            "example": "plain_text"
                          },
                          "delivery_mechanism": {
                            "type": "string",
                            "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                            "enum": [
                              "clipboard",
                              "email",
                              "os_email_client",
                              "file_download",
                              "integration",
                              "webhook",
                              "redirect"
                            ],
                            "example": "webhook"
                          },
                          "file_format": {
                            "type": "string",
                            "description": "File format for file delivery",
                            "example": "pdf"
                          },
                          "icon_name": {
                            "type": "string",
                            "description": "Icon name from the vocabulary",
                            "example": "share"
                          },
                          "integration_type": {
                            "type": "string",
                            "description": "Integration type",
                            "example": "salesforce"
                          },
                          "is_default_for_next_step": {
                            "type": "boolean",
                            "description": "Whether this is the default action for a next step",
                            "example": false
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the action button",
                            "example": "Send to CRM"
                          },
                          "redirect_url": {
                            "type": "string",
                            "description": "Redirect URL for redirect delivery",
                            "example": "https://app.example.com/action"
                          },
                          "requires_connected_integration": {
                            "type": "boolean",
                            "description": "Whether this action requires a connected integration",
                            "example": false
                          },
                          "sort_order": {
                            "type": "integer",
                            "description": "Sort order for display",
                            "example": 1
                          },
                          "webhook_url": {
                            "type": "string",
                            "description": "Webhook URL for webhook delivery",
                            "example": "https://api.example.com/webhook"
                          }
                        },
                        "required": [
                          "content_format",
                          "delivery_mechanism",
                          "name"
                        ]
                      }
                    }
                  }
                },
                "next_steps": {
                  "type": "array",
                  "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "action_buttons": {
                        "type": "array",
                        "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                        "items": {
                          "type": "object",
                          "properties": {
                            "action_button": {
                              "type": "object",
                              "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "ID references an existing entity by its database ID",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "$ref": {
                                  "type": "string",
                                  "description": "Ref references an entity defined in the same manifest via its $id value",
                                  "example": "my-next-step"
                                }
                              }
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "SortOrder is the display order of the action button within the next step",
                              "example": 1
                            }
                          },
                          "required": [
                            "action_button"
                          ]
                        }
                      },
                      "default_action_button": {
                        "type": "object",
                        "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "ID references an existing entity by its database ID",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "$ref": {
                            "type": "string",
                            "description": "Ref references an entity defined in the same manifest via its $id value",
                            "example": "my-next-step"
                          }
                        }
                      },
                      "id": {
                        "type": "string",
                        "description": "ID references an existing next step (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-next-step"
                          },
                          "ai_prompt": {
                            "type": "string",
                            "description": "AI prompt for AI-type next steps",
                            "example": "Generate an invoice..."
                          },
                          "color": {
                            "type": "string",
                            "description": "Color for display",
                            "example": "#FF5733"
                          },
                          "description": {
                            "type": "string",
                            "description": "Description of the next step",
                            "example": "Generates an invoice from meeting notes"
                          },
                          "icon_name": {
                            "type": "string",
                            "description": "Icon name for display",
                            "example": "receipt"
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the next step",
                            "example": "Generate Invoice"
                          },
                          "redirect_url": {
                            "type": "string",
                            "description": "Redirect URL for redirect-type next steps",
                            "example": "https://partner.example.com/invoice"
                          },
                          "sort_order": {
                            "type": "integer",
                            "description": "Sort order for display",
                            "example": 1
                          },
                          "type": {
                            "type": "string",
                            "description": "Type of next step: \"ai\" or \"redirect\"",
                            "enum": [
                              "ai",
                              "redirect"
                            ],
                            "example": "ai"
                          }
                        },
                        "required": [
                          "name",
                          "type"
                        ]
                      }
                    }
                  }
                },
                "shortcuts": {
                  "type": "array",
                  "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-shortcut"
                          },
                          "color": {
                            "type": "string",
                            "description": "Color for display",
                            "example": "#4F46E5"
                          },
                          "description": {
                            "type": "string",
                            "description": "Description of the shortcut",
                            "example": "Generates a concise meeting summary"
                          },
                          "icon_name": {
                            "type": "string",
                            "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                            "example": "faLightbulb"
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the shortcut",
                            "example": "Summarize Meeting"
                          },
                          "prompt": {
                            "type": "string",
                            "description": "AI prompt template",
                            "example": "Summarize the key points discussed in this meeting."
                          },
                          "surfaces": {
                            "type": "array",
                            "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                            "items": {
                              "type": "object",
                              "properties": {
                                "position": {
                                  "type": "integer",
                                  "description": "Position on the surface (1-10)",
                                  "example": 1
                                },
                                "surface": {
                                  "type": "string",
                                  "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                  "example": "HOME"
                                }
                              },
                              "required": [
                                "position",
                                "surface"
                              ]
                            }
                          }
                        },
                        "required": [
                          "name",
                          "prompt"
                        ]
                      }
                    }
                  }
                },
                "templates": {
                  "type": "array",
                  "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID references an existing template (mutually exclusive with Spec)",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "next_steps": {
                        "type": "array",
                        "description": "NextSteps defines the next steps to attach to this template with junction fields",
                        "items": {
                          "type": "object",
                          "properties": {
                            "autopilot": {
                              "type": "boolean",
                              "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                              "example": false
                            },
                            "next_step": {
                              "type": "object",
                              "description": "NextStep is the reference to the next step entity ($ref or $id)",
                              "properties": {
                                "$id": {
                                  "type": "string",
                                  "description": "ID references an existing entity by its database ID",
                                  "example": "123e4567-e89b-12d3-a456-426614174000"
                                },
                                "$ref": {
                                  "type": "string",
                                  "description": "Ref references an entity defined in the same manifest via its $id value",
                                  "example": "my-next-step"
                                }
                              }
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "SortOrder is the display order of the next step within the template",
                              "example": 1
                            }
                          },
                          "required": [
                            "next_step"
                          ]
                        }
                      },
                      "spec": {
                        "type": "object",
                        "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                        "properties": {
                          "$id": {
                            "type": "string",
                            "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                            "example": "my-template"
                          },
                          "agenda_items": {
                            "type": "array",
                            "description": "AgendaItems defines the template's agenda items",
                            "items": {
                              "type": "object",
                              "properties": {
                                "content": {
                                  "type": "string",
                                  "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "Description is an optional short description/subtitle",
                                  "example": "Review current quarter pipeline status"
                                },
                                "item_type": {
                                  "type": "string",
                                  "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                  "example": "DISCUSSION"
                                },
                                "restricted_to_leads": {
                                  "type": "boolean",
                                  "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                  "example": false
                                },
                                "sequence": {
                                  "type": "string",
                                  "description": "Sequence controls the display order",
                                  "example": "1"
                                },
                                "time_allocation_minutes": {
                                  "type": "number",
                                  "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                  "example": 15
                                },
                                "title": {
                                  "type": "string",
                                  "description": "Title is the agenda item's title",
                                  "example": "Pipeline Review"
                                }
                              },
                              "required": [
                                "item_type",
                                "title"
                              ]
                            }
                          },
                          "backing_meeting_id": {
                            "type": "string",
                            "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "description": {
                            "type": "string",
                            "description": "Description of the template",
                            "example": "Template for sales meetings"
                          },
                          "detail_level": {
                            "type": "string",
                            "description": "DetailLevel controls the granularity of meeting notes",
                            "enum": [
                              "BULLET_POINTS",
                              "STANDARD",
                              "VERBATIM"
                            ],
                            "example": "STANDARD"
                          },
                          "meeting_duration_seconds": {
                            "type": "integer",
                            "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                            "example": 3600
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the template",
                            "example": "Sales Meeting Template"
                          },
                          "participants": {
                            "type": "array",
                            "description": "Participants defines the template's default participants",
                            "items": {
                              "type": "object",
                              "properties": {
                                "email": {
                                  "type": "string",
                                  "description": "Email is the participant's email address",
                                  "example": "sarah@acme.com"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "Name is the participant's display name",
                                  "example": "Sarah Chen"
                                },
                                "role": {
                                  "type": "string",
                                  "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                  "enum": [
                                    "EDITOR",
                                    "VIEWER"
                                  ],
                                  "example": "EDITOR"
                                }
                              },
                              "required": [
                                "email",
                                "name",
                                "role"
                              ]
                            }
                          },
                          "start_time_offset_seconds": {
                            "type": "integer",
                            "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                            "example": 36000
                          },
                          "title": {
                            "type": "string",
                            "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                            "example": "Weekly Sales Standup"
                          }
                        },
                        "required": [
                          "name"
                        ]
                      }
                    }
                  }
                },
                "toolkit_prompt": {
                  "type": "string",
                  "description": "Default AI persona/behavioral instructions for the toolkit"
                }
              }
            },
            "version_label": {
              "type": "string",
              "description": "VersionLabel is a human-readable label for this version",
              "example": "2.0.1"
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "changelog": {
                "type": "string",
                "example": "Added new features"
              },
              "created_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "created_by": {
                "type": "string",
                "example": "user-123"
              },
              "deprecated_at": {
                "type": "string",
                "example": "2023-06-01T00:00:00Z"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "manifest": {
                "type": "object",
                "properties": {
                  "action_buttons": {
                    "type": "array",
                    "description": "Action buttons included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing action button (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new action button to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-action-button"
                            },
                            "content_format": {
                              "type": "string",
                              "description": "Content format: rich_text, markdown, plain_text, html",
                              "enum": [
                                "rich_text",
                                "markdown",
                                "plain_text",
                                "html"
                              ],
                              "example": "plain_text"
                            },
                            "delivery_mechanism": {
                              "type": "string",
                              "description": "Delivery mechanism: clipboard, email, os_email_client, file_download, integration, webhook, redirect",
                              "enum": [
                                "clipboard",
                                "email",
                                "os_email_client",
                                "file_download",
                                "integration",
                                "webhook",
                                "redirect"
                              ],
                              "example": "webhook"
                            },
                            "file_format": {
                              "type": "string",
                              "description": "File format for file delivery",
                              "example": "pdf"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "Icon name from the vocabulary",
                              "example": "share"
                            },
                            "integration_type": {
                              "type": "string",
                              "description": "Integration type",
                              "example": "salesforce"
                            },
                            "is_default_for_next_step": {
                              "type": "boolean",
                              "description": "Whether this is the default action for a next step",
                              "example": false
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the action button",
                              "example": "Send to CRM"
                            },
                            "redirect_url": {
                              "type": "string",
                              "description": "Redirect URL for redirect delivery",
                              "example": "https://app.example.com/action"
                            },
                            "requires_connected_integration": {
                              "type": "boolean",
                              "description": "Whether this action requires a connected integration",
                              "example": false
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "Sort order for display",
                              "example": 1
                            },
                            "webhook_url": {
                              "type": "string",
                              "description": "Webhook URL for webhook delivery",
                              "example": "https://api.example.com/webhook"
                            }
                          },
                          "required": [
                            "content_format",
                            "delivery_mechanism",
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "next_steps": {
                    "type": "array",
                    "description": "Next steps included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "action_buttons": {
                          "type": "array",
                          "description": "ActionButtons defines the action buttons to attach to this next step with junction fields",
                          "items": {
                            "type": "object",
                            "properties": {
                              "action_button": {
                                "type": "object",
                                "description": "ActionButton is the reference to the action button entity ($ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "SortOrder is the display order of the action button within the next step",
                                "example": 1
                              }
                            },
                            "required": [
                              "action_button"
                            ]
                          }
                        },
                        "default_action_button": {
                          "type": "object",
                          "description": "DefaultActionButton specifies the default action button for this next step (by $ref or $id)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "ID references an existing entity by its database ID",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "$ref": {
                              "type": "string",
                              "description": "Ref references an entity defined in the same manifest via its $id value",
                              "example": "my-next-step"
                            }
                          }
                        },
                        "id": {
                          "type": "string",
                          "description": "ID references an existing next step (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new next step to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-next-step"
                            },
                            "ai_prompt": {
                              "type": "string",
                              "description": "AI prompt for AI-type next steps",
                              "example": "Generate an invoice..."
                            },
                            "color": {
                              "type": "string",
                              "description": "Color for display",
                              "example": "#FF5733"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the next step",
                              "example": "Generates an invoice from meeting notes"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "Icon name for display",
                              "example": "receipt"
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the next step",
                              "example": "Generate Invoice"
                            },
                            "redirect_url": {
                              "type": "string",
                              "description": "Redirect URL for redirect-type next steps",
                              "example": "https://partner.example.com/invoice"
                            },
                            "sort_order": {
                              "type": "integer",
                              "description": "Sort order for display",
                              "example": 1
                            },
                            "type": {
                              "type": "string",
                              "description": "Type of next step: \"ai\" or \"redirect\"",
                              "enum": [
                                "ai",
                                "redirect"
                              ],
                              "example": "ai"
                            }
                          },
                          "required": [
                            "name",
                            "type"
                          ]
                        }
                      }
                    }
                  },
                  "shortcuts": {
                    "type": "array",
                    "description": "Shortcuts included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing shortcut (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new shortcut to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-shortcut"
                            },
                            "color": {
                              "type": "string",
                              "description": "Color for display",
                              "example": "#4F46E5"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the shortcut",
                              "example": "Generates a concise meeting summary"
                            },
                            "icon_name": {
                              "type": "string",
                              "description": "IconName specifies which FontAwesome icon to display (e.g., \"faLightbulb\", \"faBolt\")",
                              "example": "faLightbulb"
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the shortcut",
                              "example": "Summarize Meeting"
                            },
                            "prompt": {
                              "type": "string",
                              "description": "AI prompt template",
                              "example": "Summarize the key points discussed in this meeting."
                            },
                            "surfaces": {
                              "type": "array",
                              "description": "Surfaces defines which UI surfaces this shortcut should appear on",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "position": {
                                    "type": "integer",
                                    "description": "Position on the surface (1-10)",
                                    "example": 1
                                  },
                                  "surface": {
                                    "type": "string",
                                    "description": "Surface name (HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS)",
                                    "example": "HOME"
                                  }
                                },
                                "required": [
                                  "position",
                                  "surface"
                                ]
                              }
                            }
                          },
                          "required": [
                            "name",
                            "prompt"
                          ]
                        }
                      }
                    }
                  },
                  "templates": {
                    "type": "array",
                    "description": "Templates included in the toolkit\nNote: No omitempty - empty slices should serialize as [] for API consistency",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "ID references an existing template (mutually exclusive with Spec)",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "next_steps": {
                          "type": "array",
                          "description": "NextSteps defines the next steps to attach to this template with junction fields",
                          "items": {
                            "type": "object",
                            "properties": {
                              "autopilot": {
                                "type": "boolean",
                                "description": "Autopilot indicates if the next step should auto-execute when the meeting is finalized",
                                "example": false
                              },
                              "next_step": {
                                "type": "object",
                                "description": "NextStep is the reference to the next step entity ($ref or $id)",
                                "properties": {
                                  "$id": {
                                    "type": "string",
                                    "description": "ID references an existing entity by its database ID",
                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                  },
                                  "$ref": {
                                    "type": "string",
                                    "description": "Ref references an entity defined in the same manifest via its $id value",
                                    "example": "my-next-step"
                                  }
                                }
                              },
                              "sort_order": {
                                "type": "integer",
                                "description": "SortOrder is the display order of the next step within the template",
                                "example": 1
                              }
                            },
                            "required": [
                              "next_step"
                            ]
                          }
                        },
                        "spec": {
                          "type": "object",
                          "description": "Spec defines a new template to create on installation (mutually exclusive with ID)",
                          "properties": {
                            "$id": {
                              "type": "string",
                              "description": "RefID is the manifest-internal identifier for this entity (used by $ref in other entries)",
                              "example": "my-template"
                            },
                            "agenda_items": {
                              "type": "array",
                              "description": "AgendaItems defines the template's agenda items",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string",
                                    "description": "Content is the rich text body content (markdown) for DISCUSSION-type items"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "Description is an optional short description/subtitle",
                                    "example": "Review current quarter pipeline status"
                                  },
                                  "item_type": {
                                    "type": "string",
                                    "description": "ItemType is the agenda item type (DISCUSSION, ACTION_ITEM_RECAP, BREAK, ADJOURN, etc.)",
                                    "example": "DISCUSSION"
                                  },
                                  "restricted_to_leads": {
                                    "type": "boolean",
                                    "description": "RestrictedToLeads indicates whether only meeting leads can see this item",
                                    "example": false
                                  },
                                  "sequence": {
                                    "type": "string",
                                    "description": "Sequence controls the display order",
                                    "example": "1"
                                  },
                                  "time_allocation_minutes": {
                                    "type": "number",
                                    "description": "TimeAllocationMinutes is the suggested time allocation in minutes",
                                    "example": 15
                                  },
                                  "title": {
                                    "type": "string",
                                    "description": "Title is the agenda item's title",
                                    "example": "Pipeline Review"
                                  }
                                },
                                "required": [
                                  "item_type",
                                  "title"
                                ]
                              }
                            },
                            "backing_meeting_id": {
                              "type": "string",
                              "description": "BackingMeetingID references an existing meeting to use as the content source for this template.\nMutually exclusive with inline content fields.",
                              "example": "123e4567-e89b-12d3-a456-426614174000"
                            },
                            "description": {
                              "type": "string",
                              "description": "Description of the template",
                              "example": "Template for sales meetings"
                            },
                            "detail_level": {
                              "type": "string",
                              "description": "DetailLevel controls the granularity of meeting notes",
                              "enum": [
                                "BULLET_POINTS",
                                "STANDARD",
                                "VERBATIM"
                              ],
                              "example": "STANDARD"
                            },
                            "meeting_duration_seconds": {
                              "type": "integer",
                              "description": "MeetingDurationSeconds is the default meeting duration in seconds",
                              "example": 3600
                            },
                            "name": {
                              "type": "string",
                              "description": "Name of the template",
                              "example": "Sales Meeting Template"
                            },
                            "participants": {
                              "type": "array",
                              "description": "Participants defines the template's default participants",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "email": {
                                    "type": "string",
                                    "description": "Email is the participant's email address",
                                    "example": "sarah@acme.com"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Name is the participant's display name",
                                    "example": "Sarah Chen"
                                  },
                                  "role": {
                                    "type": "string",
                                    "description": "Role is the participant's meeting role (EDITOR or VIEWER)",
                                    "enum": [
                                      "EDITOR",
                                      "VIEWER"
                                    ],
                                    "example": "EDITOR"
                                  }
                                },
                                "required": [
                                  "email",
                                  "name",
                                  "role"
                                ]
                              }
                            },
                            "start_time_offset_seconds": {
                              "type": "integer",
                              "description": "StartTimeOffsetSeconds is the default start time as seconds from UTC midnight (-1 means untimed)",
                              "example": 36000
                            },
                            "title": {
                              "type": "string",
                              "description": "--- Inline meeting content (portable) ---\nTitle is the meeting title for the template",
                              "example": "Weekly Sales Standup"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "toolkit_prompt": {
                    "type": "string",
                    "description": "Default AI persona/behavioral instructions for the toolkit"
                  }
                }
              },
              "published_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "status": {
                "type": "string",
                "example": "DRAFT"
              },
              "toolkit_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "updated_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "version_label": {
                "type": "string",
                "example": "2.0.0"
              },
              "version_number": {
                "type": "integer",
                "example": 2
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Version not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key) partial update (PATCH) of a DRAFT toolkit version\n(`toolkitId`/`versionId`). Only draft versions are editable; published\nversions are immutable. Only supplied fields change. Accepts an optional\n`Idempotency-Key`."
    },
    "applyMeetingTemplate": {
      "id": "applyMeetingTemplate",
      "method": "POST",
      "path": "/v1/partner/user/meeting-templates/{id}/apply",
      "summary": "Apply template to meeting",
      "description": "Applies a meeting template's content to an existing meeting. This is an additive operation.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Template ID to apply",
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Meeting to apply template to",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "meeting_id": {
              "type": "string",
              "description": "ID of the meeting to apply the template to",
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          },
          "required": [
            "meeting_id"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "application_id": {
                "type": "string",
                "description": "Unique identifier for the application record",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "applied_items": {
                "type": "object",
                "description": "Counts of items applied from the template",
                "properties": {
                  "agenda_items": {
                    "type": "integer",
                    "description": "Number of agenda items applied",
                    "example": 5
                  },
                  "documents": {
                    "type": "integer",
                    "description": "Number of documents applied",
                    "example": 2
                  },
                  "participants": {
                    "type": "integer",
                    "description": "Number of participants applied",
                    "example": 3
                  }
                }
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful",
                "example": true
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "402": {
          "description": "Plan upgrade required (Pro)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "current_plan": {
                "type": "string"
              },
              "feature": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "required_plan": {
                "type": "string"
              }
            }
          }
        },
        "403": {
          "description": "Access denied",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting or template not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "503": {
          "description": "Template apply backend temporarily unavailable",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "OAuth user operation (`meetings:write`) that applies a template (`id`) to a\nmeeting, seeding agenda/context/next steps from it. Applying again can re-\nseed or duplicate template-derived content, so treat it as a mutating action\nrather than a safe retry. Requires the target meeting in the body/params."
    },
    "authorizeOauth": {
      "id": "authorizeOauth",
      "method": "GET",
      "path": "/oauth2/authorize",
      "summary": "OAuth 2.0 Authorization Endpoint",
      "description": "Handles OAuth 2.0 authorization requests for partner applications",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "response_type",
            "in": "query",
            "required": true,
            "description": "OAuth response type (code)",
            "type": "string"
          },
          {
            "name": "client_id",
            "in": "query",
            "required": true,
            "description": "OAuth client ID",
            "type": "string"
          },
          {
            "name": "redirect_uri",
            "in": "query",
            "required": true,
            "description": "OAuth redirect URI",
            "type": "string"
          },
          {
            "name": "scope",
            "in": "query",
            "required": false,
            "description": "OAuth scopes",
            "type": "string"
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "description": "OAuth state parameter",
            "type": "string"
          },
          {
            "name": "code_challenge",
            "in": "query",
            "required": false,
            "description": "PKCE code challenge",
            "type": "string"
          },
          {
            "name": "code_challenge_method",
            "in": "query",
            "required": false,
            "description": "PKCE code challenge method",
            "type": "string"
          }
        ]
      },
      "responses": {
        "302": {
          "description": "Redirect to authorization URL",
          "has_schema": false
        },
        "400": {
          "description": "Bad Request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Public OAuth 2.0 authorization endpoint (browser redirect flow). Requires\n`response_type=code`, `client_id`, and a pre-registered `redirect_uri`;\n`scope`, `state`, and PKCE (`code_challenge`/`code_challenge_method`) are\nsupported. Responds with a 302 redirect (to consent or back to the client\nwith a code), not JSON. This is a user-agent/browser step — an automated\nagent cannot complete it headlessly because it depends on interactive user\nconsent."
    },
    "checkOauthConsent": {
      "id": "checkOauthConsent",
      "method": "POST",
      "path": "/oauth2/check-consent",
      "summary": "Check Existing Consent",
      "description": "Checks if user has already consented to the requested scopes and can skip consent page",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Consent check request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "client_id": {
              "type": "string",
              "example": "partner_abc123"
            },
            "code_challenge": {
              "type": "string",
              "example": "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM"
            },
            "code_challenge_method": {
              "type": "string",
              "example": "S256"
            },
            "email": {
              "type": "string",
              "example": "user@example.com"
            },
            "redirect_uri": {
              "type": "string",
              "example": "https://partner.example.com/callback"
            },
            "response_type": {
              "type": "string",
              "example": "code"
            },
            "scopes": {
              "type": "array",
              "example": [
                "openid",
                "profile",
                "email"
              ],
              "items": {
                "type": "string"
              }
            },
            "state": {
              "type": "string",
              "example": "abc123state"
            }
          },
          "required": [
            "client_id",
            "email"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "has_consent": {
                "type": "boolean",
                "example": true
              },
              "redirect_url": {
                "type": "string",
                "example": "https://partner.example.com/callback?code=abc123"
              },
              "requires_consent": {
                "type": "boolean",
                "example": false
              },
              "session_valid": {
                "type": "boolean",
                "example": true
              }
            }
          }
        },
        "400": {
          "description": "Bad Request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Public endpoint that reports whether the user has already consented to the\nrequested scopes for a client, letting the flow skip the consent screen when\nconsent already exists. Read-only decision helper for the authorization UI;\nit does not grant scopes or issue tokens.",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "completeOauthAuthorization": {
      "id": "completeOauthAuthorization",
      "method": "POST",
      "path": "/oauth2/authorize",
      "summary": "Complete OAuth 2.0 Authorization",
      "description": "Completes OAuth 2.0 authorization after user consent and returns Cognito authorization code",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "OAuth consent request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "client_id": {
              "type": "string",
              "example": "partner_abc123"
            },
            "code_challenge": {
              "type": "string",
              "example": "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM"
            },
            "code_challenge_method": {
              "type": "string",
              "example": "S256"
            },
            "consent": {
              "type": "boolean",
              "example": true
            },
            "email": {
              "type": "string",
              "example": "user@example.com"
            },
            "redirect_uri": {
              "type": "string",
              "example": "https://partner.example.com/callback"
            },
            "response_type": {
              "type": "string",
              "example": "code"
            },
            "scope": {
              "type": "string",
              "example": "openid profile email"
            },
            "state": {
              "type": "string",
              "example": "abc123state"
            }
          },
          "required": [
            "client_id",
            "consent",
            "email",
            "redirect_uri",
            "response_type"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "Authorization completed successfully",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "example": "auth_code_abc123"
              },
              "redirect_url": {
                "type": "string",
                "example": "https://partner.example.com/callback?code=auth_code_abc123\u0026state=abc123state"
              },
              "state": {
                "type": "string",
                "example": "abc123state"
              }
            }
          }
        },
        "400": {
          "description": "Bad request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Public endpoint that finalizes an OAuth authorization after the user grants\nconsent, returning an authorization code the client then exchanges at the\ntoken endpoint. Called by the consent UI as part of the interactive\n`authorizeOauth` flow; the returned code is short-lived and single-use.",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "createActionItem": {
      "id": "createActionItem",
      "method": "POST",
      "path": "/v1/partner/user/action-items",
      "summary": "Create action item",
      "description": "Creates a new action item on behalf of the authenticated user",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "action-items:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "action_item",
            "in": "body",
            "required": true,
            "description": "Action item data",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "description": {
              "type": "string",
              "example": "Call or schedule meeting to discuss"
            },
            "due_date": {
              "type": "string",
              "description": "YYYY-MM-DD format",
              "example": "2023-01-08"
            },
            "meeting_id": {
              "type": "string",
              "example": "123e4567-e89b-12d3-a456-426614174000"
            },
            "partner_context": {
              "type": "object",
              "additionalProperties": {}
            },
            "status": {
              "type": "string",
              "enum": [
                "needs_review",
                "accepted",
                "in_progress",
                "blocked",
                "completed",
                "cancelled"
              ],
              "example": "needs_review"
            },
            "title": {
              "type": "string",
              "example": "Follow up with client"
            }
          },
          "required": [
            "meeting_id",
            "title"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "assigned_to_user_id": {
                "type": "string",
                "description": "ID of the user assigned to this action item",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "completed_at": {
                "type": "string",
                "description": "Timestamp when the action item was completed",
                "example": "2023-01-08T18:00:00-07:00"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the action item was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "description": "Detailed description of the action item",
                "example": "Follow up with client about proposal"
              },
              "due_date": {
                "type": "string",
                "description": "Due date in YYYY-MM-DD format",
                "example": "2023-01-08"
              },
              "has_partner_assignment": {
                "type": "boolean",
                "description": "Whether this action item was assigned via partner automation",
                "example": true
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the action item",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "is_completed": {
                "type": "boolean",
                "description": "Whether the action item has been completed",
                "example": false
              },
              "meeting_id": {
                "type": "string",
                "description": "ID of the meeting this action item belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "partner_context": {
                "type": "object",
                "description": "Partner-specific context data stored with the action item",
                "additionalProperties": {}
              },
              "status": {
                "type": "string",
                "description": "Current status (needs_review, accepted, in_progress, blocked, completed, cancelled)",
                "example": "accepted"
              },
              "title": {
                "type": "string",
                "description": "Title of the action item",
                "example": "Client follow-up call"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the action item was last updated",
                "example": "2023-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for creating an action item",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_request",
                  "invalid_due_date"
                ],
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request body"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "OAuth user operation (`action-items:write`) that creates an action item for\nthe user. Returns 201 with the new id. Not idempotent — re-posting creates\nduplicates, so dedupe on your side. Fields beyond the required ones (e.g.\nassignee, due date) are optional."
    },
    "createAutomation": {
      "id": "createAutomation",
      "method": "POST",
      "path": "/v1/partner/admin/automation",
      "summary": "Create a new automation",
      "description": "Creates a new automation for action item matching",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "automation",
            "in": "body",
            "required": true,
            "description": "Automation data",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "actions": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "config": {
                    "type": "object",
                    "example": {
                      "url": "https://api.example.com/webhook"
                    },
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "type": {
                    "type": "string",
                    "example": "webhook"
                  }
                },
                "required": [
                  "type"
                ]
              }
            },
            "description": {
              "type": "string",
              "example": "Sync action items to CRM"
            },
            "name": {
              "type": "string",
              "example": "CRM Integration"
            },
            "trigger_type": {
              "type": "string",
              "enum": [
                "action_item_created",
                "action_item_updated",
                "action_item_completed",
                "meeting_ended",
                "meeting_summary_ready"
              ]
            }
          },
          "required": [
            "actions",
            "name",
            "trigger_type"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "actions": {
                "type": "array",
                "description": "Actions to execute when the automation is triggered",
                "items": {
                  "type": "object",
                  "properties": {
                    "config": {
                      "type": "object",
                      "example": {
                        "url": "https://api.example.com/webhook"
                      },
                      "additionalProperties": {
                        "type": "string"
                      }
                    },
                    "type": {
                      "type": "string",
                      "example": "webhook"
                    }
                  },
                  "required": [
                    "type"
                  ]
                }
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the automation was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "description": "Optional description of what the automation does",
                "example": "Sync action items to CRM"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the automation",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "name": {
                "type": "string",
                "description": "Name of the automation",
                "example": "CRM Integration"
              },
              "partner_app_id": {
                "type": "string",
                "description": "ID of the partner app that owns this automation",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "status": {
                "type": "string",
                "description": "Current status (active or inactive)",
                "example": "active"
              },
              "trigger_type": {
                "type": "string",
                "description": "Event type that triggers this automation",
                "example": "action_item_created"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the automation was last updated",
                "example": "2023-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body or validation error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for creating an automation",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_request_body",
                  "validation_error"
                ],
                "example": "invalid_request_body"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request body"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key) operation that registers a partner automation. Required fields\nare `name`, `trigger_type`, and a non-empty `actions` array; each action\ndescribes what fires when the trigger matches. Creation is the setup half of the\nflow — the automation only produces effects once it starts matching, and those\noutcomes are reported asynchronously via webhooks (e.g. assignment events), so\ndo not expect results in the 201 body. Ensure your webhook endpoint is\nconfigured and its delivery filter includes the relevant event types before\nrelying on an automation. Not idempotent — re-posting creates a second\nautomation rather than updating the first.\n\n\u003c!-- POST /v1/partner/admin/automation --\u003e\n\u003c!-- Create a new automation --\u003e"
    },
    "createCalendarEventMeeting": {
      "id": "createCalendarEventMeeting",
      "method": "POST",
      "path": "/v1/partner/user/calendar/events/{calendar_event_id}/meeting",
      "summary": "Create meeting from calendar event",
      "description": "Creates a new meeting by copying details from a calendar event",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "calendar:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "calendar_event_id",
            "in": "path",
            "required": true,
            "description": "Calendar Event ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Meeting already exists for this calendar event",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created": {
                "type": "boolean",
                "description": "Whether a new meeting was created (false if existing meeting was returned)",
                "example": true
              },
              "meeting": {
                "type": "object",
                "description": "The created or existing meeting",
                "properties": {
                  "calendar_event_id": {
                    "type": "string",
                    "description": "ID of the linked calendar event, if any",
                    "example": "123e4567-e89b-12d3-a456-426614174006"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Timestamp when the meeting was created",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "created_by_user_id": {
                    "type": "string",
                    "description": "ID of the user who created the meeting",
                    "example": "123e4567-e89b-12d3-a456-426614174003"
                  },
                  "end_time": {
                    "type": "string",
                    "description": "Scheduled end time in RFC3339 format",
                    "example": "2023-01-01T11:00:00-07:00"
                  },
                  "id": {
                    "type": "string",
                    "description": "Unique identifier for the meeting",
                    "example": "123e4567-e89b-12d3-a456-426614174000"
                  },
                  "redirect_to_meeting_id": {
                    "type": "string",
                    "description": "ID of the meeting to redirect to if this meeting was merged",
                    "example": "123e4567-e89b-12d3-a456-426614174007"
                  },
                  "start_time": {
                    "type": "string",
                    "description": "Scheduled start time in RFC3339 format",
                    "example": "2023-01-01T10:00:00-07:00"
                  },
                  "status": {
                    "type": "string",
                    "description": "Current status of the meeting",
                    "enum": [
                      "draft",
                      "scheduled",
                      "in_progress",
                      "ended",
                      "completed"
                    ],
                    "example": "completed"
                  },
                  "summary_notes": {
                    "type": "string",
                    "description": "AI-generated summary notes from the meeting",
                    "example": "Post-Meeting Summarization ..."
                  },
                  "title": {
                    "type": "string",
                    "description": "Title of the meeting",
                    "example": "Weekly Team Sync"
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "Timestamp when the meeting was last updated",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "workspace_id": {
                    "type": "string",
                    "description": "ID of the workspace this meeting belongs to",
                    "example": "123e4567-e89b-12d3-a456-426614174002"
                  }
                }
              },
              "message": {
                "type": "string",
                "description": "Human-readable message describing the result",
                "example": "Meeting created successfully from calendar event"
              }
            }
          }
        },
        "201": {
          "description": "Meeting created successfully",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created": {
                "type": "boolean",
                "description": "Whether a new meeting was created (false if existing meeting was returned)",
                "example": true
              },
              "meeting": {
                "type": "object",
                "description": "The created or existing meeting",
                "properties": {
                  "calendar_event_id": {
                    "type": "string",
                    "description": "ID of the linked calendar event, if any",
                    "example": "123e4567-e89b-12d3-a456-426614174006"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Timestamp when the meeting was created",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "created_by_user_id": {
                    "type": "string",
                    "description": "ID of the user who created the meeting",
                    "example": "123e4567-e89b-12d3-a456-426614174003"
                  },
                  "end_time": {
                    "type": "string",
                    "description": "Scheduled end time in RFC3339 format",
                    "example": "2023-01-01T11:00:00-07:00"
                  },
                  "id": {
                    "type": "string",
                    "description": "Unique identifier for the meeting",
                    "example": "123e4567-e89b-12d3-a456-426614174000"
                  },
                  "redirect_to_meeting_id": {
                    "type": "string",
                    "description": "ID of the meeting to redirect to if this meeting was merged",
                    "example": "123e4567-e89b-12d3-a456-426614174007"
                  },
                  "start_time": {
                    "type": "string",
                    "description": "Scheduled start time in RFC3339 format",
                    "example": "2023-01-01T10:00:00-07:00"
                  },
                  "status": {
                    "type": "string",
                    "description": "Current status of the meeting",
                    "enum": [
                      "draft",
                      "scheduled",
                      "in_progress",
                      "ended",
                      "completed"
                    ],
                    "example": "completed"
                  },
                  "summary_notes": {
                    "type": "string",
                    "description": "AI-generated summary notes from the meeting",
                    "example": "Post-Meeting Summarization ..."
                  },
                  "title": {
                    "type": "string",
                    "description": "Title of the meeting",
                    "example": "Weekly Team Sync"
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "Timestamp when the meeting was last updated",
                    "example": "2023-01-01T00:00:00Z"
                  },
                  "workspace_id": {
                    "type": "string",
                    "description": "ID of the workspace this meeting belongs to",
                    "example": "123e4567-e89b-12d3-a456-426614174002"
                  }
                }
              },
              "message": {
                "type": "string",
                "description": "Human-readable message describing the result",
                "example": "Meeting created successfully from calendar event"
              }
            }
          }
        },
        "400": {
          "description": "Invalid calendar event ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for creating a meeting from a calendar event",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_calendar_event_id",
                  "invalid_request"
                ],
                "example": "invalid_calendar_event_id"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid calendar event ID format"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Calendar event not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "OAuth user operation (`calendar:write`) that creates a Contio meeting from a\ncalendar event (`calendar_event_id`), linking the two. Returns the created\nmeeting. Not idempotent — calling twice can create a second meeting, so\ncheck for an existing linked meeting first."
    },
    "createIdpConfig": {
      "id": "createIdpConfig",
      "method": "POST",
      "path": "/v1/partner/admin/idp",
      "summary": "Create IdP configuration",
      "description": "Creates a new OIDC IdP configuration for the authenticated partner app. Note: idp_client_id and idp_client_secret are the OIDC credentials from your Identity Provider (e.g., Okta, Azure AD), NOT your Contio Partner OAuth credentials.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "config",
            "in": "body",
            "required": true,
            "description": "IdP configuration data",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "allowed_email_domains": {
              "type": "array",
              "description": "Email domains allowed for SSO (required for strict mode). Users with other domains will be rejected.",
              "example": [
                "company.com",
                "subsidiary.com"
              ],
              "items": {
                "type": "string"
              }
            },
            "claim_mappings": {
              "type": "object",
              "description": "Maps Contio user fields to IdP claim names. Defaults to {\"email\": \"email\", \"name\": \"name\"}. Only change if your IdP uses non-standard claim names.",
              "additionalProperties": {
                "type": "string"
              }
            },
            "discovery_url": {
              "type": "string",
              "description": "OIDC discovery endpoint URL from your Identity Provider (must end with /.well-known/openid-configuration)",
              "example": "https://company.okta.com/.well-known/openid-configuration"
            },
            "idp_client_id": {
              "type": "string",
              "description": "OAuth Client ID from your Identity Provider's OIDC application. This is NOT your Contio Partner client_id.",
              "example": "0oa1234567890abcdef"
            },
            "idp_client_secret": {
              "type": "string",
              "description": "OAuth Client Secret from your Identity Provider's OIDC application. This is NOT your Contio Partner client_secret. Stored encrypted at rest.",
              "example": "IdP-secret-from-okta-or-azure"
            },
            "mode": {
              "type": "string",
              "description": "Domain validation mode: \"strict\" requires allowed_email_domains, \"partner_managed\" trusts your IdP's user base",
              "enum": [
                "strict",
                "partner_managed"
              ],
              "example": "strict"
            },
            "name": {
              "type": "string",
              "description": "Display name for this IdP configuration",
              "example": "Okta SSO"
            },
            "scopes": {
              "type": "array",
              "description": "OIDC scopes to request during authentication. Defaults to [\"openid\", \"email\", \"profile\"]",
              "example": [
                "openid",
                "email",
                "profile"
              ],
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "discovery_url",
            "idp_client_id",
            "idp_client_secret",
            "mode",
            "name"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "allowed_email_domains": {
                "type": "array",
                "description": "Email domains allowed for SSO",
                "example": [
                  "company.com",
                  "subsidiary.com"
                ],
                "items": {
                  "type": "string"
                }
              },
              "authorization_endpoint": {
                "type": "string",
                "description": "Discovered OIDC authorization endpoint",
                "example": "https://company.okta.com/authorize"
              },
              "claim_mappings": {
                "type": "object",
                "description": "Maps Contio user fields to IdP claim names",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "created_at": {
                "type": "string",
                "example": "2024-01-01T00:00:00Z"
              },
              "discovery_last_fetched_at": {
                "type": "string",
                "description": "When the OIDC discovery document was last fetched",
                "example": "2024-01-01T00:00:00Z"
              },
              "discovery_url": {
                "type": "string",
                "description": "OIDC discovery endpoint URL",
                "example": "https://company.okta.com/.well-known/openid-configuration"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "idp_client_id": {
                "type": "string",
                "description": "OAuth Client ID from your Identity Provider (secret is never returned)",
                "example": "0oa1234567890abcdef"
              },
              "is_active": {
                "type": "boolean",
                "description": "Whether this IdP configuration is active",
                "example": true
              },
              "issuer": {
                "type": "string",
                "description": "Discovered OIDC issuer",
                "example": "https://company.okta.com"
              },
              "jwks_uri": {
                "type": "string",
                "description": "Discovered OIDC JWKS URI",
                "example": "https://company.okta.com/jwks"
              },
              "mode": {
                "type": "string",
                "description": "Domain validation mode",
                "example": "strict"
              },
              "name": {
                "type": "string",
                "description": "Display name for this IdP configuration",
                "example": "Okta SSO"
              },
              "partner_app_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "scopes": {
                "type": "array",
                "description": "OIDC scopes requested during authentication",
                "example": [
                  "openid",
                  "email",
                  "profile"
                ],
                "items": {
                  "type": "string"
                }
              },
              "token_endpoint": {
                "type": "string",
                "description": "Discovered OIDC token endpoint",
                "example": "https://company.okta.com/token"
              },
              "type": {
                "type": "string",
                "description": "IdP type (always \"oidc\")",
                "example": "oidc"
              },
              "updated_at": {
                "type": "string",
                "example": "2024-01-01T00:00:00Z"
              },
              "userinfo_endpoint": {
                "type": "string",
                "description": "Discovered OIDC userinfo endpoint",
                "example": "https://company.okta.com/userinfo"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body or validation error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for creating IdP configuration",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_request_body",
                  "invalid_idp_credentials",
                  "invalid_idp",
                  "domain_is_generic",
                  "domain_already_claimed",
                  "domain_reserved",
                  "strict_mode_requires_domains",
                  "discovery_fetch_failed",
                  "idp_config_exists"
                ],
                "example": "invalid_request_body"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request body"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "IdP config already exists",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key) creation of the partner app's OIDC IdP (SSO) configuration.\n`idp_client_id`/`idp_client_secret` are your Identity Provider's OIDC\ncredentials (Okta, Azure AD, etc.), NOT your Contio partner OAuth\ncredentials. Returns 409 if a configuration already exists (use the update\nendpoint instead). Accepts an optional `Idempotency-Key`. The IdP client\nsecret is write-only — it is stored but not returned in reads."
    },
    "createMeeting": {
      "id": "createMeeting",
      "method": "POST",
      "path": "/v1/partner/user/meetings",
      "summary": "Create meeting",
      "description": "Creates a new meeting on behalf of the authenticated partner user based on their preferences",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "meeting",
            "in": "body",
            "required": true,
            "description": "Meeting data",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "detail_level": {
              "type": "string",
              "enum": [
                "BULLET_POINTS",
                "STANDARD",
                "VERBATIM"
              ],
              "example": "STANDARD"
            },
            "end_time": {
              "type": "string",
              "example": "2023-01-01T11:00:00Z"
            },
            "is_instant": {
              "type": "boolean",
              "example": false
            },
            "start_time": {
              "type": "string",
              "example": "2023-01-01T10:00:00Z"
            },
            "template_id": {
              "type": "string",
              "example": "123e4567-e89b-12d3-a456-426614174004"
            },
            "title": {
              "type": "string",
              "example": "Weekly Team Sync"
            }
          },
          "required": [
            "title"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "calendar_event_id": {
                "type": "string",
                "description": "ID of the linked calendar event, if any",
                "example": "123e4567-e89b-12d3-a456-426614174006"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the meeting was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "created_by_user_id": {
                "type": "string",
                "description": "ID of the user who created the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "end_time": {
                "type": "string",
                "description": "Scheduled end time in RFC3339 format",
                "example": "2023-01-01T11:00:00-07:00"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "redirect_to_meeting_id": {
                "type": "string",
                "description": "ID of the meeting to redirect to if this meeting was merged",
                "example": "123e4567-e89b-12d3-a456-426614174007"
              },
              "start_time": {
                "type": "string",
                "description": "Scheduled start time in RFC3339 format",
                "example": "2023-01-01T10:00:00-07:00"
              },
              "status": {
                "type": "string",
                "description": "Current status of the meeting",
                "enum": [
                  "draft",
                  "scheduled",
                  "in_progress",
                  "ended",
                  "completed"
                ],
                "example": "completed"
              },
              "summary_notes": {
                "type": "string",
                "description": "AI-generated summary notes from the meeting",
                "example": "Post-Meeting Summarization ..."
              },
              "title": {
                "type": "string",
                "description": "Title of the meeting",
                "example": "Weekly Team Sync"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the meeting was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "workspace_id": {
                "type": "string",
                "description": "ID of the workspace this meeting belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for creating a meeting",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_request",
                  "invalid_start_time",
                  "invalid_end_time",
                  "invalid_time_range",
                  "invalid_start_date"
                ],
                "example": "invalid_start_time"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid start time format"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Creates a meeting in the OAuth user's workspace; requires the `meetings:write`\nscope. Only `title` is required — `start_time`/`end_time` are ISO-8601 and\noptional, and `is_instant: true` starts an ad-hoc meeting now. Passing\n`template_id` binds a meeting template at creation (agenda/context are seeded\nfrom it). The 201 body returns the created meeting including its `id`; use that\nid for follow-up user-API calls. This operation is not idempotent — retrying\nwithout deduplication creates duplicate meetings.\n\n\u003c!-- POST /v1/partner/user/meetings --\u003e\n\u003c!-- Create meeting --\u003e\n\u003c!-- scopes: meetings:write --\u003e"
    },
    "createMeetingAgendaItem": {
      "id": "createMeetingAgendaItem",
      "method": "POST",
      "path": "/v1/partner/user/meetings/{id}/agenda-items",
      "summary": "Create agenda item",
      "description": "Creates a new agenda item for a meeting. User must be a participant of the meeting.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Agenda item details",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "description": {
              "type": "string",
              "example": "Review and discuss Q1 objectives"
            },
            "item_type": {
              "type": "string",
              "enum": [
                "DISCUSSION",
                "DECISION",
                "ACTION_ITEM",
                "INFORMATION"
              ],
              "example": "DISCUSSION"
            },
            "presenters": {
              "type": "array",
              "example": [
                "123e4567-e89b-12d3-a456-426614174003"
              ],
              "items": {
                "type": "string"
              }
            },
            "restricted_to_leads": {
              "type": "boolean",
              "example": false
            },
            "talking_points": {
              "type": "string",
              "example": "My private notes for this item"
            },
            "time_allocation_minutes": {
              "type": "number",
              "example": 15
            },
            "title": {
              "type": "string",
              "example": "Q1 Planning Discussion"
            }
          },
          "required": [
            "item_type",
            "title"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Agenda item created successfully",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "description": "Timestamp when the agenda item was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "description": "Detailed description of the agenda item",
                "example": "Review and discuss Q1 objectives"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the agenda item",
                "example": "123e4567-e89b-12d3-a456-426614174005"
              },
              "item_type": {
                "type": "string",
                "description": "Type of agenda item (DISCUSSION, DECISION, ACTION_ITEM, INFORMATION)",
                "example": "DISCUSSION"
              },
              "meeting_id": {
                "type": "string",
                "description": "ID of the meeting this agenda item belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "presenters": {
                "type": "array",
                "description": "User IDs of the presenters for this agenda item",
                "example": [
                  "123e4567-e89b-12d3-a456-426614174003"
                ],
                "items": {
                  "type": "string"
                }
              },
              "restricted_to_leads": {
                "type": "boolean",
                "description": "Whether this item is restricted to meeting leads only",
                "example": false
              },
              "sequence": {
                "type": "string",
                "description": "Order sequence of the agenda item",
                "example": "1"
              },
              "status": {
                "type": "string",
                "description": "Current status (pending, in_progress, completed)",
                "example": "pending"
              },
              "talking_points": {
                "type": "string",
                "description": "Private talking points for the authenticated user on this agenda item. Only returned if the user has talking points.",
                "example": "Key points to discuss: budget allocation, timeline"
              },
              "time_allocation_minutes": {
                "type": "number",
                "description": "Allocated time for this agenda item in minutes",
                "example": 15
              },
              "title": {
                "type": "string",
                "description": "Title of the agenda item",
                "example": "Q1 Planning Discussion"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the agenda item was last updated",
                "example": "2023-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "User is not a participant of the meeting",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "OAuth user operation (`meetings:write`) that adds an agenda item to a\nmeeting (`id`). Returns the created item. Not idempotent — re-posting adds\nanother item."
    },
    "createSession": {
      "id": "createSession",
      "method": "POST",
      "path": "/v1/partner/user/sessions",
      "summary": "Create a new chat session",
      "description": "Creates a new chat session for the authenticated user. Optionally accepts an initial message.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "chat:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Session creation request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "context_document_ids": {
              "type": "array",
              "description": "Optional context document IDs to prime the agent with specific documents",
              "example": [
                "d4e5f6a7-b8c9-0123-4567-890abcdef012"
              ],
              "items": {
                "type": "string"
              }
            },
            "meeting_id": {
              "type": "string",
              "description": "Optional ID of the meeting to associate this session with (user must be a participant)",
              "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
            },
            "message": {
              "type": "string",
              "description": "First user message to start the conversation (1-10,000 characters)",
              "example": "Summarize the key decisions from this meeting"
            },
            "metadata": {
              "type": "object",
              "description": "Partner-supplied metadata for tracking (max 10 keys, 256 char keys, 1024 char values)",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "required": [
            "message"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "description": "Timestamp when the session was created",
                "example": "2026-03-16T14:30:00Z"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the session",
                "example": "f7e6d5c4-b3a2-1098-7654-321fedcba098"
              },
              "initial_turn": {
                "type": "object",
                "description": "Initial turn if message was provided",
                "properties": {
                  "agent_metadata": {
                    "type": "object",
                    "description": "Agent execution metadata (present only for role=agent turns)",
                    "properties": {
                      "referenced_documents": {
                        "type": "array",
                        "description": "Context document IDs the agent referenced",
                        "items": {
                          "type": "string"
                        }
                      },
                      "token_usage": {
                        "type": "object",
                        "description": "Token usage statistics",
                        "properties": {
                          "completion_tokens": {
                            "type": "integer",
                            "description": "Number of output tokens",
                            "example": 200
                          },
                          "prompt_tokens": {
                            "type": "integer",
                            "description": "Number of input tokens",
                            "example": 150
                          },
                          "total_tokens": {
                            "type": "integer",
                            "description": "Total tokens used",
                            "example": 350
                          }
                        }
                      },
                      "tool_calls": {
                        "type": "array",
                        "description": "Tools the agent invoked during this turn",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Name of the tool",
                              "example": "search_meeting_notes"
                            },
                            "status": {
                              "type": "string",
                              "description": "Execution status",
                              "enum": [
                                "success",
                                "failure"
                              ],
                              "example": "success"
                            }
                          }
                        }
                      }
                    }
                  },
                  "completed_at": {
                    "type": "string",
                    "description": "Timestamp when the turn finished processing (null if not completed)",
                    "example": "2026-03-16T14:30:15Z"
                  },
                  "content": {
                    "type": "string",
                    "description": "Message text content",
                    "example": "Summarize the key decisions from this meeting"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Timestamp when the turn was created/enqueued",
                    "example": "2026-03-16T14:30:00Z"
                  },
                  "error": {
                    "type": "object",
                    "description": "Error details when status=failed",
                    "properties": {
                      "code": {
                        "type": "string",
                        "description": "Error code",
                        "example": "agent_error"
                      },
                      "message": {
                        "type": "string",
                        "description": "Human-readable error message",
                        "example": "Agent processing failed"
                      }
                    }
                  },
                  "id": {
                    "type": "string",
                    "description": "Unique identifier for the turn (message ID)",
                    "example": "turn-uuid-1234"
                  },
                  "role": {
                    "type": "string",
                    "description": "Role of the message author: user or agent",
                    "enum": [
                      "user",
                      "agent"
                    ],
                    "example": "user"
                  },
                  "sequence_number": {
                    "type": "integer",
                    "description": "Sequence number in the conversation",
                    "example": 1
                  },
                  "session_id": {
                    "type": "string",
                    "description": "ID of the session this turn belongs to",
                    "example": "f7e6d5c4-b3a2-1098-7654-321fedcba098"
                  },
                  "status": {
                    "type": "string",
                    "description": "Turn processing status: queued, processing, completed, or failed",
                    "enum": [
                      "queued",
                      "processing",
                      "completed",
                      "failed"
                    ],
                    "example": "completed"
                  }
                }
              },
              "meeting_id": {
                "type": "string",
                "description": "ID of the associated meeting",
                "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
              },
              "metadata": {
                "type": "object",
                "description": "Partner-supplied metadata",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "status": {
                "type": "string",
                "description": "Current session status: active, closed, or expired",
                "enum": [
                  "active",
                  "closed",
                  "expired"
                ],
                "example": "active"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "402": {
          "description": "Plan upgrade required (Pro)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "current_plan": {
                "type": "string"
              },
              "feature": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "required_plan": {
                "type": "string"
              }
            }
          }
        },
        "422": {
          "description": "Validation error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Creates a session AND submits turn 1; the agent begins processing immediately.\nResponses arrive asynchronously via session.turn.completed webhooks — do not\nexpect the agent reply in the 201 body."
    },
    "createTemplate": {
      "id": "createTemplate",
      "method": "POST",
      "path": "/v1/partner/admin/templates",
      "summary": "Create a template",
      "description": "Creates a new template for the authenticated partner app. Optionally, provide a backing_meeting_id to clone content from an existing meeting.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Template creation request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "backing_meeting_id": {
              "type": "string",
              "description": "Optional ID of an existing meeting to use as the source for the template's content.\nThe meeting's agenda items, participants, and talking points will be copied to the new template.\nThe partner must have access to the workspace containing the meeting.",
              "example": "123e4567-e89b-12d3-a456-426614174002"
            },
            "description": {
              "type": "string",
              "description": "Optional description of the template",
              "example": "Invoice template for new clients"
            },
            "name": {
              "type": "string",
              "description": "Name of the template",
              "example": "Invoice Template"
            }
          },
          "required": [
            "name"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "backing_meeting_id": {
                "type": "string",
                "description": "BackingMeetingID is the ID of the meeting this template was created from, if any",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the template was created",
                "example": "2024-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "example": "Invoice template for new clients"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "name": {
                "type": "string",
                "example": "Invoice Template"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the template was last updated",
                "example": "2024-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body or backing meeting validation error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Partner does not have access to the backing meeting's workspace",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key) creation of a template for the partner app. Optionally pass\n`backing_meeting_id` to clone content from an existing meeting. Returns 201\nwith the created template `id`. 403 can indicate a plan/entitlement gate on\ntemplates. Not idempotent beyond the optional `Idempotency-Key` — re-posting\ncreates a second template."
    },
    "createWorkflowRun": {
      "id": "createWorkflowRun",
      "method": "POST",
      "path": "/v1/partner/user/workflow-runs",
      "summary": "Trigger a workflow run",
      "description": "Creates and enqueues a new manual workflow run. Autopilot-triggered runs are reserved for internal use and cannot be created via this endpoint.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "workflows:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Workflow run creation request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "originating_id": {
              "type": "string",
              "description": "OriginatingID is the ID of the originating object (required).",
              "example": "123e4567-e89b-12d3-a456-426614174002"
            },
            "originating_type": {
              "type": "string",
              "description": "OriginatingType is the kind of object that triggered the run. Accepted values: \"meeting\", \"canvas\".",
              "enum": [
                "meeting",
                "canvas"
              ],
              "example": "meeting"
            },
            "workflow_template_id": {
              "type": "string",
              "description": "WorkflowTemplateID is the ID of the workflow template to run (required).",
              "example": "123e4567-e89b-12d3-a456-426614174001"
            }
          },
          "required": [
            "originating_id",
            "originating_type",
            "workflow_template_id"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "completed_at": {
                "type": "string",
                "description": "CompletedAt is the timestamp at which the run finished.",
                "example": "2024-01-01T00:05:00Z"
              },
              "context_json": {
                "type": "object",
                "description": "ContextJSON is the assembled context snapshot for the run as a JSON object."
              },
              "created_at": {
                "type": "string",
                "description": "CreatedAt is the timestamp at which the run was created.",
                "example": "2024-01-01T00:00:00Z"
              },
              "current_step_ids": {
                "type": "array",
                "description": "CurrentStepIDs is the list of step IDs currently eligible to run.",
                "example": [
                  "step-1"
                ],
                "items": {
                  "type": "string"
                }
              },
              "id": {
                "type": "string",
                "description": "ID is the workflow run's unique identifier.",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "description": "Name is the optional display name of the run.",
                "example": "Post-meeting follow-up"
              },
              "originating_id": {
                "type": "string",
                "description": "OriginatingID is the ID of the originating object.",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "originating_type": {
                "type": "string",
                "description": "OriginatingType is the kind of object that triggered the run.",
                "enum": [
                  "meeting",
                  "canvas"
                ],
                "example": "meeting"
              },
              "owner_user_id": {
                "type": "string",
                "description": "OwnerUserID is the user whose context owns the run.",
                "example": "123e4567-e89b-12d3-a456-426614174005"
              },
              "started_at": {
                "type": "string",
                "description": "StartedAt is the timestamp at which run execution began.",
                "example": "2024-01-01T00:00:00Z"
              },
              "status": {
                "type": "string",
                "description": "Status is the current run status.",
                "enum": [
                  "pending",
                  "active",
                  "completed",
                  "failed",
                  "cancelled",
                  "frozen"
                ],
                "example": "pending"
              },
              "trigger_type": {
                "type": "string",
                "description": "TriggerType indicates how the run was triggered.",
                "enum": [
                  "manual",
                  "autopilot"
                ],
                "example": "manual"
              },
              "triggered_by": {
                "type": "string",
                "description": "TriggeredBy is the ID of the user who triggered a manual run, if applicable.",
                "example": "123e4567-e89b-12d3-a456-426614174004"
              },
              "updated_at": {
                "type": "string",
                "description": "UpdatedAt is the timestamp at which the run was last updated.",
                "example": "2024-01-01T00:00:00Z"
              },
              "workflow_template_id": {
                "type": "string",
                "description": "WorkflowTemplateID is the template that produced this run.",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "workspace_id": {
                "type": "string",
                "description": "WorkspaceID is the workspace that owns the run.",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body, invalid trigger type, or validation error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "402": {
          "description": "Plan upgrade required (Elite)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "current_plan": {
                "type": "string"
              },
              "feature": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "required_plan": {
                "type": "string"
              }
            }
          }
        },
        "404": {
          "description": "Workflow template not found in the caller's workspace",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "OAuth user operation (`workflows:write`) that triggers a workflow run from a\nworkflow template. Runs execute asynchronously — the response returns the\nrun id and initial status; poll `getWorkflowRun` (or await a webhook) for\ncompletion rather than expecting results inline. Not idempotent — each call\nstarts a new run."
    },
    "deleteActionItem": {
      "id": "deleteActionItem",
      "method": "DELETE",
      "path": "/v1/partner/user/action-items/{id}",
      "summary": "Delete action item",
      "description": "Deletes an action item if accessible to the authenticated user",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "action-items:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Action Item ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "No Content",
          "has_schema": false
        },
        "400": {
          "description": "Invalid action item ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Action item not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`action-items:write`) that deletes an action item by\n`id`. Returns success on completion; deleting an already-deleted item is\neffectively a no-op. Irreversible."
    },
    "deleteAutomation": {
      "id": "deleteAutomation",
      "method": "DELETE",
      "path": "/v1/partner/admin/automation/{automationId}",
      "summary": "Delete automation",
      "description": "Deletes an automation by ID",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "automationId",
            "in": "path",
            "required": true,
            "description": "Automation ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "No Content",
          "has_schema": false
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Automation not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) deletion of an automation by `automationId`. After deletion\nthe automation stops matching triggers and produces no further effects; in-\nflight/queued outcomes are not retroactively undone. Returns 204 on success\nand 404 if it does not exist. Accepts an optional `Idempotency-Key`;\ndeleting an already-deleted automation is effectively a no-op."
    },
    "deleteIdpConfig": {
      "id": "deleteIdpConfig",
      "method": "DELETE",
      "path": "/v1/partner/admin/idp",
      "summary": "Delete IdP configuration",
      "description": "Deletes the OIDC IdP configuration for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "No Content",
          "has_schema": false
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Not Found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) deletion of the partner app's OIDC IdP configuration. After\ndeletion SSO via that IdP stops working, so coordinate with any active SSO\nusers. Returns 204; 404 if no config exists. Accepts an optional\n`Idempotency-Key`; deleting when absent is a safe no-op."
    },
    "deleteMeetingAgendaItem": {
      "id": "deleteMeetingAgendaItem",
      "method": "DELETE",
      "path": "/v1/partner/user/meetings/{id}/agenda-items/{item_id}",
      "summary": "Delete agenda item",
      "description": "Deletes an agenda item. User must be a participant of the meeting.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "description": "Agenda Item ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Agenda item deleted successfully",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "User is not a participant of the meeting",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Agenda item not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:write`) that removes an agenda item\n(`item_id`) from a meeting (`id`). Returns success; deleting an absent item\nis a no-op. Irreversible."
    },
    "deleteMeetingContext": {
      "id": "deleteMeetingContext",
      "method": "DELETE",
      "path": "/v1/partner/user/meetings/{id}/context/{context_id}",
      "summary": "Delete meeting context",
      "description": "Deletes a specific partner-scoped meeting context by context ID.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "context:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "context_id",
            "in": "path",
            "required": true,
            "description": "Context ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "No Content",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Context not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`context:write`) that removes a context item\n(`context_id`) from a meeting (`id`). Returns success; deleting an absent\nitem is a no-op. Irreversible; removes the item from future AI processing\nfor that meeting."
    },
    "deleteTemplate": {
      "id": "deleteTemplate",
      "method": "DELETE",
      "path": "/v1/partner/admin/templates/{templateId}",
      "summary": "Delete a template",
      "description": "Deletes a template for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "description": "Template ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Template deleted",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Template not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) deletion of a template by `templateId`. Returns 204; 404 if\nunknown. Existing meetings previously created from the template are not\nretroactively changed. Accepts an optional `Idempotency-Key`; deleting when\nabsent is a safe no-op."
    },
    "deleteWebhookFilter": {
      "id": "deleteWebhookFilter",
      "method": "DELETE",
      "path": "/v1/partner/admin/webhook-filter",
      "summary": "Remove partner app webhook filter",
      "description": "Removes webhook event filtering for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "client_id": {
                "type": "string",
                "description": "OAuth client ID for this partner app",
                "example": "partner_1234567890_abcdef123456"
              },
              "company_name": {
                "type": "string",
                "description": "Name of the company that owns this partner app",
                "example": "Acme Corp"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the partner app was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "default_toolkit_id": {
                "type": "string",
                "description": "Default toolkit ID to auto-install when a workspace is provisioned via this partner app",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "description": {
                "type": "string",
                "description": "Optional description of the partner app",
                "example": "Integrates with our CRM system"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the partner app",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "description": "Display name of the partner app",
                "example": "CRM Integration"
              },
              "primary_contact_email": {
                "type": "string",
                "description": "Primary contact email for this partner app",
                "example": "contact@example.com"
              },
              "slug": {
                "type": "string",
                "description": "URL-friendly slug for the partner app",
                "example": "acme-crm"
              },
              "status": {
                "type": "string",
                "description": "Current status (active, inactive, suspended)",
                "example": "active"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the partner app was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "webhook_enabled": {
                "type": "boolean",
                "description": "Whether webhook delivery is enabled for this partner app",
                "example": true
              },
              "webhook_filter": {
                "type": "object",
                "description": "Optional webhook event filter configuration for this partner app",
                "properties": {
                  "events": {
                    "type": "array",
                    "description": "Event types included in the filter configuration",
                    "example": [
                      "meeting.created",
                      "action_item.updated"
                    ],
                    "items": {
                      "type": "string"
                    }
                  },
                  "type": {
                    "type": "string",
                    "description": "Filter mode controlling how events are matched",
                    "example": "include"
                  }
                }
              },
              "webhook_url": {
                "type": "string",
                "description": "Webhook URL for receiving event notifications",
                "example": "https://api.example.com/webhook"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) removal of the partner app's webhook event filter. Clearing\nthe filter changes which events are delivered (reverting to the default\nbehavior); confirm the resulting delivery set is what you want. Returns\nsuccess even if no filter was set. Accepts an optional `Idempotency-Key`."
    },
    "downloadMeetingContextContent": {
      "id": "downloadMeetingContextContent",
      "method": "GET",
      "path": "/v1/partner/user/meetings/{id}/context/{context_id}/content",
      "summary": "Download meeting context content",
      "description": "Streams the file bytes for a specific partner-scoped meeting context.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "context:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "context_id",
            "in": "path",
            "required": true,
            "description": "Context ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Context file stream; Content-Disposition includes filename",
          "has_schema": true,
          "schema": {
            "type": "file"
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Context not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`context:read`) that returns the raw content bytes of\na context item (`context_id`) on a meeting (`id`). Read-only; the response\nis the file/content payload, not JSON metadata. May be large."
    },
    "exchangeOauthToken": {
      "id": "exchangeOauthToken",
      "method": "POST",
      "path": "/oauth2/token",
      "summary": "OAuth 2.0 Token Endpoint",
      "description": "Exchanges authorization code for access tokens",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "grant_type",
            "in": "formData",
            "required": true,
            "description": "OAuth grant type (authorization_code)",
            "type": "string"
          },
          {
            "name": "code",
            "in": "formData",
            "required": true,
            "description": "Authorization code",
            "type": "string"
          },
          {
            "name": "redirect_uri",
            "in": "formData",
            "required": true,
            "description": "OAuth redirect URI",
            "type": "string"
          },
          {
            "name": "client_id",
            "in": "formData",
            "required": true,
            "description": "OAuth client ID",
            "type": "string"
          },
          {
            "name": "client_secret",
            "in": "formData",
            "required": false,
            "description": "OAuth client secret",
            "type": "string"
          },
          {
            "name": "code_verifier",
            "in": "formData",
            "required": false,
            "description": "PKCE code verifier",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "access_token": {
                "type": "string",
                "example": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
              },
              "expires_in": {
                "type": "integer",
                "example": 3600
              },
              "id_token": {
                "type": "string",
                "example": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
              },
              "refresh_token": {
                "type": "string",
                "example": "eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIn0..."
              },
              "scope": {
                "type": "string",
                "example": "openid profile email"
              },
              "token_type": {
                "type": "string",
                "example": "Bearer"
              }
            }
          }
        },
        "400": {
          "description": "Bad Request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Public OAuth 2.0 token endpoint. Exchanges an authorization `code` for\naccess/refresh tokens; requires `grant_type=authorization_code`, `code`,\n`redirect_uri`, and `client_id`, with `client_secret` or PKCE\n`code_verifier` proving the client. The `code` is single-use and short-lived\n— a second exchange fails. Response tokens are secrets: never log them or\necho them into tool arguments.",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "executeMeetingNextStep": {
      "id": "executeMeetingNextStep",
      "method": "POST",
      "path": "/v1/partner/user/meetings/{id}/next-steps/{next_step_id}/execute",
      "summary": "Execute a next step",
      "description": "Executes a next step for a meeting. For AI-type next steps, this triggers AI generation. For redirect-type next steps, this returns the redirect URL.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "next_step_id",
            "in": "path",
            "required": true,
            "description": "Next Step ID",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Execution request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "action_button_id": {
              "type": "string",
              "description": "Action button ID if triggered via a specific action button",
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "content_format": {
                "type": "string",
                "description": "Content format of the generated text",
                "example": "markdown"
              },
              "execution_log_id": {
                "type": "string",
                "description": "Unique identifier for the execution log entry",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "generated_text": {
                "type": "string",
                "description": "Generated text content (only included for sync execution of AI-type)",
                "example": "# Meeting Summary\n\nKey points discussed..."
              },
              "redirect_url": {
                "type": "string",
                "description": "Redirect URL for redirect-type next steps",
                "example": "https://partner.example.com/invoice?meeting_id=abc"
              },
              "result_id": {
                "type": "string",
                "description": "Result ID for AI-type next steps (use to retrieve generated content)",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "status": {
                "type": "string",
                "description": "Execution status",
                "example": "completed"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting or next step not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "OAuth user operation (`meetings:write`) that executes a next step\n(`next_step_id`) for a meeting (`id`). Execution is typically asynchronous —\nthe response acknowledges the request, and the outcome is retrieved later\nvia `getNextStepResult` (or a webhook), not in the response body. Not\nidempotent — executing twice runs it twice."
    },
    "exportMeetingTranscript": {
      "id": "exportMeetingTranscript",
      "method": "GET",
      "path": "/v1/partner/user/meetings/{id}/transcript/export",
      "summary": "Export meeting transcript",
      "description": "Download the meeting transcript as an SRT file. Requires the Elite plan.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format (default: srt)",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "SRT file content",
          "has_schema": true,
          "schema": {
            "type": "string"
          }
        },
        "400": {
          "description": "Unsupported format",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "402": {
          "description": "Plan upgrade required (Elite)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "current_plan": {
                "type": "string"
              },
              "feature": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "required_plan": {
                "type": "string"
              }
            }
          }
        },
        "403": {
          "description": "Forbidden / insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Transcript not found or empty",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:read`) that returns the meeting transcript\n(`id`) in an exportable form. Available only once the meeting has a\ntranscript (e.g. after processing completes); before then it may be empty or\nreturn an error. Read-only; response may be a file/large payload."
    },
    "getActionItem": {
      "id": "getActionItem",
      "method": "GET",
      "path": "/v1/partner/user/action-items/{id}",
      "summary": "Get action item by ID",
      "description": "Retrieves a specific action item by ID if accessible to the authenticated partner user",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "action-items:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Action Item ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "assigned_to_user_id": {
                "type": "string",
                "description": "ID of the user assigned to this action item",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "completed_at": {
                "type": "string",
                "description": "Timestamp when the action item was completed",
                "example": "2023-01-08T18:00:00-07:00"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the action item was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "description": "Detailed description of the action item",
                "example": "Follow up with client about proposal"
              },
              "due_date": {
                "type": "string",
                "description": "Due date in YYYY-MM-DD format",
                "example": "2023-01-08"
              },
              "has_partner_assignment": {
                "type": "boolean",
                "description": "Whether this action item was assigned via partner automation",
                "example": true
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the action item",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "is_completed": {
                "type": "boolean",
                "description": "Whether the action item has been completed",
                "example": false
              },
              "meeting_id": {
                "type": "string",
                "description": "ID of the meeting this action item belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "partner_context": {
                "type": "object",
                "description": "Partner-specific context data stored with the action item",
                "additionalProperties": {}
              },
              "status": {
                "type": "string",
                "description": "Current status (needs_review, accepted, in_progress, blocked, completed, cancelled)",
                "example": "accepted"
              },
              "title": {
                "type": "string",
                "description": "Title of the action item",
                "example": "Client follow-up call"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the action item was last updated",
                "example": "2023-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid action item ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Action item not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`action-items:read`) returning a single action item by\n`id`; 404 if it does not exist or is outside the user's visibility. Read-\nonly."
    },
    "getApp": {
      "id": "getApp",
      "method": "GET",
      "path": "/v1/partner/admin/app",
      "summary": "Get partner app information",
      "description": "Retrieves information about the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "client_id": {
                "type": "string",
                "description": "OAuth client ID for this partner app",
                "example": "partner_1234567890_abcdef123456"
              },
              "company_name": {
                "type": "string",
                "description": "Name of the company that owns this partner app",
                "example": "Acme Corp"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the partner app was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "default_toolkit_id": {
                "type": "string",
                "description": "Default toolkit ID to auto-install when a workspace is provisioned via this partner app",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "description": {
                "type": "string",
                "description": "Optional description of the partner app",
                "example": "Integrates with our CRM system"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the partner app",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "description": "Display name of the partner app",
                "example": "CRM Integration"
              },
              "primary_contact_email": {
                "type": "string",
                "description": "Primary contact email for this partner app",
                "example": "contact@example.com"
              },
              "slug": {
                "type": "string",
                "description": "URL-friendly slug for the partner app",
                "example": "acme-crm"
              },
              "status": {
                "type": "string",
                "description": "Current status (active, inactive, suspended)",
                "example": "active"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the partner app was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "webhook_enabled": {
                "type": "boolean",
                "description": "Whether webhook delivery is enabled for this partner app",
                "example": true
              },
              "webhook_filter": {
                "type": "object",
                "description": "Optional webhook event filter configuration for this partner app",
                "properties": {
                  "events": {
                    "type": "array",
                    "description": "Event types included in the filter configuration",
                    "example": [
                      "meeting.created",
                      "action_item.updated"
                    ],
                    "items": {
                      "type": "string"
                    }
                  },
                  "type": {
                    "type": "string",
                    "description": "Filter mode controlling how events are matched",
                    "example": "include"
                  }
                }
              },
              "webhook_url": {
                "type": "string",
                "description": "Webhook URL for receiving event notifications",
                "example": "https://api.example.com/webhook"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) read of the authenticated partner app's own record — name,\ndescription, webhook URL, status, and related metadata. Scoped to the\ncaller's app; there is no cross-app access. Read-only."
    },
    "getAutomation": {
      "id": "getAutomation",
      "method": "GET",
      "path": "/v1/partner/admin/automation/{automationId}",
      "summary": "Get automation by ID",
      "description": "Retrieves a specific automation by ID for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "automationId",
            "in": "path",
            "required": true,
            "description": "Automation ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "actions": {
                "type": "array",
                "description": "Actions to execute when the automation is triggered",
                "items": {
                  "type": "object",
                  "properties": {
                    "config": {
                      "type": "object",
                      "example": {
                        "url": "https://api.example.com/webhook"
                      },
                      "additionalProperties": {
                        "type": "string"
                      }
                    },
                    "type": {
                      "type": "string",
                      "example": "webhook"
                    }
                  },
                  "required": [
                    "type"
                  ]
                }
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the automation was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "description": "Optional description of what the automation does",
                "example": "Sync action items to CRM"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the automation",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "name": {
                "type": "string",
                "description": "Name of the automation",
                "example": "CRM Integration"
              },
              "partner_app_id": {
                "type": "string",
                "description": "ID of the partner app that owns this automation",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "status": {
                "type": "string",
                "description": "Current status (active or inactive)",
                "example": "active"
              },
              "trigger_type": {
                "type": "string",
                "description": "Event type that triggers this automation",
                "example": "action_item_created"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the automation was last updated",
                "example": "2023-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid automation ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Automation not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) read of a single automation by `automationId`. Returns 404\nif the automation does not exist or belongs to another app. Read-only."
    },
    "getCalendarEvent": {
      "id": "getCalendarEvent",
      "method": "GET",
      "path": "/v1/partner/user/calendar/events/{calendar_event_id}",
      "summary": "Get calendar event by ID",
      "description": "Retrieve details of a specific calendar event for the authenticated user",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "calendar:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "calendar_event_id",
            "in": "path",
            "required": true,
            "description": "Calendar Event ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "attendees": {
                "type": "array",
                "description": "List of attendees for the calendar event",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "description": "Email address of the attendee",
                      "example": "john.doe@example.com"
                    },
                    "name": {
                      "type": "string",
                      "description": "Display name of the attendee",
                      "example": "John Doe"
                    },
                    "status": {
                      "type": "string",
                      "description": "RSVP status (accepted, declined, tentative, needs_action)",
                      "example": "accepted"
                    },
                    "type": {
                      "type": "string",
                      "description": "Attendee type (required, optional, resource)",
                      "example": "required"
                    }
                  }
                }
              },
              "description": {
                "type": "string",
                "description": "Description or body of the calendar event",
                "example": "Discuss project updates"
              },
              "end_time": {
                "type": "string",
                "description": "End time of the event in RFC3339 format",
                "example": "2023-01-01T11:00:00-07:00"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the calendar event",
                "example": "123e4567-e89b-12d3-a456-426614174006"
              },
              "linked_meetings": {
                "type": "array",
                "description": "IDs of all linked Contio meetings, sorted by creation date (oldest first)",
                "example": [
                  "[\"123e4567-e89b-12d3-a456-426614174000\"]"
                ],
                "items": {
                  "type": "string"
                }
              },
              "location": {
                "type": "string",
                "description": "Location of the event (physical or virtual)",
                "example": "Conference Room A"
              },
              "meeting_id": {
                "type": "string",
                "description": "Deprecated: Use linked_meetings instead. ID of the first (oldest) linked Contio meeting.",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "organizer": {
                "type": "object",
                "description": "Organizer of the calendar event",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "Email address of the attendee",
                    "example": "john.doe@example.com"
                  },
                  "name": {
                    "type": "string",
                    "description": "Display name of the attendee",
                    "example": "John Doe"
                  },
                  "status": {
                    "type": "string",
                    "description": "RSVP status (accepted, declined, tentative, needs_action)",
                    "example": "accepted"
                  },
                  "type": {
                    "type": "string",
                    "description": "Attendee type (required, optional, resource)",
                    "example": "required"
                  }
                }
              },
              "start_time": {
                "type": "string",
                "description": "Start time of the event in RFC3339 format",
                "example": "2023-01-01T10:00:00-07:00"
              },
              "title": {
                "type": "string",
                "description": "Title of the calendar event",
                "example": "Weekly Team Sync"
              }
            }
          }
        },
        "400": {
          "description": "Invalid calendar event ID format",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "User does not have access to this calendar event",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Calendar event not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`calendar:read`) returning a single calendar event by\n`calendar_event_id`; 404 if unknown or not visible to the user. Read-only."
    },
    "getConnection": {
      "id": "getConnection",
      "method": "GET",
      "path": "/v1/partner/admin/connections/{connectionId}",
      "summary": "Get user connection by ID",
      "description": "Retrieves a specific user connection by ID if it belongs to the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "description": "Connection ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "description": "Timestamp when the connection was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "feature_activated_at": {
                "type": "string",
                "description": "When the partner feature was activated for this user",
                "example": "2023-01-01T00:00:00Z"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the user connection",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              },
              "last_used_at": {
                "type": "string",
                "description": "When the user last used the partner integration",
                "example": "2023-01-15T10:30:00Z"
              },
              "oauth_expires_at": {
                "type": "string",
                "description": "Expiration time of the OAuth token",
                "example": "2023-12-31T23:59:59Z"
              },
              "oauth_scopes": {
                "type": "array",
                "description": "OAuth scopes granted by the user",
                "example": [
                  "['openid'",
                  " 'profile'",
                  " 'meetings:read']"
                ],
                "items": {
                  "type": "string"
                }
              },
              "status": {
                "type": "string",
                "description": "Current status of the connection (active, inactive, revoked)",
                "example": "active"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the connection was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "user_email": {
                "type": "string",
                "description": "Email address of the connected user",
                "example": "john.doe@example.com"
              },
              "user_id": {
                "type": "string",
                "description": "ID of the connected user",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "user_name": {
                "type": "string",
                "description": "Display name of the connected user",
                "example": "John Doe"
              }
            }
          }
        },
        "400": {
          "description": "Invalid connection ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Connection not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) read of a single user connection by `connectionId`, only if\nit belongs to the calling app (otherwise 404). Reflects the user's current\nauthorization/connection status. Read-only."
    },
    "getCredentialStatus": {
      "id": "getCredentialStatus",
      "method": "GET",
      "path": "/v1/partner/admin/credentials",
      "summary": "Get credential status",
      "description": "Returns the status, age, and health information for all partner credentials",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "age_days": {
                  "type": "integer",
                  "description": "Age of the credential in days",
                  "example": 5
                },
                "created_at": {
                  "type": "string",
                  "description": "When the credential was created",
                  "example": "2024-01-01T00:00:00Z"
                },
                "credential_type": {
                  "type": "string",
                  "description": "Type of credential (api_key or client_secret)",
                  "example": "api_key"
                },
                "grace_period_ends_at": {
                  "type": "string",
                  "description": "When the grace period ends (if in pending_rotation status)",
                  "example": "2024-01-12T10:30:00Z"
                },
                "last_rotated_at": {
                  "type": "string",
                  "description": "When the credential was last rotated",
                  "example": "2024-01-10T10:30:00Z"
                },
                "last_used_at": {
                  "type": "string",
                  "description": "When the credential was last used for authentication",
                  "example": "2024-01-20T10:30:00Z"
                },
                "recommended_action": {
                  "type": "string",
                  "description": "Recommended action (ok, rotate_soon, rotate_now)",
                  "example": "ok"
                },
                "status": {
                  "type": "string",
                  "description": "Current status (active, pending_rotation, expired)",
                  "example": "active"
                }
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) read of the status, age, and health of the partner app's\ncredentials (API key, client secret, webhook secret) — including whether a\nrotation grace period is active. Returns metadata only, never the secret\nvalues themselves. Read-only; use it before rotating to understand current\ncredential age/state."
    },
    "getIdpConfig": {
      "id": "getIdpConfig",
      "method": "GET",
      "path": "/v1/partner/admin/idp",
      "summary": "Get IdP configuration",
      "description": "Retrieves the OIDC IdP configuration for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "allowed_email_domains": {
                "type": "array",
                "description": "Email domains allowed for SSO",
                "example": [
                  "company.com",
                  "subsidiary.com"
                ],
                "items": {
                  "type": "string"
                }
              },
              "authorization_endpoint": {
                "type": "string",
                "description": "Discovered OIDC authorization endpoint",
                "example": "https://company.okta.com/authorize"
              },
              "claim_mappings": {
                "type": "object",
                "description": "Maps Contio user fields to IdP claim names",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "created_at": {
                "type": "string",
                "example": "2024-01-01T00:00:00Z"
              },
              "discovery_last_fetched_at": {
                "type": "string",
                "description": "When the OIDC discovery document was last fetched",
                "example": "2024-01-01T00:00:00Z"
              },
              "discovery_url": {
                "type": "string",
                "description": "OIDC discovery endpoint URL",
                "example": "https://company.okta.com/.well-known/openid-configuration"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "idp_client_id": {
                "type": "string",
                "description": "OAuth Client ID from your Identity Provider (secret is never returned)",
                "example": "0oa1234567890abcdef"
              },
              "is_active": {
                "type": "boolean",
                "description": "Whether this IdP configuration is active",
                "example": true
              },
              "issuer": {
                "type": "string",
                "description": "Discovered OIDC issuer",
                "example": "https://company.okta.com"
              },
              "jwks_uri": {
                "type": "string",
                "description": "Discovered OIDC JWKS URI",
                "example": "https://company.okta.com/jwks"
              },
              "mode": {
                "type": "string",
                "description": "Domain validation mode",
                "example": "strict"
              },
              "name": {
                "type": "string",
                "description": "Display name for this IdP configuration",
                "example": "Okta SSO"
              },
              "partner_app_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "scopes": {
                "type": "array",
                "description": "OIDC scopes requested during authentication",
                "example": [
                  "openid",
                  "email",
                  "profile"
                ],
                "items": {
                  "type": "string"
                }
              },
              "token_endpoint": {
                "type": "string",
                "description": "Discovered OIDC token endpoint",
                "example": "https://company.okta.com/token"
              },
              "type": {
                "type": "string",
                "description": "IdP type (always \"oidc\")",
                "example": "oidc"
              },
              "updated_at": {
                "type": "string",
                "example": "2024-01-01T00:00:00Z"
              },
              "userinfo_endpoint": {
                "type": "string",
                "description": "Discovered OIDC userinfo endpoint",
                "example": "https://company.okta.com/userinfo"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Not Found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) read of the partner app's OIDC IdP (SSO) configuration.\nReturns 404 when no configuration exists. Secret fields such as the IdP\nclient secret are not returned in full. Read-only."
    },
    "getMeeting": {
      "id": "getMeeting",
      "method": "GET",
      "path": "/v1/partner/user/meetings/{id}",
      "summary": "Get meeting by ID",
      "description": "Retrieves a specific meeting by ID if accessible to the authenticated partner user. When the autopilot_smart_redirect feature flag is enabled and the meeting has been copied to the user's workspace, the response will contain only the redirect_to_meeting_id field pointing to the workspace copy. Clients should follow this redirect to access the correct meeting. The Partner SDK handles this automatically.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Meeting details or smart redirect hint (redirect_to_meeting_id field only when redirecting)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "calendar_event_id": {
                "type": "string",
                "description": "ID of the linked calendar event, if any",
                "example": "123e4567-e89b-12d3-a456-426614174006"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the meeting was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "created_by_user_id": {
                "type": "string",
                "description": "ID of the user who created the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "end_time": {
                "type": "string",
                "description": "Scheduled end time in RFC3339 format",
                "example": "2023-01-01T11:00:00-07:00"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "redirect_to_meeting_id": {
                "type": "string",
                "description": "ID of the meeting to redirect to if this meeting was merged",
                "example": "123e4567-e89b-12d3-a456-426614174007"
              },
              "start_time": {
                "type": "string",
                "description": "Scheduled start time in RFC3339 format",
                "example": "2023-01-01T10:00:00-07:00"
              },
              "status": {
                "type": "string",
                "description": "Current status of the meeting",
                "enum": [
                  "draft",
                  "scheduled",
                  "in_progress",
                  "ended",
                  "completed"
                ],
                "example": "completed"
              },
              "summary_notes": {
                "type": "string",
                "description": "AI-generated summary notes from the meeting",
                "example": "Post-Meeting Summarization ..."
              },
              "title": {
                "type": "string",
                "description": "Title of the meeting",
                "example": "Weekly Team Sync"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the meeting was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "workspace_id": {
                "type": "string",
                "description": "ID of the workspace this meeting belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              }
            }
          }
        },
        "400": {
          "description": "Invalid meeting ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:read`) returning a single meeting by `id`\nwith its details; 404 if unknown or not accessible to the user. Read-only."
    },
    "getMeetingContext": {
      "id": "getMeetingContext",
      "method": "GET",
      "path": "/v1/partner/user/meetings/{id}/context/{context_id}",
      "summary": "Get meeting context",
      "description": "Retrieves a specific partner-scoped meeting context by context ID.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "context:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "context_id",
            "in": "path",
            "required": true,
            "description": "Context ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "context_type": {
                "type": "string"
              },
              "created_at": {
                "type": "string"
              },
              "created_by_user_id": {
                "type": "string"
              },
              "deleted_at": {
                "type": "string"
              },
              "file_status": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "meeting_id": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              },
              "partner_app_id": {
                "type": "string"
              },
              "platform_name": {
                "type": "string"
              },
              "source_format": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "updated_at": {
                "type": "string"
              },
              "workspace_id": {
                "type": "string"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Context not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`context:read`) returning metadata for a single\ncontext item (`context_id`) on a meeting (`id`); use\n`downloadMeetingContextContent` for the raw bytes. Read-only."
    },
    "getMeetingTemplate": {
      "id": "getMeetingTemplate",
      "method": "GET",
      "path": "/v1/partner/user/meeting-templates/{id}",
      "summary": "Get meeting template",
      "description": "Retrieves a meeting template by ID with its full contents",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting template ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "agenda_item_count": {
                "type": "integer",
                "description": "Number of agenda items in the template",
                "example": 5
              },
              "can_edit": {
                "type": "boolean",
                "description": "Whether the current user can edit this template",
                "example": true
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the template was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "description": "Description of the template",
                "example": "Standard agenda for weekly team meetings"
              },
              "document_count": {
                "type": "integer",
                "description": "Number of documents in the template",
                "example": 2
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the meeting template",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "is_active": {
                "type": "boolean",
                "description": "Whether the template is active",
                "example": true
              },
              "name": {
                "type": "string",
                "description": "Name of the template",
                "example": "Weekly Team Sync Template"
              },
              "ownership_type": {
                "type": "string",
                "description": "Ownership level of the template (SYSTEM, VERTICAL, WORKSPACE, USER, PARTNER)",
                "enum": [
                  "SYSTEM",
                  "VERTICAL",
                  "WORKSPACE",
                  "USER",
                  "PARTNER"
                ],
                "example": "WORKSPACE"
              },
              "participant_count": {
                "type": "integer",
                "description": "Number of participants in the template",
                "example": 3
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the template was last updated",
                "example": "2023-01-01T00:00:00Z"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Access denied",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Template not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:read`) returning a single meeting template\nby `id`, including its agenda/context/next-step scaffolding. Read-only."
    },
    "getNextStepResult": {
      "id": "getNextStepResult",
      "method": "GET",
      "path": "/v1/partner/user/next-step-results/{result_id}",
      "summary": "Get a next step result",
      "description": "Retrieves AI-generated content from a next step execution. Results expire after 7 days.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "result_id",
            "in": "path",
            "required": true,
            "description": "Result ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "content_format": {
                "type": "string",
                "description": "The format of the generated content",
                "example": "markdown"
              },
              "created_at": {
                "type": "string",
                "description": "When the result was created",
                "example": "2026-03-25T10:00:00Z"
              },
              "execution_log_id": {
                "type": "string",
                "description": "The execution log ID that produced this result",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "expires_at": {
                "type": "string",
                "description": "When the result expires",
                "example": "2026-04-01T10:00:00Z"
              },
              "generated_text": {
                "type": "string",
                "description": "The AI-generated text content",
                "example": "# Meeting Summary\n\nKey discussion points..."
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the result",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Result not found or expired",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:read`) returning the result of a previously\nexecuted next step by `result_id`. Poll this after `executeMeetingNextStep`\n— the result may be pending until asynchronous processing finishes. Read-\nonly."
    },
    "getOauthHealth": {
      "id": "getOauthHealth",
      "method": "GET",
      "path": "/oauth2/health",
      "summary": "Health Check for OAuth/Cognito Service",
      "description": "Tests connectivity to Cognito and returns service status",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "checks": {
                "type": "object",
                "additionalProperties": {
                  "type": "object"
                }
              },
              "service": {
                "type": "string",
                "example": "partner-oauth"
              },
              "status": {
                "type": "string",
                "example": "healthy"
              },
              "timestamp": {
                "type": "string",
                "example": "2024-01-14T10:00:00Z"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Public health probe for the partner OAuth/Cognito service. Returns service\nstatus with no authentication. Intended for monitoring/liveness checks, not\nfor application logic."
    },
    "getOauthJwks": {
      "id": "getOauthJwks",
      "method": "GET",
      "path": "/.well-known/jwks.json",
      "summary": "JSON Web Key Set Endpoint",
      "description": "Returns the JSON Web Key Set for token verification",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "keys": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "alg": {
                      "type": "string",
                      "example": "RS256"
                    },
                    "crv": {
                      "type": "string",
                      "description": "For ECDSA keys",
                      "example": "P-256"
                    },
                    "d": {
                      "type": "string",
                      "description": "For RSA and ECDSA private keys (optional)"
                    },
                    "e": {
                      "type": "string",
                      "example": "AQAB"
                    },
                    "kid": {
                      "type": "string",
                      "example": "key-id-1"
                    },
                    "kty": {
                      "type": "string",
                      "example": "RSA"
                    },
                    "n": {
                      "type": "string",
                      "example": "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw"
                    },
                    "use": {
                      "type": "string",
                      "example": "sig"
                    },
                    "x": {
                      "type": "string"
                    },
                    "y": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Public JWKS endpoint that returns the partner OAuth signing keys used to\nverify issued access/ID tokens. No authentication. Keys rotate, so fetch on\ndemand and cache by `kid` rather than pinning a single key; select the key\nwhose `kid` matches the token header. This is infrastructure for token\nverification libraries — an agent rarely calls it directly."
    },
    "getOauthUserInfo": {
      "id": "getOauthUserInfo",
      "method": "GET",
      "path": "/oauth2/userInfo",
      "summary": "Get user information",
      "description": "Returns user information for the provided access token",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "Authorization",
            "in": "header",
            "required": true,
            "description": "Bearer access token",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "email": {
                "type": "string",
                "example": "user@example.com"
              },
              "email_verified": {
                "type": "boolean",
                "example": true
              },
              "family_name": {
                "type": "string",
                "example": "Doe"
              },
              "given_name": {
                "type": "string",
                "example": "John"
              },
              "locale": {
                "type": "string",
                "example": "en-US"
              },
              "name": {
                "type": "string",
                "example": "John Doe"
              },
              "phone_number": {
                "type": "string",
                "example": "+1234567890"
              },
              "phone_number_verified": {
                "type": "boolean",
                "example": false
              },
              "picture": {
                "type": "string",
                "example": "https://example.com/avatar.jpg"
              },
              "sub": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              }
            }
          }
        },
        "400": {
          "description": "Bad Request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Public OIDC UserInfo endpoint. Returns profile claims for the user bound to\nthe bearer access token supplied in the `Authorization` header. The claims\nreturned are limited to what the token's granted scopes allow; a\nmissing/expired token returns 401. Read-only."
    },
    "getOpenidConfiguration": {
      "id": "getOpenidConfiguration",
      "method": "GET",
      "path": "/.well-known/openid_configuration",
      "summary": "OpenID Connect Discovery Endpoint",
      "description": "Returns the OpenID Connect discovery document",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "authorization_endpoint": {
                "type": "string",
                "example": "https://auth.contio.io/oauth2/authorize"
              },
              "claims_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "id_token_signing_alg_values_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "introspection_endpoint": {
                "type": "string",
                "example": "https://auth.contio.io/oauth2/introspect"
              },
              "issuer": {
                "type": "string",
                "example": "https://auth.contio.io"
              },
              "jwks_uri": {
                "type": "string",
                "example": "https://auth.contio.io/.well-known/jwks.json"
              },
              "response_types_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "revocation_endpoint": {
                "type": "string",
                "example": "https://auth.contio.io/oauth2/revoke"
              },
              "scopes_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "subject_types_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "token_endpoint": {
                "type": "string",
                "example": "https://auth.contio.io/oauth2/token"
              },
              "token_endpoint_auth_methods_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "userinfo_endpoint": {
                "type": "string",
                "example": "https://auth.contio.io/oauth2/userInfo"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Public OpenID Connect discovery document (`.well-\nknown/openid_configuration`) listing the authorization, token, userinfo,\nJWKS, and introspection/revocation endpoints plus supported scopes and grant\ntypes. No authentication. Use it to configure a standard OIDC/OAuth client\nrather than hard-coding endpoint URLs."
    },
    "getProfile": {
      "id": "getProfile",
      "method": "GET",
      "path": "/v1/partner/user/profile",
      "summary": "Get user profile",
      "description": "Retrieves the authenticated user's profile information including workspace details and role",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "profile"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "description": "Timestamp when the user account was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "display_name": {
                "type": "string",
                "description": "User's display name",
                "example": "John Doe"
              },
              "email": {
                "type": "string",
                "description": "User's email address",
                "example": "john.doe@example.com"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the user",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "plan_type": {
                "type": "string",
                "description": "Workspace billing plan (FREE, PRO, ELITE, ENT)",
                "example": "FREE"
              },
              "workspace_id": {
                "type": "string",
                "description": "ID of the workspace the user belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              },
              "workspace_name": {
                "type": "string",
                "description": "Name of the workspace the user belongs to",
                "example": "Acme Corp"
              },
              "workspace_role": {
                "type": "string",
                "description": "User's role in the workspace (e.g., WORKSPACE_OWNER, WORKSPACE_ADMIN, WORKSPACE_MEMBER)",
                "example": "WORKSPACE_MEMBER"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`profile` scope) returning the authenticated user's\nprofile (identity/workspace info visible to the app). Returns only what the\ngranted scope permits. Read-only."
    },
    "getPublicPartnerInfo": {
      "id": "getPublicPartnerInfo",
      "method": "GET",
      "path": "/v1/partner/info/{client_id}/public",
      "summary": "Get Public Partner Information by Client ID",
      "description": "Returns safe public partner app information for display in OAuth login/consent pages. This endpoint does not require client authentication and only returns safe public information like name and company.",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "client_id",
            "in": "path",
            "required": true,
            "description": "Partner Client ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "client_id": {
                "type": "string",
                "example": "partner_abc123"
              },
              "co_brand_name": {
                "type": "string",
                "example": "Powered by Contio"
              },
              "company_name": {
                "type": "string",
                "example": "Acme Corporation"
              },
              "name": {
                "type": "string",
                "example": "Acme CRM"
              }
            }
          }
        },
        "404": {
          "description": "Not Found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Public, unauthenticated lookup of a partner app's display information by\n`client_id` (name, branding) for rendering login/consent pages. Returns only\npublic-safe fields — no secrets or internal configuration. Read-only."
    },
    "getSession": {
      "id": "getSession",
      "method": "GET",
      "path": "/v1/partner/user/sessions/{id}",
      "summary": "Get chat session details",
      "description": "Retrieves details of a specific chat session including turns based on query parameters",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "chat:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Session ID",
            "type": "string"
          },
          {
            "name": "turn_limit",
            "in": "query",
            "required": false,
            "description": "Maximum turns to return (1-200, default: 50)",
            "type": "integer"
          },
          {
            "name": "turn_offset",
            "in": "query",
            "required": false,
            "description": "Pagination offset for turns",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Session retrieved successfully",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "session": {
                "type": "object",
                "description": "Session details",
                "properties": {
                  "created_at": {
                    "type": "string",
                    "description": "Timestamp when the session was created",
                    "example": "2026-03-16T14:30:00Z"
                  },
                  "id": {
                    "type": "string",
                    "description": "Unique identifier for the session",
                    "example": "f7e6d5c4-b3a2-1098-7654-321fedcba098"
                  },
                  "meeting_id": {
                    "type": "string",
                    "description": "ID of the associated meeting (if any)",
                    "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
                  },
                  "metadata": {
                    "type": "object",
                    "description": "Partner-supplied metadata",
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "status": {
                    "type": "string",
                    "description": "Current session status: active, closed, or expired",
                    "enum": [
                      "active",
                      "closed",
                      "expired"
                    ],
                    "example": "active"
                  },
                  "title": {
                    "type": "string",
                    "description": "Session title (if any)",
                    "example": "Quarterly Product Review Planning"
                  },
                  "turn_count": {
                    "type": "integer",
                    "description": "Total number of turns in this session (user + agent messages)",
                    "example": 4
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "Timestamp when the session was last updated",
                    "example": "2026-03-16T14:35:12Z"
                  }
                }
              },
              "turn_pagination": {
                "type": "object",
                "description": "Pagination info for turns",
                "properties": {
                  "has_more": {
                    "type": "boolean",
                    "description": "Whether there are more turns",
                    "example": false
                  },
                  "limit": {
                    "type": "integer",
                    "description": "Limit used",
                    "example": 50
                  },
                  "offset": {
                    "type": "integer",
                    "description": "Current offset",
                    "example": 0
                  },
                  "total": {
                    "type": "integer",
                    "description": "Total turns in the session",
                    "example": 12
                  }
                }
              },
              "turns": {
                "type": "array",
                "description": "Turns in this session (based on turn_limit parameter)",
                "items": {
                  "type": "object",
                  "properties": {
                    "agent_metadata": {
                      "type": "object",
                      "description": "Agent execution metadata (present only for role=agent turns)",
                      "properties": {
                        "referenced_documents": {
                          "type": "array",
                          "description": "Context document IDs the agent referenced",
                          "items": {
                            "type": "string"
                          }
                        },
                        "token_usage": {
                          "type": "object",
                          "description": "Token usage statistics",
                          "properties": {
                            "completion_tokens": {
                              "type": "integer",
                              "description": "Number of output tokens",
                              "example": 200
                            },
                            "prompt_tokens": {
                              "type": "integer",
                              "description": "Number of input tokens",
                              "example": 150
                            },
                            "total_tokens": {
                              "type": "integer",
                              "description": "Total tokens used",
                              "example": 350
                            }
                          }
                        },
                        "tool_calls": {
                          "type": "array",
                          "description": "Tools the agent invoked during this turn",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string",
                                "description": "Name of the tool",
                                "example": "search_meeting_notes"
                              },
                              "status": {
                                "type": "string",
                                "description": "Execution status",
                                "enum": [
                                  "success",
                                  "failure"
                                ],
                                "example": "success"
                              }
                            }
                          }
                        }
                      }
                    },
                    "completed_at": {
                      "type": "string",
                      "description": "Timestamp when the turn finished processing (null if not completed)",
                      "example": "2026-03-16T14:30:15Z"
                    },
                    "content": {
                      "type": "string",
                      "description": "Message text content",
                      "example": "Summarize the key decisions from this meeting"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the turn was created/enqueued",
                      "example": "2026-03-16T14:30:00Z"
                    },
                    "error": {
                      "type": "object",
                      "description": "Error details when status=failed",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Error code",
                          "example": "agent_error"
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable error message",
                          "example": "Agent processing failed"
                        }
                      }
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the turn (message ID)",
                      "example": "turn-uuid-1234"
                    },
                    "role": {
                      "type": "string",
                      "description": "Role of the message author: user or agent",
                      "enum": [
                        "user",
                        "agent"
                      ],
                      "example": "user"
                    },
                    "sequence_number": {
                      "type": "integer",
                      "description": "Sequence number in the conversation",
                      "example": 1
                    },
                    "session_id": {
                      "type": "string",
                      "description": "ID of the session this turn belongs to",
                      "example": "f7e6d5c4-b3a2-1098-7654-321fedcba098"
                    },
                    "status": {
                      "type": "string",
                      "description": "Turn processing status: queued, processing, completed, or failed",
                      "enum": [
                        "queued",
                        "processing",
                        "completed",
                        "failed"
                      ],
                      "example": "completed"
                    }
                  }
                }
              }
            }
          }
        },
        "400": {
          "description": "Invalid session ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Session not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`chat:read`) that returns a chat session by `id`,\nincluding its turns and current state. Because turns are processed\nasynchronously (see createSession/sendSessionMessage), a session fetched\nright after submitting a turn may still show that turn as pending — poll\nthis endpoint or rely on the `session.turn.completed` webhook rather than\nassuming the reply is present. Read-only; scoped to the authenticated user's\nown sessions."
    },
    "getSessionTurn": {
      "id": "getSessionTurn",
      "method": "GET",
      "path": "/v1/partner/user/sessions/{id}/turns/{turn_id}",
      "summary": "Get specific turn",
      "description": "Retrieves details of a specific turn within a chat session by its ID",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "chat:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Session ID",
            "type": "string"
          },
          {
            "name": "turn_id",
            "in": "path",
            "required": true,
            "description": "Turn ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Turn retrieved successfully",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "turn": {
                "type": "object",
                "description": "The requested turn details",
                "properties": {
                  "agent_metadata": {
                    "type": "object",
                    "description": "Agent execution metadata (present only for role=agent turns)",
                    "properties": {
                      "referenced_documents": {
                        "type": "array",
                        "description": "Context document IDs the agent referenced",
                        "items": {
                          "type": "string"
                        }
                      },
                      "token_usage": {
                        "type": "object",
                        "description": "Token usage statistics",
                        "properties": {
                          "completion_tokens": {
                            "type": "integer",
                            "description": "Number of output tokens",
                            "example": 200
                          },
                          "prompt_tokens": {
                            "type": "integer",
                            "description": "Number of input tokens",
                            "example": 150
                          },
                          "total_tokens": {
                            "type": "integer",
                            "description": "Total tokens used",
                            "example": 350
                          }
                        }
                      },
                      "tool_calls": {
                        "type": "array",
                        "description": "Tools the agent invoked during this turn",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Name of the tool",
                              "example": "search_meeting_notes"
                            },
                            "status": {
                              "type": "string",
                              "description": "Execution status",
                              "enum": [
                                "success",
                                "failure"
                              ],
                              "example": "success"
                            }
                          }
                        }
                      }
                    }
                  },
                  "completed_at": {
                    "type": "string",
                    "description": "Timestamp when the turn finished processing (null if not completed)",
                    "example": "2026-03-16T14:30:15Z"
                  },
                  "content": {
                    "type": "string",
                    "description": "Message text content",
                    "example": "Summarize the key decisions from this meeting"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Timestamp when the turn was created/enqueued",
                    "example": "2026-03-16T14:30:00Z"
                  },
                  "error": {
                    "type": "object",
                    "description": "Error details when status=failed",
                    "properties": {
                      "code": {
                        "type": "string",
                        "description": "Error code",
                        "example": "agent_error"
                      },
                      "message": {
                        "type": "string",
                        "description": "Human-readable error message",
                        "example": "Agent processing failed"
                      }
                    }
                  },
                  "id": {
                    "type": "string",
                    "description": "Unique identifier for the turn (message ID)",
                    "example": "turn-uuid-1234"
                  },
                  "role": {
                    "type": "string",
                    "description": "Role of the message author: user or agent",
                    "enum": [
                      "user",
                      "agent"
                    ],
                    "example": "user"
                  },
                  "sequence_number": {
                    "type": "integer",
                    "description": "Sequence number in the conversation",
                    "example": 1
                  },
                  "session_id": {
                    "type": "string",
                    "description": "ID of the session this turn belongs to",
                    "example": "f7e6d5c4-b3a2-1098-7654-321fedcba098"
                  },
                  "status": {
                    "type": "string",
                    "description": "Turn processing status: queued, processing, completed, or failed",
                    "enum": [
                      "queued",
                      "processing",
                      "completed",
                      "failed"
                    ],
                    "example": "completed"
                  }
                }
              }
            }
          }
        },
        "400": {
          "description": "Invalid session ID or turn ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Session or turn not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`chat:read`) returning a single turn (`turn_id`)\nwithin a session (`id`), including the agent's response once available.\nBecause turns complete asynchronously, a just-submitted turn may still be\npending — poll or rely on the `session.turn.completed` webhook. Read-only."
    },
    "getSsoInfo": {
      "id": "getSsoInfo",
      "method": "GET",
      "path": "/v1/partner/sso/info/{slug}",
      "summary": "Get partner SSO information",
      "description": "Returns partner branding and SSO configuration status for landing pages. This endpoint is publicly accessible and rate-limited.",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Partner slug",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Partner SSO information returned",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "co_brand_logo_url": {
                "type": "string",
                "example": "https://cdn.example.com/logos/acme.png"
              },
              "co_brand_name": {
                "type": "string",
                "example": "Powered by Contio"
              },
              "has_idp_config": {
                "type": "boolean",
                "example": true
              },
              "is_active": {
                "type": "boolean",
                "example": true
              },
              "name": {
                "type": "string",
                "example": "Acme CRM"
              },
              "slug": {
                "type": "string",
                "example": "acme-crm"
              }
            }
          }
        },
        "404": {
          "description": "Partner not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "example": "sso_authentication_failed"
              },
              "message": {
                "type": "string",
                "example": "Authentication failed"
              }
            }
          }
        },
        "429": {
          "description": "Rate limit exceeded",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "example": "sso_authentication_failed"
              },
              "message": {
                "type": "string",
                "example": "Authentication failed"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Public lookup of a partner's SSO branding/configuration by `slug`, used to\nrender the login page (partner name, logo, whether SSO is enabled). Returns\nonly public-safe fields. Read-only."
    },
    "getSsoSession": {
      "id": "getSsoSession",
      "method": "GET",
      "path": "/v1/partner/sso/session/{session_id}",
      "summary": "Get partner SSO session status",
      "description": "Returns the current status of a partner SSO session for polling. Used by clients to check if authentication has completed.",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "required": true,
            "description": "Session ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Session status",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string",
                "example": "Session expired"
              },
              "status": {
                "type": "string",
                "example": "pending"
              },
              "target": {
                "type": "string",
                "example": "web"
              },
              "user_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              }
            }
          }
        },
        "400": {
          "description": "Invalid session ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Session not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Public polling endpoint that returns the status of an in-progress SSO\nsession by `session_id` (pending / completed / failed). Poll it after\n`initiateSso` to detect when authentication finishes; it reflects state only\nand does not itself perform authentication."
    },
    "getTemplate": {
      "id": "getTemplate",
      "method": "GET",
      "path": "/v1/partner/admin/templates/{templateId}",
      "summary": "Get a template",
      "description": "Retrieves a template for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "description": "Template ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "backing_meeting_id": {
                "type": "string",
                "description": "BackingMeetingID is the ID of the meeting this template was created from, if any",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the template was created",
                "example": "2024-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "example": "Invoice template for new clients"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "name": {
                "type": "string",
                "example": "Invoice Template"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the template was last updated",
                "example": "2024-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Template not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) read of a single template by `templateId`; 404 if unknown or\nowned by another app. Read-only."
    },
    "getWebhookDelivery": {
      "id": "getWebhookDelivery",
      "method": "GET",
      "path": "/v1/partner/admin/webhook-deliveries/{deliveryId}",
      "summary": "Get webhook delivery",
      "description": "Retrieves a specific webhook delivery by ID",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "description": "Webhook Delivery ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "description": "Timestamp when the delivery was created",
                "example": "2024-01-14T10:00:00Z"
              },
              "delivered_at": {
                "type": "string",
                "description": "When the webhook was successfully delivered",
                "example": "2024-01-14T10:30:00Z"
              },
              "delivery_status": {
                "type": "string",
                "description": "Current delivery status (pending, delivered, failed, abandoned)",
                "example": "delivered"
              },
              "error_message": {
                "type": "string",
                "description": "Error message if delivery failed",
                "example": ""
              },
              "event_id": {
                "type": "string",
                "description": "ID of the event that triggered this delivery",
                "example": "123e4567-e89b-12d3-a456-426614174006"
              },
              "event_type": {
                "type": "string",
                "description": "Type of event that triggered this webhook",
                "example": "action_item_created"
              },
              "http_status_code": {
                "type": "integer",
                "description": "HTTP status code returned by the webhook endpoint",
                "example": 200
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the webhook delivery",
                "example": "123e4567-e89b-12d3-a456-426614174005"
              },
              "next_retry_at": {
                "type": "string",
                "description": "When the next retry attempt will be made (if applicable)",
                "example": "2024-01-15T10:30:00Z"
              },
              "partner_app_id": {
                "type": "string",
                "description": "ID of the partner app this delivery belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "retry_count": {
                "type": "integer",
                "description": "Number of retry attempts made",
                "example": 0
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Webhook delivery not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) read of a single webhook delivery attempt by `deliveryId`,\nincluding response status and error detail. Read-only; 404 if the delivery\nis unknown or aged out of retention."
    },
    "getWorkflowRun": {
      "id": "getWorkflowRun",
      "method": "GET",
      "path": "/v1/partner/user/workflow-runs/{id}",
      "summary": "Get a workflow run",
      "description": "Returns a single workflow run. The run must belong to the authenticated user's current workspace; otherwise a 404 response is returned.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "workflows:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Workflow Run ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "completed_at": {
                "type": "string",
                "description": "CompletedAt is the timestamp at which the run finished.",
                "example": "2024-01-01T00:05:00Z"
              },
              "context_json": {
                "type": "object",
                "description": "ContextJSON is the assembled context snapshot for the run as a JSON object."
              },
              "created_at": {
                "type": "string",
                "description": "CreatedAt is the timestamp at which the run was created.",
                "example": "2024-01-01T00:00:00Z"
              },
              "current_step_ids": {
                "type": "array",
                "description": "CurrentStepIDs is the list of step IDs currently eligible to run.",
                "example": [
                  "step-1"
                ],
                "items": {
                  "type": "string"
                }
              },
              "id": {
                "type": "string",
                "description": "ID is the workflow run's unique identifier.",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "description": "Name is the optional display name of the run.",
                "example": "Post-meeting follow-up"
              },
              "originating_id": {
                "type": "string",
                "description": "OriginatingID is the ID of the originating object.",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "originating_type": {
                "type": "string",
                "description": "OriginatingType is the kind of object that triggered the run.",
                "enum": [
                  "meeting",
                  "canvas"
                ],
                "example": "meeting"
              },
              "owner_user_id": {
                "type": "string",
                "description": "OwnerUserID is the user whose context owns the run.",
                "example": "123e4567-e89b-12d3-a456-426614174005"
              },
              "started_at": {
                "type": "string",
                "description": "StartedAt is the timestamp at which run execution began.",
                "example": "2024-01-01T00:00:00Z"
              },
              "status": {
                "type": "string",
                "description": "Status is the current run status.",
                "enum": [
                  "pending",
                  "active",
                  "completed",
                  "failed",
                  "cancelled",
                  "frozen"
                ],
                "example": "pending"
              },
              "trigger_type": {
                "type": "string",
                "description": "TriggerType indicates how the run was triggered.",
                "enum": [
                  "manual",
                  "autopilot"
                ],
                "example": "manual"
              },
              "triggered_by": {
                "type": "string",
                "description": "TriggeredBy is the ID of the user who triggered a manual run, if applicable.",
                "example": "123e4567-e89b-12d3-a456-426614174004"
              },
              "updated_at": {
                "type": "string",
                "description": "UpdatedAt is the timestamp at which the run was last updated.",
                "example": "2024-01-01T00:00:00Z"
              },
              "workflow_template_id": {
                "type": "string",
                "description": "WorkflowTemplateID is the template that produced this run.",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "workspace_id": {
                "type": "string",
                "description": "WorkspaceID is the workspace that owns the run.",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              }
            }
          }
        },
        "400": {
          "description": "Invalid workflow run ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Workflow run not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`workflows:read`) returning a single workflow run by\n`id`, including status and outputs once complete. Poll after\n`createWorkflowRun` until the run reaches a terminal state. Read-only."
    },
    "getWorkflowTemplate": {
      "id": "getWorkflowTemplate",
      "method": "GET",
      "path": "/v1/partner/admin/workflow-templates/{id}",
      "summary": "Get a workflow template",
      "description": "Retrieves a single workflow template owned by the authenticated partner app, including the inlined DAG spec.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Workflow Template ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "description": "CreatedAt is the timestamp at which the template was created.",
                "example": "2024-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "description": "Description is an optional human-readable description.",
                "example": "Runs after the meeting ends"
              },
              "id": {
                "type": "string",
                "description": "ID is the workflow template's unique identifier.",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "is_active": {
                "type": "boolean",
                "description": "IsActive indicates whether the template is active and eligible to be run.",
                "example": true
              },
              "name": {
                "type": "string",
                "description": "Name is the human-readable template name.",
                "example": "Post-meeting Follow-up"
              },
              "spec": {
                "type": "object",
                "description": "Spec is the workflow DAG specification as a JSON object."
              },
              "updated_at": {
                "type": "string",
                "description": "UpdatedAt is the timestamp at which the template was last updated.",
                "example": "2024-01-01T00:00:00Z"
              },
              "workspace_id": {
                "type": "string",
                "description": "WorkspaceID is the workspace that owns the template row.",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              }
            }
          }
        },
        "400": {
          "description": "Invalid workflow template ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Workflow template not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) read of a single workflow template by `id`, including its\ndefinition/inputs. Read-only; 404 if unknown."
    },
    "initiatePartnerAuth": {
      "id": "initiatePartnerAuth",
      "method": "POST",
      "path": "/auth/initiate",
      "summary": "Initiate Partner Passwordless Authentication",
      "description": "Initiates passwordless authentication for partner OAuth flow with client-specific SECRET_HASH. Supports optional workspace_id to provision users into a shared workspace instead of creating a personal one, and is_admin to grant admin role in that workspace.",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Partner authentication initiation request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "client_id": {
              "type": "string",
              "example": "partner_abc123"
            },
            "email": {
              "type": "string",
              "example": "user@example.com"
            },
            "is_admin": {
              "type": "boolean",
              "example": false
            },
            "name": {
              "type": "string",
              "example": "John Doe"
            },
            "workspace_id": {
              "type": "string",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            }
          },
          "required": [
            "client_id",
            "email"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "challenge_name": {
                "type": "string",
                "example": "CUSTOM_CHALLENGE"
              },
              "challenge_params": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "session": {
                "type": "string",
                "example": "AYABeExample..."
              },
              "user_provisioned": {
                "type": "boolean",
                "description": "Indicates if user was newly created",
                "example": false
              }
            }
          }
        },
        "400": {
          "description": "Invalid request format or workspace_id is not a valid UUID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Workspace does not belong to this partner (workspace_not_authorized)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Specified workspace_id does not exist (workspace_not_found)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "User already belongs to a different workspace (workspace_conflict). Includes workspace_id field.",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Error response for workspace conflict (409). Includes the user's current workspace_id.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "workspace_conflict"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "User already belongs to a different workspace"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "User already belongs to a different workspace"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              },
              "workspace_id": {
                "type": "string",
                "description": "The workspace ID the user currently belongs to",
                "example": "550e8400-e29b-41d4-a716-446655440000"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Public endpoint that starts passwordless (OTP) authentication for the\npartner OAuth flow. The request identifies the user (e.g. email) for a\nspecific client. Optional `workspace_id` provisions the user into a shared\nworkspace instead of creating a personal one, and `is_admin` grants admin\nrole in that workspace. Triggers delivery of a one-time code out-of-band;\npair it with `verifyPartnerAuth`. Does not itself return tokens. Distinct\nerror cases include unknown client (404) and conflicting workspace state\n(409).",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "initiateSso": {
      "id": "initiateSso",
      "method": "GET",
      "path": "/v1/partner/sso/initiate",
      "summary": "Initiate partner SSO flow",
      "description": "Starts the SSO authentication flow for a partner's identity provider. Looks up the partner by slug, retrieves IdP configuration, generates PKCE parameters, and returns an authorization URL.",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "slug",
            "in": "query",
            "required": true,
            "description": "Partner app slug",
            "type": "string"
          },
          {
            "name": "target",
            "in": "query",
            "required": false,
            "description": "Target platform: web (default), desktop, backlog, or meeting:{id}",
            "type": "string"
          },
          {
            "name": "auto",
            "in": "query",
            "required": false,
            "description": "Auto-redirect to authorization URL",
            "type": "boolean"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Authorization URL and session ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "authorization_url": {
                "type": "string",
                "example": "https://idp.example.com/authorize?client_id=abc123\u0026..."
              },
              "session_id": {
                "type": "string",
                "example": "sess_abc123def456"
              }
            }
          }
        },
        "302": {
          "description": "Redirect to authorization URL (when auto=true)",
          "has_schema": true,
          "schema": {
            "type": "string"
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Partner not found or IdP not configured",
          "has_schema": true,
          "schema": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Public endpoint that begins the partner SSO flow for a given partner slug,\nredirecting the user's browser to the configured IdP. Returns a redirect,\nnot tokens — this is an interactive browser step. Track completion with\n`getSsoSession` and read the SSO configuration this depends on via the admin\nIdP endpoints."
    },
    "installToolkit": {
      "id": "installToolkit",
      "method": "POST",
      "path": "/v1/partner/user/toolkits/{toolkitId}/install",
      "summary": "Install toolkit",
      "description": "Installs a toolkit to the authenticated user's workspace, creating all defined entities",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "toolkits:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "toolkitId",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "entities": {
                "type": "object",
                "description": "Mapping of manifest $id values to database UUIDs for entities created during installation",
                "properties": {
                  "action_buttons": {
                    "type": "object",
                    "description": "Action button RefID → database UUID mappings",
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "next_steps": {
                    "type": "object",
                    "description": "Next step RefID → database UUID mappings",
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "shortcuts": {
                    "type": "object",
                    "description": "Shortcut RefID → database UUID mappings",
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "templates": {
                    "type": "object",
                    "description": "Template RefID → database UUID mappings",
                    "additionalProperties": {
                      "type": "string"
                    }
                  }
                }
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the installation",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "installed_at": {
                "type": "string",
                "description": "Timestamp when the toolkit was installed",
                "example": "2023-01-01T00:00:00Z"
              },
              "installed_by": {
                "type": "string",
                "description": "ID of the user who installed the toolkit",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "toolkit_id": {
                "type": "string",
                "description": "ID of the installed toolkit",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "workspace_id": {
                "type": "string",
                "description": "ID of the workspace where the toolkit is installed",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Toolkit not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "Toolkit already installed",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "OAuth user operation (`toolkits:write`) that installs a toolkit\n(`toolkitId`) for the user/workspace. Installs the currently published\nversion. Installing an already-installed toolkit is effectively a no-op (or\nupgrades to the published version) rather than a duplicate. Effects may\npropagate asynchronously."
    },
    "introspectOauthToken": {
      "id": "introspectOauthToken",
      "method": "POST",
      "path": "/oauth2/introspect",
      "summary": "OAuth 2.0 Token Introspection Endpoint",
      "description": "Introspects access tokens to get token information",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "token",
            "in": "formData",
            "required": true,
            "description": "Access token to introspect",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "active": {
                "type": "boolean",
                "example": true
              },
              "aud": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "client_id": {
                "type": "string",
                "example": "partner_abc123"
              },
              "exp": {
                "type": "integer",
                "example": 1704110400
              },
              "ext": {
                "type": "object",
                "additionalProperties": {}
              },
              "iat": {
                "type": "integer",
                "example": 1704106800
              },
              "iss": {
                "type": "string",
                "example": "https://auth.contio.io"
              },
              "nbf": {
                "type": "integer",
                "example": 1704106800
              },
              "scope": {
                "type": "string",
                "example": "openid profile email"
              },
              "sub": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "token_type": {
                "type": "string",
                "example": "Bearer"
              },
              "username": {
                "type": "string",
                "example": "user@example.com"
              }
            }
          }
        },
        "400": {
          "description": "Bad Request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "RFC 7662 token introspection endpoint. Requires partner client\nauthentication (HTTP Basic Auth with your `client_id` / `client_secret`, or\nthe credentials in the form body); unauthenticated calls are rejected with\n401. Accepts a `token` (form-encoded) and returns whether it is active plus\nassociated metadata (scopes, subject, expiry) for active tokens. Use it to\nvalidate an access token server-side; treat an inactive/absent response as\nunauthenticated. Submit the token in the form body, never in the URL.",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "linkCalendarEvent": {
      "id": "linkCalendarEvent",
      "method": "POST",
      "path": "/v1/partner/user/meetings/{id}/calendar/link",
      "summary": "Link calendar event to meeting",
      "description": "Link an existing calendar event to a specific meeting",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "calendar:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Link calendar event request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "calendar_event_id": {
              "type": "string",
              "example": "123e4567-e89b-12d3-a456-426614174006"
            }
          },
          "required": [
            "calendar_event_id"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "Meeting linked to calendar event successfully",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "message": {
                "type": "string",
                "description": "Human-readable message describing the result",
                "example": "Meeting linked to calendar event successfully"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful",
                "example": true
              }
            }
          }
        },
        "400": {
          "description": "Invalid meeting ID format or request body",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for linking a calendar event to a meeting",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_meeting_id",
                  "invalid_request_body",
                  "calendar_event_already_linked",
                  "meeting_already_linked",
                  "calendar_workspace_mismatch"
                ],
                "example": "invalid_meeting_id"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid meeting ID format"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Caller is not the meeting owner or an editor",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting or calendar event not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "Calendar event already linked to another meeting",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "OAuth user operation (`calendar:write`) that links a calendar event to an\nexisting meeting (`id`) so the two stay associated. Re-linking is idempotent\nwhen the same event is already linked; linking a different event may replace\nor conflict with an existing link."
    },
    "listActionItems": {
      "id": "listActionItems",
      "method": "GET",
      "path": "/v1/partner/user/action-items",
      "summary": "Get action items",
      "description": "Retrieves action items accessible to the authenticated partner user",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "action-items:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Limit",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset",
            "type": "integer"
          },
          {
            "name": "meeting_id",
            "in": "query",
            "required": false,
            "description": "Filter by meeting ID",
            "type": "string"
          },
          {
            "name": "is_completed",
            "in": "query",
            "required": false,
            "description": "Filter by completion status",
            "type": "boolean"
          },
          {
            "name": "has_partner_assignment",
            "in": "query",
            "required": false,
            "description": "Filter by partner assignment",
            "type": "boolean"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "description": "Filter by start date (ISO 8601)",
            "type": "string"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "description": "Filter by end date (ISO 8601)",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "assigned_to_user_id": {
                      "type": "string",
                      "description": "ID of the user assigned to this action item",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    },
                    "completed_at": {
                      "type": "string",
                      "description": "Timestamp when the action item was completed",
                      "example": "2023-01-08T18:00:00-07:00"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the action item was created",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "description": {
                      "type": "string",
                      "description": "Detailed description of the action item",
                      "example": "Follow up with client about proposal"
                    },
                    "due_date": {
                      "type": "string",
                      "description": "Due date in YYYY-MM-DD format",
                      "example": "2023-01-08"
                    },
                    "has_partner_assignment": {
                      "type": "boolean",
                      "description": "Whether this action item was assigned via partner automation",
                      "example": true
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the action item",
                      "example": "123e4567-e89b-12d3-a456-426614174001"
                    },
                    "is_completed": {
                      "type": "boolean",
                      "description": "Whether the action item has been completed",
                      "example": false
                    },
                    "meeting_id": {
                      "type": "string",
                      "description": "ID of the meeting this action item belongs to",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "partner_context": {
                      "type": "object",
                      "description": "Partner-specific context data stored with the action item",
                      "additionalProperties": {}
                    },
                    "status": {
                      "type": "string",
                      "description": "Current status (needs_review, accepted, in_progress, blocked, completed, cancelled)",
                      "example": "accepted"
                    },
                    "title": {
                      "type": "string",
                      "description": "Title of the action item",
                      "example": "Client follow-up call"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the action item was last updated",
                      "example": "2023-01-01T00:00:00Z"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for listing action items",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_start_date",
                  "invalid_end_date"
                ],
                "example": "invalid_start_date"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid start_date format"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`action-items:read`) returning the authenticated\nuser's action items in their workspace, paginated. Scoped to what the user\ncan see; results are read-only. Use the returned ids for get/update/delete."
    },
    "listAutomations": {
      "id": "listAutomations",
      "method": "GET",
      "path": "/v1/partner/admin/automation",
      "summary": "Get automations",
      "description": "Retrieves all automations for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Limit",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "actions": {
                      "type": "array",
                      "description": "Actions to execute when the automation is triggered",
                      "items": {
                        "type": "object",
                        "properties": {
                          "config": {
                            "type": "object",
                            "example": {
                              "url": "https://api.example.com/webhook"
                            },
                            "additionalProperties": {
                              "type": "string"
                            }
                          },
                          "type": {
                            "type": "string",
                            "example": "webhook"
                          }
                        },
                        "required": [
                          "type"
                        ]
                      }
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the automation was created",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "description": {
                      "type": "string",
                      "description": "Optional description of what the automation does",
                      "example": "Sync action items to CRM"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the automation",
                      "example": "123e4567-e89b-12d3-a456-426614174001"
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the automation",
                      "example": "CRM Integration"
                    },
                    "partner_app_id": {
                      "type": "string",
                      "description": "ID of the partner app that owns this automation",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "status": {
                      "type": "string",
                      "description": "Current status (active or inactive)",
                      "example": "active"
                    },
                    "trigger_type": {
                      "type": "string",
                      "description": "Event type that triggers this automation",
                      "example": "action_item_created"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the automation was last updated",
                      "example": "2023-01-01T00:00:00Z"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) paginated list of the partner app's automations via\n`limit`/`offset`. Scoped to the calling app. Read-only; use it to discover\nautomation IDs for the get/replace/delete operations."
    },
    "listCalendarEvents": {
      "id": "listCalendarEvents",
      "method": "GET",
      "path": "/v1/partner/user/calendar/events",
      "summary": "Get calendar events",
      "description": "Retrieve a paginated list of calendar events for the authenticated user within a specified time range",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "calendar:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "description": "Start time in RFC3339 format (preferred)",
            "type": "string"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "description": "End time in RFC3339 format (preferred)",
            "type": "string"
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "description": "Deprecated: Use start_date instead",
            "type": "string"
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "description": "Deprecated: Use end_date instead",
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Number of results per page (default 25, max 100)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Pagination offset (default 0)",
            "type": "integer"
          },
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "description": "Sort direction: asc or desc (default: asc)",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "attendees": {
                      "type": "array",
                      "description": "List of attendees for the calendar event",
                      "items": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "description": "Email address of the attendee",
                            "example": "john.doe@example.com"
                          },
                          "name": {
                            "type": "string",
                            "description": "Display name of the attendee",
                            "example": "John Doe"
                          },
                          "status": {
                            "type": "string",
                            "description": "RSVP status (accepted, declined, tentative, needs_action)",
                            "example": "accepted"
                          },
                          "type": {
                            "type": "string",
                            "description": "Attendee type (required, optional, resource)",
                            "example": "required"
                          }
                        }
                      }
                    },
                    "description": {
                      "type": "string",
                      "description": "Description or body of the calendar event",
                      "example": "Discuss project updates"
                    },
                    "end_time": {
                      "type": "string",
                      "description": "End time of the event in RFC3339 format",
                      "example": "2023-01-01T11:00:00-07:00"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the calendar event",
                      "example": "123e4567-e89b-12d3-a456-426614174006"
                    },
                    "linked_meetings": {
                      "type": "array",
                      "description": "IDs of all linked Contio meetings, sorted by creation date (oldest first)",
                      "example": [
                        "[\"123e4567-e89b-12d3-a456-426614174000\"]"
                      ],
                      "items": {
                        "type": "string"
                      }
                    },
                    "location": {
                      "type": "string",
                      "description": "Location of the event (physical or virtual)",
                      "example": "Conference Room A"
                    },
                    "meeting_id": {
                      "type": "string",
                      "description": "Deprecated: Use linked_meetings instead. ID of the first (oldest) linked Contio meeting.",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "organizer": {
                      "type": "object",
                      "description": "Organizer of the calendar event",
                      "properties": {
                        "email": {
                          "type": "string",
                          "description": "Email address of the attendee",
                          "example": "john.doe@example.com"
                        },
                        "name": {
                          "type": "string",
                          "description": "Display name of the attendee",
                          "example": "John Doe"
                        },
                        "status": {
                          "type": "string",
                          "description": "RSVP status (accepted, declined, tentative, needs_action)",
                          "example": "accepted"
                        },
                        "type": {
                          "type": "string",
                          "description": "Attendee type (required, optional, resource)",
                          "example": "required"
                        }
                      }
                    },
                    "start_time": {
                      "type": "string",
                      "description": "Start time of the event in RFC3339 format",
                      "example": "2023-01-01T10:00:00-07:00"
                    },
                    "title": {
                      "type": "string",
                      "description": "Title of the calendar event",
                      "example": "Weekly Team Sync"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for listing calendar events",
            "properties": {
              "code": {
                "type": "string",
                "description": "Error code identifying the specific type of error",
                "enum": [
                  "invalid_query_parameters",
                  "missing_start_date",
                  "missing_end_date",
                  "invalid_start_date",
                  "invalid_end_date"
                ],
                "example": "invalid_start_date"
              },
              "error": {
                "type": "string",
                "description": "Human-readable error message",
                "example": "Invalid start_date format"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier for tracing",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`calendar:read`) returning the user's calendar events\n(from connected calendars), paginated. Availability depends on the user\nhaving a linked calendar connection; without one the list may be empty.\nRead-only."
    },
    "listConnections": {
      "id": "listConnections",
      "method": "GET",
      "path": "/v1/partner/admin/connections",
      "summary": "Get user connections",
      "description": "Retrieves user connections for the authenticated partner app with pagination and filtering",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Limit",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset",
            "type": "integer"
          },
          {
            "name": "user_id",
            "in": "query",
            "required": false,
            "description": "Filter by user ID",
            "type": "string"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Filter by connection status",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the connection was created",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "feature_activated_at": {
                      "type": "string",
                      "description": "When the partner feature was activated for this user",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the user connection",
                      "example": "123e4567-e89b-12d3-a456-426614174002"
                    },
                    "last_used_at": {
                      "type": "string",
                      "description": "When the user last used the partner integration",
                      "example": "2023-01-15T10:30:00Z"
                    },
                    "oauth_expires_at": {
                      "type": "string",
                      "description": "Expiration time of the OAuth token",
                      "example": "2023-12-31T23:59:59Z"
                    },
                    "oauth_scopes": {
                      "type": "array",
                      "description": "OAuth scopes granted by the user",
                      "example": [
                        "['openid'",
                        " 'profile'",
                        " 'meetings:read']"
                      ],
                      "items": {
                        "type": "string"
                      }
                    },
                    "status": {
                      "type": "string",
                      "description": "Current status of the connection (active, inactive, revoked)",
                      "example": "active"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the connection was last updated",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "user_email": {
                      "type": "string",
                      "description": "Email address of the connected user",
                      "example": "john.doe@example.com"
                    },
                    "user_id": {
                      "type": "string",
                      "description": "ID of the connected user",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    },
                    "user_name": {
                      "type": "string",
                      "description": "Display name of the connected user",
                      "example": "John Doe"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) paginated list of end-user connections (users who authorized\nthis partner app), filterable by `user_id` and `status` with\n`limit`/`offset`. Scoped to the calling app. Read-only; connection IDs feed\n`getConnection`/`revokeConnection`."
    },
    "listCredentialHistory": {
      "id": "listCredentialHistory",
      "method": "GET",
      "path": "/v1/partner/admin/credentials/history",
      "summary": "Get audit history",
      "description": "Returns the audit history for credential operations",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Number of events to return",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of events to skip",
            "type": "integer"
          },
          {
            "name": "credential_type",
            "in": "query",
            "required": false,
            "description": "Filter by credential type",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "events": {
                "type": "array",
                "description": "List of credential audit events",
                "items": {
                  "type": "object",
                  "properties": {
                    "action": {
                      "type": "string",
                      "description": "Action performed (rotated, accessed, rollback, disabled, enabled, viewed, tested)",
                      "example": "rotated"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "When the event occurred",
                      "example": "2024-01-15T10:30:00Z"
                    },
                    "credential_type": {
                      "type": "string",
                      "description": "Type of credential (api_key, webhook_secret, client_secret)",
                      "example": "api_key"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the audit event",
                      "example": "evt_abc123"
                    },
                    "initiated_by": {
                      "type": "string",
                      "description": "Who initiated the action (partner, internal, system)",
                      "example": "partner"
                    },
                    "ip_address": {
                      "type": "string",
                      "description": "IP address of the request that triggered the event",
                      "example": "192.168.1.1"
                    },
                    "metadata": {
                      "type": "object",
                      "description": "Additional metadata about the event",
                      "additionalProperties": {}
                    },
                    "partner_app_id": {
                      "type": "string",
                      "description": "Partner app that owns the credential",
                      "example": "01234567-89ab-cdef-0123-456789abcdef"
                    },
                    "reason": {
                      "type": "string",
                      "description": "Reason for the credential action",
                      "example": "Scheduled rotation"
                    },
                    "user_agent": {
                      "type": "string",
                      "description": "User agent of the request that triggered the event",
                      "example": "Mozilla/5.0"
                    }
                  }
                }
              },
              "pagination": {
                "type": "object",
                "description": "Pagination metadata",
                "properties": {
                  "count": {
                    "type": "integer",
                    "description": "Number of events returned in this response",
                    "example": 5
                  },
                  "limit": {
                    "type": "integer",
                    "description": "Maximum number of events requested",
                    "example": 20
                  },
                  "offset": {
                    "type": "integer",
                    "description": "Number of events skipped",
                    "example": 0
                  }
                }
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) paginated audit log of credential operations (rotations,\nrollbacks) with `limit`/`offset` and optional `credential_type` filter.\nReturns audit metadata (what/when), never secret values. Read-only."
    },
    "listInstalledToolkits": {
      "id": "listInstalledToolkits",
      "method": "GET",
      "path": "/v1/partner/user/workspaces/{workspace_id}/toolkits",
      "summary": "List installed toolkits",
      "description": "Retrieves toolkits currently installed in a workspace with installation details",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "toolkits:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "description": "Workspace ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "installation": {
                      "type": "object",
                      "description": "Installation details (nil if not installed)",
                      "properties": {
                        "entities": {
                          "type": "object",
                          "description": "Mapping of manifest $id values to database UUIDs for entities created during installation",
                          "properties": {
                            "action_buttons": {
                              "type": "object",
                              "description": "Action button RefID → database UUID mappings",
                              "additionalProperties": {
                                "type": "string"
                              }
                            },
                            "next_steps": {
                              "type": "object",
                              "description": "Next step RefID → database UUID mappings",
                              "additionalProperties": {
                                "type": "string"
                              }
                            },
                            "shortcuts": {
                              "type": "object",
                              "description": "Shortcut RefID → database UUID mappings",
                              "additionalProperties": {
                                "type": "string"
                              }
                            },
                            "templates": {
                              "type": "object",
                              "description": "Template RefID → database UUID mappings",
                              "additionalProperties": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "id": {
                          "type": "string",
                          "description": "Unique identifier for the installation",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "installed_at": {
                          "type": "string",
                          "description": "Timestamp when the toolkit was installed",
                          "example": "2023-01-01T00:00:00Z"
                        },
                        "installed_by": {
                          "type": "string",
                          "description": "ID of the user who installed the toolkit",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "toolkit_id": {
                          "type": "string",
                          "description": "ID of the installed toolkit",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "workspace_id": {
                          "type": "string",
                          "description": "ID of the workspace where the toolkit is installed",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        }
                      }
                    },
                    "toolkit": {
                      "type": "object",
                      "description": "Toolkit details",
                      "properties": {
                        "action_buttons_count": {
                          "type": "integer",
                          "description": "Number of action buttons in the toolkit",
                          "example": 2
                        },
                        "created_at": {
                          "type": "string",
                          "description": "Timestamp when the toolkit was created",
                          "example": "2023-01-01T00:00:00Z"
                        },
                        "description": {
                          "type": "string",
                          "description": "Description of the toolkit",
                          "example": "A comprehensive toolkit for sales meetings"
                        },
                        "id": {
                          "type": "string",
                          "description": "Unique identifier for the toolkit",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "is_active": {
                          "type": "boolean",
                          "description": "Whether the toolkit is active",
                          "example": true
                        },
                        "name": {
                          "type": "string",
                          "description": "Name of the toolkit",
                          "example": "Sales Meeting Toolkit"
                        },
                        "next_steps_count": {
                          "type": "integer",
                          "description": "Number of next steps in the toolkit",
                          "example": 5
                        },
                        "ownership_type": {
                          "type": "string",
                          "description": "Ownership type of the toolkit",
                          "enum": [
                            "SYSTEM",
                            "PARTNER"
                          ],
                          "example": "PARTNER"
                        },
                        "slug": {
                          "type": "string",
                          "description": "URL-friendly slug for the toolkit",
                          "example": "sales-meeting-toolkit"
                        },
                        "templates_count": {
                          "type": "integer",
                          "description": "Number of templates in the toolkit",
                          "example": 3
                        },
                        "updated_at": {
                          "type": "string",
                          "description": "Timestamp when the toolkit was last updated",
                          "example": "2023-01-01T00:00:00Z"
                        },
                        "version": {
                          "type": "string",
                          "description": "Version of the toolkit",
                          "example": "1.0.0"
                        }
                      }
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`toolkits:read`) listing the toolkits installed in a\nspecific workspace (`workspace_id`). Read-only; the user must have access to\nthat workspace. Complements `listToolkits` (the installable catalog)."
    },
    "listMeetingActionButtons": {
      "id": "listMeetingActionButtons",
      "method": "GET",
      "path": "/v1/partner/user/meetings/{id}/action-buttons",
      "summary": "Get action buttons for a meeting",
      "description": "Retrieves action buttons available for a meeting through its applied templates and next steps.\nAction buttons are de-duplicated across all next steps associated with the meeting.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "icon_name": {
                      "type": "string",
                      "description": "Icon name from the vocabulary",
                      "example": "share"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the action button",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "is_default": {
                      "type": "boolean",
                      "description": "Whether this is the default action button",
                      "example": false
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the action button",
                      "example": "Send Email"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:read`) listing the action buttons available\nfor a meeting (`id`) — the discrete actions a user can trigger. Availability\ndepends on meeting state/configuration. Read-only; button ids feed\n`triggerMeetingActionButton`."
    },
    "listMeetingAgendaItems": {
      "id": "listMeetingAgendaItems",
      "method": "GET",
      "path": "/v1/partner/user/meetings/{id}/agenda-items",
      "summary": "Get agenda items for a meeting",
      "description": "Retrieves all agenda items for a specific meeting. Filters out items restricted to leads if the user is not an editor.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the agenda item was created",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "description": {
                      "type": "string",
                      "description": "Detailed description of the agenda item",
                      "example": "Review and discuss Q1 objectives"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the agenda item",
                      "example": "123e4567-e89b-12d3-a456-426614174005"
                    },
                    "item_type": {
                      "type": "string",
                      "description": "Type of agenda item (DISCUSSION, DECISION, ACTION_ITEM, INFORMATION)",
                      "example": "DISCUSSION"
                    },
                    "meeting_id": {
                      "type": "string",
                      "description": "ID of the meeting this agenda item belongs to",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "presenters": {
                      "type": "array",
                      "description": "User IDs of the presenters for this agenda item",
                      "example": [
                        "123e4567-e89b-12d3-a456-426614174003"
                      ],
                      "items": {
                        "type": "string"
                      }
                    },
                    "restricted_to_leads": {
                      "type": "boolean",
                      "description": "Whether this item is restricted to meeting leads only",
                      "example": false
                    },
                    "sequence": {
                      "type": "string",
                      "description": "Order sequence of the agenda item",
                      "example": "1"
                    },
                    "status": {
                      "type": "string",
                      "description": "Current status (pending, in_progress, completed)",
                      "example": "pending"
                    },
                    "talking_points": {
                      "type": "string",
                      "description": "Private talking points for the authenticated user on this agenda item. Only returned if the user has talking points.",
                      "example": "Key points to discuss: budget allocation, timeline"
                    },
                    "time_allocation_minutes": {
                      "type": "number",
                      "description": "Allocated time for this agenda item in minutes",
                      "example": 15
                    },
                    "title": {
                      "type": "string",
                      "description": "Title of the agenda item",
                      "example": "Q1 Planning Discussion"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the agenda item was last updated",
                      "example": "2023-01-01T00:00:00Z"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid meeting ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:read`) returning the agenda items for a\nmeeting (`id`), typically ordered. Read-only; item ids feed the\nupdate/delete agenda operations."
    },
    "listMeetingContexts": {
      "id": "listMeetingContexts",
      "method": "GET",
      "path": "/v1/partner/user/meetings/{id}/context",
      "summary": "List meeting contexts",
      "description": "Lists partner-scoped meeting contexts for a meeting with pagination.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "context:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Limit",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "context_type": {
                      "type": "string"
                    },
                    "created_at": {
                      "type": "string"
                    },
                    "created_by_user_id": {
                      "type": "string"
                    },
                    "deleted_at": {
                      "type": "string"
                    },
                    "file_status": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "meeting_id": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    },
                    "partner_app_id": {
                      "type": "string"
                    },
                    "platform_name": {
                      "type": "string"
                    },
                    "source_format": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "updated_at": {
                      "type": "string"
                    },
                    "workspace_id": {
                      "type": "string"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer"
              },
              "offset": {
                "type": "integer"
              },
              "total": {
                "type": "integer"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`context:read`) listing context items (uploaded\ndocuments/notes) attached to a meeting (`id`). Read-only; context ids feed\nget/download/delete."
    },
    "listMeetingNextSteps": {
      "id": "listMeetingNextSteps",
      "method": "GET",
      "path": "/v1/partner/user/meetings/{id}/next-steps",
      "summary": "Get next steps for a meeting",
      "description": "Retrieves next steps available for a meeting through its applied templates",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "action_buttons": {
                      "type": "array",
                      "description": "Action buttons associated with this next step",
                      "items": {
                        "type": "object",
                        "properties": {
                          "icon_name": {
                            "type": "string",
                            "description": "Icon name from the vocabulary",
                            "example": "share"
                          },
                          "id": {
                            "type": "string",
                            "description": "Unique identifier for the action button",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "is_default": {
                            "type": "boolean",
                            "description": "Whether this is the default action button",
                            "example": false
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the action button",
                            "example": "Send Email"
                          }
                        }
                      }
                    },
                    "color": {
                      "type": "string",
                      "description": "Color for the next step",
                      "example": "#FF5733"
                    },
                    "description": {
                      "type": "string",
                      "description": "Description of the next step",
                      "example": "Generates an invoice from meeting action items"
                    },
                    "icon_name": {
                      "type": "string",
                      "description": "Icon name for the next step",
                      "example": "receipt"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the next step",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the next step",
                      "example": "Generate Invoice"
                    },
                    "redirect_url": {
                      "type": "string",
                      "description": "Redirect URL for redirect type next steps",
                      "example": "https://partner.example.com/invoice"
                    },
                    "sort_order": {
                      "type": "integer",
                      "description": "Display order for sorting",
                      "example": 1
                    },
                    "type": {
                      "type": "string",
                      "description": "Type of next step: \"ai\" or \"redirect\"",
                      "example": "ai"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:read`) returning the next steps\ngenerated/configured for a meeting (`id`). Read-only; next-step ids feed\n`executeMeetingNextStep`, whose results are read via `getNextStepResult`."
    },
    "listMeetingParticipants": {
      "id": "listMeetingParticipants",
      "method": "GET",
      "path": "/v1/partner/user/meetings/{id}/participants",
      "summary": "Get meeting participants",
      "description": "Retrieves all participants for a specific meeting accessible to the authenticated partner user",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the participant was added",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "email": {
                      "type": "string",
                      "description": "Participant's email address",
                      "example": "john.doe@example.com"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the participant record",
                      "example": "123e4567-e89b-12d3-a456-426614174004"
                    },
                    "is_attended": {
                      "type": "boolean",
                      "description": "Whether the participant attended the meeting",
                      "example": true
                    },
                    "meeting_id": {
                      "type": "string",
                      "description": "ID of the meeting this participant belongs to",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "name": {
                      "type": "string",
                      "description": "Participant's display name",
                      "example": "John Doe"
                    },
                    "role": {
                      "type": "string",
                      "description": "Participant's role in the meeting (EDITOR or VIEWER)",
                      "example": "EDITOR"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the participant record was last updated",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "user_id": {
                      "type": "string",
                      "description": "ID of the user if they have a Contio account",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid meeting ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:read`) listing the participants of a meeting\n(`id`). Read-only; participant ids feed add/remove."
    },
    "listMeetingTemplateNextSteps": {
      "id": "listMeetingTemplateNextSteps",
      "method": "GET",
      "path": "/v1/partner/user/meeting-templates/{id}/next-steps",
      "summary": "List template next steps",
      "description": "Retrieves the AI workflow configurations associated with a meeting template",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting template ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "autopilot": {
                      "type": "boolean",
                      "description": "Whether autopilot is enabled for this next step on the template",
                      "example": true
                    },
                    "color": {
                      "type": "string",
                      "description": "Color of the next step",
                      "example": "#4F46E5"
                    },
                    "description": {
                      "type": "string",
                      "description": "Description of the next step",
                      "example": "AI-powered summary generation"
                    },
                    "icon_name": {
                      "type": "string",
                      "description": "Icon name for the next step",
                      "example": "document-text"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the next step",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the next step",
                      "example": "Generate Meeting Summary"
                    },
                    "sort_order": {
                      "type": "integer",
                      "description": "Sort order of the next step",
                      "example": 1
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Template not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:read`) returning the next steps defined on a\nmeeting template (`id`). Read-only."
    },
    "listMeetingTemplates": {
      "id": "listMeetingTemplates",
      "method": "GET",
      "path": "/v1/partner/user/meeting-templates",
      "summary": "List meeting templates",
      "description": "Retrieves meeting templates accessible to the authenticated partner user based on ownership hierarchy",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items per page",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of items to skip",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the template was created",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "description": {
                      "type": "string",
                      "description": "Description of the template",
                      "example": "Standard agenda for weekly team meetings"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the meeting template",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "is_active": {
                      "type": "boolean",
                      "description": "Whether the template is active",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the template",
                      "example": "Weekly Team Sync Template"
                    },
                    "ownership_type": {
                      "type": "string",
                      "description": "Ownership level of the template (SYSTEM, VERTICAL, WORKSPACE, USER, PARTNER)",
                      "enum": [
                        "SYSTEM",
                        "VERTICAL",
                        "WORKSPACE",
                        "USER",
                        "PARTNER"
                      ],
                      "example": "WORKSPACE"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the template was last updated",
                      "example": "2023-01-01T00:00:00Z"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:read`) listing meeting templates available\nto the user, paginated. Read-only; template ids feed `getMeetingTemplate`\nand `applyMeetingTemplate`."
    },
    "listMeetings": {
      "id": "listMeetings",
      "method": "GET",
      "path": "/v1/partner/user/meetings",
      "summary": "Get meetings",
      "description": "Retrieves meetings accessible to the authenticated partner user",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Limit",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset",
            "type": "integer"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "description": "Start date filter (ISO 8601)",
            "type": "string"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "description": "End date filter (ISO 8601)",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "calendar_event_id": {
                      "type": "string",
                      "description": "ID of the linked calendar event, if any",
                      "example": "123e4567-e89b-12d3-a456-426614174006"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the meeting was created",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "created_by_user_id": {
                      "type": "string",
                      "description": "ID of the user who created the meeting",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    },
                    "end_time": {
                      "type": "string",
                      "description": "Scheduled end time in RFC3339 format",
                      "example": "2023-01-01T11:00:00-07:00"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the meeting",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "redirect_to_meeting_id": {
                      "type": "string",
                      "description": "ID of the meeting to redirect to if this meeting was merged",
                      "example": "123e4567-e89b-12d3-a456-426614174007"
                    },
                    "start_time": {
                      "type": "string",
                      "description": "Scheduled start time in RFC3339 format",
                      "example": "2023-01-01T10:00:00-07:00"
                    },
                    "status": {
                      "type": "string",
                      "description": "Current status of the meeting",
                      "enum": [
                        "draft",
                        "scheduled",
                        "in_progress",
                        "ended",
                        "completed"
                      ],
                      "example": "completed"
                    },
                    "summary_notes": {
                      "type": "string",
                      "description": "AI-generated summary notes from the meeting",
                      "example": "Post-Meeting Summarization ..."
                    },
                    "title": {
                      "type": "string",
                      "description": "Title of the meeting",
                      "example": "Weekly Team Sync"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the meeting was last updated",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "workspace_id": {
                      "type": "string",
                      "description": "ID of the workspace this meeting belongs to",
                      "example": "123e4567-e89b-12d3-a456-426614174002"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for listing meetings",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_start_date",
                  "invalid_end_date"
                ],
                "example": "invalid_start_date"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid start_date format"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:read`) returning the user's meetings,\npaginated and filterable. Scoped to meetings the user can access. Read-only;\nids feed the meeting sub-resource endpoints."
    },
    "listOauthScopes": {
      "id": "listOauthScopes",
      "method": "GET",
      "path": "/oauth2/scopes",
      "summary": "Get Available OAuth Scopes",
      "description": "Returns the list of all available OAuth scopes for partner applications",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "scopes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Catalog of every OAuth scope a partner application can request (e.g.\n`meetings:read`, `chat:write`), with descriptions. Requires partner client\nauthentication (HTTP Basic Auth with your `client_id` / `client_secret`) —\ndespite being a discovery-style endpoint, calls without client credentials\nare rejected with 401. Use it to discover valid scope strings before\nbuilding an authorization request. Read-only."
    },
    "listSessions": {
      "id": "listSessions",
      "method": "GET",
      "path": "/v1/partner/user/sessions",
      "summary": "List chat sessions",
      "description": "Retrieves a paginated list of chat sessions for the authenticated user",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "chat:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "meeting_id",
            "in": "query",
            "required": false,
            "description": "Filter by meeting ID",
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum sessions to return (1-100, default: 25)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of sessions to skip (0-based, default: 0)",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Sessions retrieved successfully",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the session was created",
                      "example": "2026-03-16T14:30:00Z"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the session",
                      "example": "f7e6d5c4-b3a2-1098-7654-321fedcba098"
                    },
                    "meeting_id": {
                      "type": "string",
                      "description": "ID of the associated meeting (if any)",
                      "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
                    },
                    "metadata": {
                      "type": "object",
                      "description": "Partner-supplied metadata",
                      "additionalProperties": {
                        "type": "string"
                      }
                    },
                    "status": {
                      "type": "string",
                      "description": "Current session status: active, closed, or expired",
                      "enum": [
                        "active",
                        "closed",
                        "expired"
                      ],
                      "example": "active"
                    },
                    "title": {
                      "type": "string",
                      "description": "Session title (if any)",
                      "example": "Quarterly Product Review Planning"
                    },
                    "turn_count": {
                      "type": "integer",
                      "description": "Total number of turns in this session (user + agent messages)",
                      "example": 4
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the session was last updated",
                      "example": "2026-03-16T14:35:12Z"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid query parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`chat:read`) listing the user's chat sessions,\npaginated. Read-only; session ids feed `getSession`, `getSessionTurn`, and\n`sendSessionMessage`."
    },
    "listTemplateNextSteps": {
      "id": "listTemplateNextSteps",
      "method": "GET",
      "path": "/v1/partner/admin/templates/{templateId}/next-steps",
      "summary": "Get template next steps",
      "description": "Returns the next steps for a template for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "description": "Template ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "autopilot": {
                      "type": "boolean",
                      "description": "Whether autopilot is enabled for this next step on the template",
                      "example": true
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the next step",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the next step",
                      "example": "Generate Invoice"
                    },
                    "sort_order": {
                      "type": "integer",
                      "description": "Sort order of the next step",
                      "example": 1
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Template not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) read of the next steps configured on a template\n(`templateId`). Read-only; next-step IDs feed the add/update/remove\noperations."
    },
    "listTemplates": {
      "id": "listTemplates",
      "method": "GET",
      "path": "/v1/partner/admin/templates",
      "summary": "List templates",
      "description": "Retrieves a paginated list of templates for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Limit",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "backing_meeting_id": {
                      "type": "string",
                      "description": "BackingMeetingID is the ID of the meeting this template was created from, if any",
                      "example": "123e4567-e89b-12d3-a456-426614174002"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the template was created",
                      "example": "2024-01-01T00:00:00Z"
                    },
                    "description": {
                      "type": "string",
                      "example": "Invoice template for new clients"
                    },
                    "id": {
                      "type": "string",
                      "example": "123e4567-e89b-12d3-a456-426614174001"
                    },
                    "name": {
                      "type": "string",
                      "example": "Invoice Template"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the template was last updated",
                      "example": "2024-01-01T00:00:00Z"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) paginated list of the partner app's templates via\n`limit`/`offset`. Scoped to the calling app. Read-only; template IDs feed\nthe get/update/delete and next-step operations."
    },
    "listToolkits": {
      "id": "listToolkits",
      "method": "GET",
      "path": "/v1/partner/user/toolkits",
      "summary": "List available toolkits",
      "description": "Retrieves toolkits available for installation in the user's workspace",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "toolkits:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items per page",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of items to skip",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "action_buttons_count": {
                      "type": "integer",
                      "description": "Number of action buttons in the toolkit",
                      "example": 2
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the toolkit was created",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "description": {
                      "type": "string",
                      "description": "Description of the toolkit",
                      "example": "A comprehensive toolkit for sales meetings"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the toolkit",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "is_active": {
                      "type": "boolean",
                      "description": "Whether the toolkit is active",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the toolkit",
                      "example": "Sales Meeting Toolkit"
                    },
                    "next_steps_count": {
                      "type": "integer",
                      "description": "Number of next steps in the toolkit",
                      "example": 5
                    },
                    "ownership_type": {
                      "type": "string",
                      "description": "Ownership type of the toolkit",
                      "enum": [
                        "SYSTEM",
                        "PARTNER"
                      ],
                      "example": "PARTNER"
                    },
                    "slug": {
                      "type": "string",
                      "description": "URL-friendly slug for the toolkit",
                      "example": "sales-meeting-toolkit"
                    },
                    "templates_count": {
                      "type": "integer",
                      "description": "Number of templates in the toolkit",
                      "example": 3
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the toolkit was last updated",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "version": {
                      "type": "string",
                      "description": "Version of the toolkit",
                      "example": "1.0.0"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`toolkits:read`) listing toolkits available for the\nuser to install. Read-only; toolkit ids feed `installToolkit`. This is the\nuser-facing catalog, distinct from the admin toolkit-management endpoints."
    },
    "listWebhookDeliveries": {
      "id": "listWebhookDeliveries",
      "method": "GET",
      "path": "/v1/partner/admin/webhook-deliveries",
      "summary": "List webhook deliveries",
      "description": "Retrieves webhook deliveries for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Filter by delivery status (pending, delivered, failed, abandoned)",
            "type": "string"
          },
          {
            "name": "event_type",
            "in": "query",
            "required": false,
            "description": "Filter by event type (e.g., meeting.created, automation.assignment.created)",
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of results to return (default 50, max 100)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of results to skip (default 0)",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "deliveries": {
                "type": "array",
                "description": "Array of webhook delivery records",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the delivery was created",
                      "example": "2024-01-14T10:00:00Z"
                    },
                    "delivered_at": {
                      "type": "string",
                      "description": "When the webhook was successfully delivered",
                      "example": "2024-01-14T10:30:00Z"
                    },
                    "delivery_status": {
                      "type": "string",
                      "description": "Current delivery status (pending, delivered, failed, abandoned)",
                      "example": "delivered"
                    },
                    "error_message": {
                      "type": "string",
                      "description": "Error message if delivery failed",
                      "example": ""
                    },
                    "event_id": {
                      "type": "string",
                      "description": "ID of the event that triggered this delivery",
                      "example": "123e4567-e89b-12d3-a456-426614174006"
                    },
                    "event_type": {
                      "type": "string",
                      "description": "Type of event that triggered this webhook",
                      "example": "action_item_created"
                    },
                    "http_status_code": {
                      "type": "integer",
                      "description": "HTTP status code returned by the webhook endpoint",
                      "example": 200
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the webhook delivery",
                      "example": "123e4567-e89b-12d3-a456-426614174005"
                    },
                    "next_retry_at": {
                      "type": "string",
                      "description": "When the next retry attempt will be made (if applicable)",
                      "example": "2024-01-15T10:30:00Z"
                    },
                    "partner_app_id": {
                      "type": "string",
                      "description": "ID of the partner app this delivery belongs to",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "retry_count": {
                      "type": "integer",
                      "description": "Number of retry attempts made",
                      "example": 0
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of deliveries matching the filter",
                "example": 25
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) paginated list of webhook delivery attempts for the partner\napp, with their status (delivered/failed/pending). Read-only; use it to\ndiagnose delivery problems and to find delivery IDs for retry. Delivery\nhistory is retained for a limited window."
    },
    "listWorkflowRuns": {
      "id": "listWorkflowRuns",
      "method": "GET",
      "path": "/v1/partner/user/workflow-runs",
      "summary": "List workflow runs",
      "description": "Returns a paginated list of workflow runs in the caller's workspace. Optional filters may be supplied to narrow the result set.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "workflows:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Limit",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset",
            "type": "integer"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Filter by run status",
            "type": "string"
          },
          {
            "name": "workflow_template_id",
            "in": "query",
            "required": false,
            "description": "Filter by workflow template ID",
            "type": "string"
          },
          {
            "name": "originating_type",
            "in": "query",
            "required": false,
            "description": "Filter by originating object type",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "completed_at": {
                      "type": "string",
                      "description": "CompletedAt is the timestamp at which the run finished.",
                      "example": "2024-01-01T00:05:00Z"
                    },
                    "context_json": {
                      "type": "object",
                      "description": "ContextJSON is the assembled context snapshot for the run as a JSON object."
                    },
                    "created_at": {
                      "type": "string",
                      "description": "CreatedAt is the timestamp at which the run was created.",
                      "example": "2024-01-01T00:00:00Z"
                    },
                    "current_step_ids": {
                      "type": "array",
                      "description": "CurrentStepIDs is the list of step IDs currently eligible to run.",
                      "example": [
                        "step-1"
                      ],
                      "items": {
                        "type": "string"
                      }
                    },
                    "id": {
                      "type": "string",
                      "description": "ID is the workflow run's unique identifier.",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "name": {
                      "type": "string",
                      "description": "Name is the optional display name of the run.",
                      "example": "Post-meeting follow-up"
                    },
                    "originating_id": {
                      "type": "string",
                      "description": "OriginatingID is the ID of the originating object.",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    },
                    "originating_type": {
                      "type": "string",
                      "description": "OriginatingType is the kind of object that triggered the run.",
                      "enum": [
                        "meeting",
                        "canvas"
                      ],
                      "example": "meeting"
                    },
                    "owner_user_id": {
                      "type": "string",
                      "description": "OwnerUserID is the user whose context owns the run.",
                      "example": "123e4567-e89b-12d3-a456-426614174005"
                    },
                    "started_at": {
                      "type": "string",
                      "description": "StartedAt is the timestamp at which run execution began.",
                      "example": "2024-01-01T00:00:00Z"
                    },
                    "status": {
                      "type": "string",
                      "description": "Status is the current run status.",
                      "enum": [
                        "pending",
                        "active",
                        "completed",
                        "failed",
                        "cancelled",
                        "frozen"
                      ],
                      "example": "pending"
                    },
                    "trigger_type": {
                      "type": "string",
                      "description": "TriggerType indicates how the run was triggered.",
                      "enum": [
                        "manual",
                        "autopilot"
                      ],
                      "example": "manual"
                    },
                    "triggered_by": {
                      "type": "string",
                      "description": "TriggeredBy is the ID of the user who triggered a manual run, if applicable.",
                      "example": "123e4567-e89b-12d3-a456-426614174004"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "UpdatedAt is the timestamp at which the run was last updated.",
                      "example": "2024-01-01T00:00:00Z"
                    },
                    "workflow_template_id": {
                      "type": "string",
                      "description": "WorkflowTemplateID is the template that produced this run.",
                      "example": "123e4567-e89b-12d3-a456-426614174001"
                    },
                    "workspace_id": {
                      "type": "string",
                      "description": "WorkspaceID is the workspace that owns the run.",
                      "example": "123e4567-e89b-12d3-a456-426614174002"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`workflows:read`) listing the user's workflow runs,\npaginated, with their status. Read-only; run ids feed `getWorkflowRun`."
    },
    "listWorkflowTemplates": {
      "id": "listWorkflowTemplates",
      "method": "GET",
      "path": "/v1/partner/admin/workflow-templates",
      "summary": "List workflow templates",
      "description": "Retrieves a paginated list of workflow templates owned by the authenticated partner app across all workspaces.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Limit",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string",
                      "description": "CreatedAt is the timestamp at which the template was created.",
                      "example": "2024-01-01T00:00:00Z"
                    },
                    "description": {
                      "type": "string",
                      "description": "Description is an optional human-readable description.",
                      "example": "Runs after the meeting ends"
                    },
                    "id": {
                      "type": "string",
                      "description": "ID is the workflow template's unique identifier.",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "is_active": {
                      "type": "boolean",
                      "description": "IsActive indicates whether the template is active and eligible to be run.",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "description": "Name is the human-readable template name.",
                      "example": "Post-meeting Follow-up"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "UpdatedAt is the timestamp at which the template was last updated.",
                      "example": "2024-01-01T00:00:00Z"
                    },
                    "workspace_id": {
                      "type": "string",
                      "description": "WorkspaceID is the workspace that owns the template row.",
                      "example": "123e4567-e89b-12d3-a456-426614174001"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) list of workflow templates available to the partner app.\nRead-only; template IDs identify workflows that end users can run via the\nuser-scoped workflow-run endpoints."
    },
    "removeMeetingParticipant": {
      "id": "removeMeetingParticipant",
      "method": "DELETE",
      "path": "/v1/partner/user/meetings/{id}/participants/{participant_id}",
      "summary": "Remove meeting participant",
      "description": "Removes a participant from a specific meeting. User must be an editor of the meeting.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "participant_id",
            "in": "path",
            "required": true,
            "description": "Participant ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Participant removed successfully",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "User is not an editor of the meeting",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Participant not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:write`) that removes a participant\n(`participant_id`) from a meeting (`id`). Returns success; removing an\nabsent participant is a no-op. Affects meeting access/notifications going\nforward."
    },
    "removeTemplateNextStep": {
      "id": "removeTemplateNextStep",
      "method": "DELETE",
      "path": "/v1/partner/admin/templates/{templateId}/next-steps/{nextStepId}",
      "summary": "Remove next step from template",
      "description": "Removes a next step from a template for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "description": "Template ID",
            "type": "string"
          },
          {
            "name": "nextStepId",
            "in": "path",
            "required": true,
            "description": "Next Step ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Next step removed from template successfully",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Template or next step not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) that removes a next-step association from a template\n(`templateId`/`nextStepId`). Returns 204; 404 if the association is absent.\nRemoves only the association, not the underlying next-step definition.\nAccepts an optional `Idempotency-Key`."
    },
    "replaceApp": {
      "id": "replaceApp",
      "method": "PUT",
      "path": "/v1/partner/admin/app",
      "summary": "Update partner app",
      "description": "Updates partner app details like name, description, and webhook URL",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Update app request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "default_toolkit_id": {
              "type": "string",
              "example": "123e4567-e89b-12d3-a456-426614174001"
            },
            "description": {
              "type": "string",
              "example": "Updated integration description"
            },
            "name": {
              "type": "string",
              "example": "Updated CRM Integration"
            },
            "slug": {
              "type": "string",
              "example": "acme-crm"
            },
            "webhook_url": {
              "type": "string",
              "example": "https://api.example.com/webhook"
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "client_id": {
                "type": "string",
                "description": "OAuth client ID for this partner app",
                "example": "partner_1234567890_abcdef123456"
              },
              "company_name": {
                "type": "string",
                "description": "Name of the company that owns this partner app",
                "example": "Acme Corp"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the partner app was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "default_toolkit_id": {
                "type": "string",
                "description": "Default toolkit ID to auto-install when a workspace is provisioned via this partner app",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "description": {
                "type": "string",
                "description": "Optional description of the partner app",
                "example": "Integrates with our CRM system"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the partner app",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "description": "Display name of the partner app",
                "example": "CRM Integration"
              },
              "primary_contact_email": {
                "type": "string",
                "description": "Primary contact email for this partner app",
                "example": "contact@example.com"
              },
              "slug": {
                "type": "string",
                "description": "URL-friendly slug for the partner app",
                "example": "acme-crm"
              },
              "status": {
                "type": "string",
                "description": "Current status (active, inactive, suspended)",
                "example": "active"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the partner app was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "webhook_enabled": {
                "type": "boolean",
                "description": "Whether webhook delivery is enabled for this partner app",
                "example": true
              },
              "webhook_filter": {
                "type": "object",
                "description": "Optional webhook event filter configuration for this partner app",
                "properties": {
                  "events": {
                    "type": "array",
                    "description": "Event types included in the filter configuration",
                    "example": [
                      "meeting.created",
                      "action_item.updated"
                    ],
                    "items": {
                      "type": "string"
                    }
                  },
                  "type": {
                    "type": "string",
                    "description": "Filter mode controlling how events are matched",
                    "example": "include"
                  }
                }
              },
              "webhook_url": {
                "type": "string",
                "description": "Webhook URL for receiving event notifications",
                "example": "https://api.example.com/webhook"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for updating partner app",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_request",
                  "invalid_request_body",
                  "validation_error"
                ],
                "example": "invalid_request_body"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request body"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) full update (PUT) of the partner app's mutable settings such\nas name, description, and webhook URL. Send the complete desired state —\nomitted fields are replaced, not merged. Supports an optional `Idempotency-\nKey` header so a retried request is not double-applied. Idempotent: re-\nsending the same body is a safe no-op."
    },
    "replaceAppStatus": {
      "id": "replaceAppStatus",
      "method": "PUT",
      "path": "/v1/partner/admin/app/status",
      "summary": "Update partner app status",
      "description": "Updates the status of the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Status update request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "status": {
              "type": "string",
              "enum": [
                "active",
                "suspended",
                "inactive"
              ],
              "example": "suspended"
            }
          },
          "required": [
            "status"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "client_id": {
                "type": "string",
                "description": "OAuth client ID for this partner app",
                "example": "partner_1234567890_abcdef123456"
              },
              "company_name": {
                "type": "string",
                "description": "Name of the company that owns this partner app",
                "example": "Acme Corp"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the partner app was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "default_toolkit_id": {
                "type": "string",
                "description": "Default toolkit ID to auto-install when a workspace is provisioned via this partner app",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "description": {
                "type": "string",
                "description": "Optional description of the partner app",
                "example": "Integrates with our CRM system"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the partner app",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "description": "Display name of the partner app",
                "example": "CRM Integration"
              },
              "primary_contact_email": {
                "type": "string",
                "description": "Primary contact email for this partner app",
                "example": "contact@example.com"
              },
              "slug": {
                "type": "string",
                "description": "URL-friendly slug for the partner app",
                "example": "acme-crm"
              },
              "status": {
                "type": "string",
                "description": "Current status (active, inactive, suspended)",
                "example": "active"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the partner app was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "webhook_enabled": {
                "type": "boolean",
                "description": "Whether webhook delivery is enabled for this partner app",
                "example": true
              },
              "webhook_filter": {
                "type": "object",
                "description": "Optional webhook event filter configuration for this partner app",
                "properties": {
                  "events": {
                    "type": "array",
                    "description": "Event types included in the filter configuration",
                    "example": [
                      "meeting.created",
                      "action_item.updated"
                    ],
                    "items": {
                      "type": "string"
                    }
                  },
                  "type": {
                    "type": "string",
                    "description": "Filter mode controlling how events are matched",
                    "example": "include"
                  }
                }
              },
              "webhook_url": {
                "type": "string",
                "description": "Webhook URL for receiving event notifications",
                "example": "https://api.example.com/webhook"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for updating partner app status",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_request_body",
                  "invalid_status"
                ],
                "example": "invalid_status"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid status value"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) update of the partner app's lifecycle status. Changing\nstatus can gate the app's own access — moving out of an active status can\ncause subsequent API calls to be rejected (e.g. `partner_app_inactive`), so\ntreat deactivation as operationally significant. Accepts an optional\n`Idempotency-Key`; setting the same status again is idempotent."
    },
    "replaceAutomation": {
      "id": "replaceAutomation",
      "method": "PUT",
      "path": "/v1/partner/admin/automation/{automationId}",
      "summary": "Update automation",
      "description": "Updates a specific automation for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "automationId",
            "in": "path",
            "required": true,
            "description": "Automation ID",
            "type": "string"
          },
          {
            "name": "automation",
            "in": "body",
            "required": true,
            "description": "Automation update data",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "actions": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "config": {
                    "type": "object",
                    "example": {
                      "url": "https://api.example.com/webhook"
                    },
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "type": {
                    "type": "string",
                    "example": "webhook"
                  }
                },
                "required": [
                  "type"
                ]
              }
            },
            "description": {
              "type": "string",
              "example": "Updated description"
            },
            "is_active": {
              "type": "boolean"
            },
            "name": {
              "type": "string",
              "example": "Updated CRM Integration"
            },
            "status": {
              "type": "string",
              "enum": [
                "active",
                "inactive"
              ],
              "example": "active"
            },
            "trigger_type": {
              "type": "string",
              "enum": [
                "action_item_created",
                "action_item_updated",
                "action_item_completed",
                "meeting_ended",
                "meeting_summary_ready"
              ]
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "actions": {
                "type": "array",
                "description": "Actions to execute when the automation is triggered",
                "items": {
                  "type": "object",
                  "properties": {
                    "config": {
                      "type": "object",
                      "example": {
                        "url": "https://api.example.com/webhook"
                      },
                      "additionalProperties": {
                        "type": "string"
                      }
                    },
                    "type": {
                      "type": "string",
                      "example": "webhook"
                    }
                  },
                  "required": [
                    "type"
                  ]
                }
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the automation was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "description": "Optional description of what the automation does",
                "example": "Sync action items to CRM"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the automation",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "name": {
                "type": "string",
                "description": "Name of the automation",
                "example": "CRM Integration"
              },
              "partner_app_id": {
                "type": "string",
                "description": "ID of the partner app that owns this automation",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "status": {
                "type": "string",
                "description": "Current status (active or inactive)",
                "example": "active"
              },
              "trigger_type": {
                "type": "string",
                "description": "Event type that triggers this automation",
                "example": "action_item_created"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the automation was last updated",
                "example": "2023-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body or validation error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for updating an automation",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_automation_id",
                  "invalid_request_body",
                  "validation_error"
                ],
                "example": "invalid_automation_id"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid automation ID format"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Automation not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) full update (PUT) of an automation by `automationId`. Send\nthe complete automation definition (trigger, actions); omitted fields are\noverwritten. Like automation creation, changes only take effect on future\ntrigger matches and results are reported asynchronously via webhooks.\nAccepts an optional `Idempotency-Key`; idempotent for identical bodies."
    },
    "replaceIdpConfig": {
      "id": "replaceIdpConfig",
      "method": "PUT",
      "path": "/v1/partner/admin/idp",
      "summary": "Update IdP configuration",
      "description": "Updates the OIDC IdP configuration for the authenticated partner app. Note: idp_client_id and idp_client_secret are the OIDC credentials from your Identity Provider (e.g., Okta, Azure AD), NOT your Contio Partner OAuth credentials.",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "config",
            "in": "body",
            "required": true,
            "description": "IdP configuration update data",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "allowed_email_domains": {
              "type": "array",
              "description": "Email domains allowed for SSO (required for strict mode)",
              "items": {
                "type": "string"
              }
            },
            "claim_mappings": {
              "type": "object",
              "description": "Maps Contio user fields to IdP claim names",
              "additionalProperties": {
                "type": "string"
              }
            },
            "discovery_url": {
              "type": "string",
              "description": "OIDC discovery endpoint URL from your Identity Provider",
              "example": "https://company.okta.com/.well-known/openid-configuration"
            },
            "idp_client_id": {
              "type": "string",
              "description": "OAuth Client ID from your Identity Provider's OIDC application. This is NOT your Contio Partner client_id.",
              "example": "0oa1234567890abcdef"
            },
            "idp_client_secret": {
              "type": "string",
              "description": "OAuth Client Secret from your Identity Provider's OIDC application. This is NOT your Contio Partner client_secret. Stored encrypted at rest.",
              "example": "new-IdP-secret"
            },
            "is_active": {
              "type": "boolean",
              "description": "Enable or disable this IdP configuration",
              "example": true
            },
            "mode": {
              "type": "string",
              "description": "Domain validation mode: \"strict\" or \"partner_managed\"",
              "enum": [
                "strict",
                "partner_managed"
              ],
              "example": "partner_managed"
            },
            "name": {
              "type": "string",
              "description": "Display name for this IdP configuration",
              "example": "Updated Okta SSO"
            },
            "scopes": {
              "type": "array",
              "description": "OIDC scopes to request during authentication",
              "items": {
                "type": "string"
              }
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "allowed_email_domains": {
                "type": "array",
                "description": "Email domains allowed for SSO",
                "example": [
                  "company.com",
                  "subsidiary.com"
                ],
                "items": {
                  "type": "string"
                }
              },
              "authorization_endpoint": {
                "type": "string",
                "description": "Discovered OIDC authorization endpoint",
                "example": "https://company.okta.com/authorize"
              },
              "claim_mappings": {
                "type": "object",
                "description": "Maps Contio user fields to IdP claim names",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "created_at": {
                "type": "string",
                "example": "2024-01-01T00:00:00Z"
              },
              "discovery_last_fetched_at": {
                "type": "string",
                "description": "When the OIDC discovery document was last fetched",
                "example": "2024-01-01T00:00:00Z"
              },
              "discovery_url": {
                "type": "string",
                "description": "OIDC discovery endpoint URL",
                "example": "https://company.okta.com/.well-known/openid-configuration"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "idp_client_id": {
                "type": "string",
                "description": "OAuth Client ID from your Identity Provider (secret is never returned)",
                "example": "0oa1234567890abcdef"
              },
              "is_active": {
                "type": "boolean",
                "description": "Whether this IdP configuration is active",
                "example": true
              },
              "issuer": {
                "type": "string",
                "description": "Discovered OIDC issuer",
                "example": "https://company.okta.com"
              },
              "jwks_uri": {
                "type": "string",
                "description": "Discovered OIDC JWKS URI",
                "example": "https://company.okta.com/jwks"
              },
              "mode": {
                "type": "string",
                "description": "Domain validation mode",
                "example": "strict"
              },
              "name": {
                "type": "string",
                "description": "Display name for this IdP configuration",
                "example": "Okta SSO"
              },
              "partner_app_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "scopes": {
                "type": "array",
                "description": "OIDC scopes requested during authentication",
                "example": [
                  "openid",
                  "email",
                  "profile"
                ],
                "items": {
                  "type": "string"
                }
              },
              "token_endpoint": {
                "type": "string",
                "description": "Discovered OIDC token endpoint",
                "example": "https://company.okta.com/token"
              },
              "type": {
                "type": "string",
                "description": "IdP type (always \"oidc\")",
                "example": "oidc"
              },
              "updated_at": {
                "type": "string",
                "example": "2024-01-01T00:00:00Z"
              },
              "userinfo_endpoint": {
                "type": "string",
                "description": "Discovered OIDC userinfo endpoint",
                "example": "https://company.okta.com/userinfo"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body or validation error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for updating IdP configuration",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_request_body",
                  "invalid_idp_credentials",
                  "invalid_idp",
                  "domain_is_generic",
                  "domain_already_claimed",
                  "domain_reserved",
                  "strict_mode_requires_domains",
                  "discovery_fetch_failed"
                ],
                "example": "invalid_request_body"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request body"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "IdP config not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "Domain already claimed",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) update (PUT) of the partner app's OIDC IdP configuration\nused for SSO. Note `idp_client_id`/`idp_client_secret` are the credentials\nfrom YOUR Identity Provider (Okta, Azure AD, etc.), not your Contio partner\nOAuth credentials — a common mix-up. Send the full config; 404 if none\nexists yet (create first), 409 on conflicting state. Accepts an optional\n`Idempotency-Key`; idempotent for identical config."
    },
    "replaceTemplate": {
      "id": "replaceTemplate",
      "method": "PUT",
      "path": "/v1/partner/admin/templates/{templateId}",
      "summary": "Update a template",
      "description": "Updates a template for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "description": "Template ID",
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Template update request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "description": {
              "type": "string",
              "description": "Optional description of the template",
              "example": "Updated invoice template for new clients"
            },
            "name": {
              "type": "string",
              "description": "Name of the template",
              "example": "Updated Invoice Template"
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "backing_meeting_id": {
                "type": "string",
                "description": "BackingMeetingID is the ID of the meeting this template was created from, if any",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the template was created",
                "example": "2024-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "example": "Invoice template for new clients"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "name": {
                "type": "string",
                "example": "Invoice Template"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the template was last updated",
                "example": "2024-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Template not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) full update (PUT) of a template by `templateId`. Send the\ncomplete template body — omitted fields are overwritten, not merged. Accepts\nan optional `Idempotency-Key`; idempotent for identical bodies."
    },
    "replaceTemplateNextStep": {
      "id": "replaceTemplateNextStep",
      "method": "PUT",
      "path": "/v1/partner/admin/templates/{templateId}/next-steps/{nextStepId}",
      "summary": "Update template next step association",
      "description": "Updates the autopilot flag for a next step in a template",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "description": "Template ID",
            "type": "string"
          },
          {
            "name": "nextStepId",
            "in": "path",
            "required": true,
            "description": "Next Step ID",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Update template next step request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "autopilot": {
              "type": "boolean",
              "example": true
            }
          }
        }
      },
      "responses": {
        "204": {
          "description": "Template next step association updated successfully",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Template or next step not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) update of a template next-step association\n(`templateId`/`nextStepId`) — notably the autopilot flag controlling whether\nthe step runs automatically. Returns 204. Enabling autopilot changes runtime\nbehavior for meetings using the template. Accepts an optional `Idempotency-\nKey`; idempotent for the same value."
    },
    "replaceWebhookFilter": {
      "id": "replaceWebhookFilter",
      "method": "PUT",
      "path": "/v1/partner/admin/webhook-filter",
      "summary": "Update partner app webhook filter",
      "description": "Configures include or exclude event filtering for webhook delivery",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Webhook filter update request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "events": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "type": {
              "type": "string",
              "enum": [
                "include",
                "exclude"
              ],
              "example": "include"
            }
          },
          "required": [
            "events",
            "type"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "client_id": {
                "type": "string",
                "description": "OAuth client ID for this partner app",
                "example": "partner_1234567890_abcdef123456"
              },
              "company_name": {
                "type": "string",
                "description": "Name of the company that owns this partner app",
                "example": "Acme Corp"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the partner app was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "default_toolkit_id": {
                "type": "string",
                "description": "Default toolkit ID to auto-install when a workspace is provisioned via this partner app",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "description": {
                "type": "string",
                "description": "Optional description of the partner app",
                "example": "Integrates with our CRM system"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the partner app",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "description": "Display name of the partner app",
                "example": "CRM Integration"
              },
              "primary_contact_email": {
                "type": "string",
                "description": "Primary contact email for this partner app",
                "example": "contact@example.com"
              },
              "slug": {
                "type": "string",
                "description": "URL-friendly slug for the partner app",
                "example": "acme-crm"
              },
              "status": {
                "type": "string",
                "description": "Current status (active, inactive, suspended)",
                "example": "active"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the partner app was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "webhook_enabled": {
                "type": "boolean",
                "description": "Whether webhook delivery is enabled for this partner app",
                "example": true
              },
              "webhook_filter": {
                "type": "object",
                "description": "Optional webhook event filter configuration for this partner app",
                "properties": {
                  "events": {
                    "type": "array",
                    "description": "Event types included in the filter configuration",
                    "example": [
                      "meeting.created",
                      "action_item.updated"
                    ],
                    "items": {
                      "type": "string"
                    }
                  },
                  "type": {
                    "type": "string",
                    "description": "Filter mode controlling how events are matched",
                    "example": "include"
                  }
                }
              },
              "webhook_url": {
                "type": "string",
                "description": "Webhook URL for receiving event notifications",
                "example": "https://api.example.com/webhook"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body or event types",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for updating partner app webhook filters",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_request_body",
                  "validation_error"
                ],
                "example": "validation_error"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "invalid event types: invalid.event"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              },
              "valid_event_types": {
                "type": "array",
                "description": "Valid event types that can be used in the webhook filter request",
                "example": [
                  "meeting.created",
                  "action_item.updated"
                ],
                "items": {
                  "type": "string"
                }
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) full update (PUT) of the partner app's webhook event filter\n— the set of event types Contio delivers. Send the complete desired filter;\nomitted entries are removed. Narrowing the filter stops delivery of excluded\nevents (they are not queued for later). Accepts an optional `Idempotency-\nKey`; idempotent for identical filters."
    },
    "replaceWebhookStatus": {
      "id": "replaceWebhookStatus",
      "method": "PUT",
      "path": "/v1/partner/admin/webhook-status",
      "summary": "Update partner app webhook status",
      "description": "Enables or disables webhook delivery for the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Webhook status update request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean",
              "example": true
            },
            "pending_disposition": {
              "type": "string",
              "enum": [
                "deliver",
                "abandon"
              ],
              "example": "abandon"
            }
          },
          "required": [
            "enabled"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "client_id": {
                "type": "string",
                "description": "OAuth client ID for this partner app",
                "example": "partner_1234567890_abcdef123456"
              },
              "company_name": {
                "type": "string",
                "description": "Name of the company that owns this partner app",
                "example": "Acme Corp"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the partner app was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "default_toolkit_id": {
                "type": "string",
                "description": "Default toolkit ID to auto-install when a workspace is provisioned via this partner app",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "description": {
                "type": "string",
                "description": "Optional description of the partner app",
                "example": "Integrates with our CRM system"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the partner app",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "description": "Display name of the partner app",
                "example": "CRM Integration"
              },
              "primary_contact_email": {
                "type": "string",
                "description": "Primary contact email for this partner app",
                "example": "contact@example.com"
              },
              "slug": {
                "type": "string",
                "description": "URL-friendly slug for the partner app",
                "example": "acme-crm"
              },
              "status": {
                "type": "string",
                "description": "Current status (active, inactive, suspended)",
                "example": "active"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the partner app was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "webhook_enabled": {
                "type": "boolean",
                "description": "Whether webhook delivery is enabled for this partner app",
                "example": true
              },
              "webhook_filter": {
                "type": "object",
                "description": "Optional webhook event filter configuration for this partner app",
                "properties": {
                  "events": {
                    "type": "array",
                    "description": "Event types included in the filter configuration",
                    "example": [
                      "meeting.created",
                      "action_item.updated"
                    ],
                    "items": {
                      "type": "string"
                    }
                  },
                  "type": {
                    "type": "string",
                    "description": "Filter mode controlling how events are matched",
                    "example": "include"
                  }
                }
              },
              "webhook_url": {
                "type": "string",
                "description": "Webhook URL for receiving event notifications",
                "example": "https://api.example.com/webhook"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body or pending disposition",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key) operation that enables or disables webhook delivery for the\npartner app. `enabled` is required. The subtle part is `pending_disposition`:\nwhen re-enabling (`enabled: true`) after an outage or auto-disable, it decides\nwhat happens to events that queued while delivery was off — `deliver` replays\nthem, `abandon` drops them. Omitting it when re-enabling can lead to surprising\nbehavior, so set it explicitly. Contio auto-disables a webhook after sustained\ndelivery failures, so treat re-enabling as a recovery step and fix the endpoint\nfirst. This is a full replace (PUT) and is idempotent — re-sending the same\nstate is a safe no-op.\n\n\u003c!-- PUT /v1/partner/admin/webhook-status --\u003e\n\u003c!-- Update partner app webhook status --\u003e"
    },
    "retryWebhookDelivery": {
      "id": "retryWebhookDelivery",
      "method": "POST",
      "path": "/v1/partner/admin/webhook-deliveries/{deliveryId}/retry",
      "summary": "Retry webhook delivery",
      "description": "Retries a failed webhook delivery",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "description": "Webhook Delivery ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "delivery_id": {
                "type": "string",
                "description": "ID of the webhook delivery that was retried",
                "example": "123e4567-e89b-12d3-a456-426614174005"
              },
              "message": {
                "type": "string",
                "description": "Human-readable status message",
                "example": "Webhook delivery retry scheduled successfully"
              },
              "next_retry_at": {
                "type": "string",
                "description": "When the next retry attempt will be made (null when not scheduled)",
                "example": "2024-01-15T10:30:00Z"
              },
              "retry_count": {
                "type": "integer",
                "description": "Number of retry attempts made so far",
                "example": 1
              },
              "retry_scheduled": {
                "type": "boolean",
                "description": "Whether a retry has been scheduled",
                "example": true
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Webhook delivery not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key) that re-attempts delivery of a previously failed webhook by\n`deliveryId` to the currently configured endpoint. Use it after fixing an\nendpoint outage. Because the receiver may have partially processed the\noriginal, treat your webhook handler as idempotent (dedupe on event id). Not\na substitute for signature verification on your side."
    },
    "revokeConnection": {
      "id": "revokeConnection",
      "method": "DELETE",
      "path": "/v1/partner/admin/connections/{connectionId}",
      "summary": "Revoke user connection",
      "description": "Revokes a user connection by ID if it belongs to the authenticated partner app",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "description": "Connection ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "No Content",
          "has_schema": false
        },
        "400": {
          "description": "Invalid connection ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Connection not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "Admin (API-key), security-relevant: revokes a user's connection by\n`connectionId`, invalidating that user's authorization so their tokens can\nno longer act through this app. Destructive and takes effect going forward.\nReturns 204; 404 if the connection is unknown or not owned by the app.\nAccepts an optional `Idempotency-Key`; revoking an already-revoked\nconnection is a safe no-op."
    },
    "revokeOauthToken": {
      "id": "revokeOauthToken",
      "method": "POST",
      "path": "/oauth2/revoke",
      "summary": "OAuth 2.0 Token Revocation Endpoint",
      "description": "Revokes an access or refresh token. Per RFC 7009, returns success even for invalid tokens.",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "token",
            "in": "formData",
            "required": true,
            "description": "Token to revoke",
            "type": "string"
          },
          {
            "name": "token_type_hint",
            "in": "formData",
            "required": false,
            "description": "Hint about token type (access_token or refresh_token)",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Token revoked successfully",
          "has_schema": false
        },
        "400": {
          "description": "Bad Request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "RFC 7009 token revocation endpoint. Requires partner client authentication\n(HTTP Basic Auth with your `client_id` / `client_secret`, or the credentials\nin the form body); unauthenticated calls are rejected with 401. Accepts a\n`token` (form-encoded) with optional `token_type_hint`\n(`access_token`/`refresh_token`). Per the RFC it returns success even for\nunknown or already-revoked tokens, so a 200 is not proof the token existed.\nRevoking a refresh token also invalidates tokens derived from it; revocation\nis effectively idempotent.",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "rollbackApiKey": {
      "id": "rollbackApiKey",
      "method": "POST",
      "path": "/v1/partner/admin/credentials/api-key/rollback",
      "summary": "Rollback API key",
      "description": "Restores the API key to the prior value after rotation",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Rollback request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "example": "Detected issues"
            },
            "rollback_token": {
              "type": "string",
              "example": "rollback_token_xyz..."
            }
          },
          "required": [
            "rollback_token"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "Rollback successful",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "429": {
          "description": "Rate limit exceeded",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key), security-critical: restores the API key to its immediately\nprior value after a `rotateApiKey`, only while the rollback window is open.\nRate-limited (429 when exceeded). The response returns the restored secret\nkey — treat it as a secret (never log or echo it). Rolling back invalidates\nthe key issued by the rotation, so update integrations accordingly. Accepts\nan optional `Idempotency-Key`."
    },
    "rollbackClientSecret": {
      "id": "rollbackClientSecret",
      "method": "POST",
      "path": "/v1/partner/admin/credentials/client-secret/rollback",
      "summary": "Rollback Client secret",
      "description": "Restores the client secret to the prior value after rotation",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Rollback request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "example": "Detected issues"
            },
            "rollback_token": {
              "type": "string",
              "example": "rollback_token_xyz..."
            }
          },
          "required": [
            "rollback_token"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "Rollback successful",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "429": {
          "description": "Rate limit exceeded",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key), security-critical: restores the client secret to its prior\nvalue after a `rotateClientSecret`, only within the rollback window. Rate-\nlimited (429). Returns the restored secret — handle as reveal-once and store\nsecurely, never log it. Invalidates the secret produced by the rotation.\nAccepts an optional `Idempotency-Key`."
    },
    "rotateApiKey": {
      "id": "rotateApiKey",
      "method": "POST",
      "path": "/v1/partner/admin/credentials/api-key/rotate",
      "summary": "Rotate API key",
      "description": "Rotates the API key with optional grace period",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Rotation request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "confirmation_token": {
              "type": "string",
              "example": "confirm-rotation-12345"
            },
            "grace_period_hours": {
              "type": "integer",
              "example": 48
            },
            "reason": {
              "type": "string",
              "example": "Scheduled rotation"
            }
          },
          "required": [
            "confirmation_token"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "credential_type": {
                "type": "string",
                "description": "Type of credential that was rotated (api_key or client_secret)",
                "example": "api_key"
              },
              "grace_period_ends_at": {
                "type": "string",
                "description": "When the grace period ends and old credential stops working",
                "example": "2024-01-15T10:30:00Z"
              },
              "new_credential": {
                "type": "string",
                "description": "The newly generated credential value (only shown once)",
                "example": "pk_live_abc123..."
              },
              "rollback_expires_at": {
                "type": "string",
                "description": "When the rollback token expires",
                "example": "2024-01-14T10:30:00Z"
              },
              "rollback_token": {
                "type": "string",
                "description": "Token to use if you need to rollback to the previous credential",
                "example": "rollback_token_xyz..."
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for rotating API key",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "bad_request",
                  "rate_limit_exceeded"
                ],
                "example": "bad_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "429": {
          "description": "Rate limit exceeded",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": false
      },
      "agent_notes": "Security-critical admin operation that issues a new API key for the partner app.\nRequires a `confirmation_token` (a deliberate two-step guard — obtain it from the\npreceding confirmation step, do not fabricate it). Use `grace_period_hours` to\nkeep the old key valid during cutover; with a zero/omitted grace period the old\nkey stops working immediately, so schedule this to avoid breaking live\nintegrations. The response contains the new secret key: treat it as a secret —\nnever log it, never echo it into tool arguments, and store it once. This is\ndistinct from a rollback; rotating forward does not by itself let you revert, so\nconfirm the new key works before discarding the old one.\n\n\u003c!-- POST /v1/partner/admin/credentials/api-key/rotate --\u003e\n\u003c!-- Rotate API key --\u003e"
    },
    "rotateClientSecret": {
      "id": "rotateClientSecret",
      "method": "POST",
      "path": "/v1/partner/admin/credentials/client-secret/rotate",
      "summary": "Rotate client secret",
      "description": "Rotates the client secret with optional grace period",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Rotation request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "confirmation_token": {
              "type": "string",
              "example": "confirm-rotation-12345"
            },
            "grace_period_hours": {
              "type": "integer",
              "example": 48
            },
            "reason": {
              "type": "string",
              "example": "Scheduled rotation"
            }
          },
          "required": [
            "confirmation_token"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "credential_type": {
                "type": "string",
                "description": "Type of credential that was rotated (api_key or client_secret)",
                "example": "api_key"
              },
              "grace_period_ends_at": {
                "type": "string",
                "description": "When the grace period ends and old credential stops working",
                "example": "2024-01-15T10:30:00Z"
              },
              "new_credential": {
                "type": "string",
                "description": "The newly generated credential value (only shown once)",
                "example": "pk_live_abc123..."
              },
              "rollback_expires_at": {
                "type": "string",
                "description": "When the rollback token expires",
                "example": "2024-01-14T10:30:00Z"
              },
              "rollback_token": {
                "type": "string",
                "description": "Token to use if you need to rollback to the previous credential",
                "example": "rollback_token_xyz..."
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for rotating client secret",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "bad_request",
                  "rate_limit_exceeded"
                ],
                "example": "bad_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "429": {
          "description": "Rate limit exceeded",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key), security-critical: issues a new client secret for the\npartner OAuth app. Use the optional grace period to keep the old secret\nvalid during cutover; with no grace period the old secret stops working\nimmediately, which can break live OAuth exchanges. The response contains the\nnew secret exactly once — store it securely and never log or echo it. Rate-\nlimited (429). Not idempotent beyond the optional `Idempotency-Key` guard."
    },
    "rotateWebhookSecret": {
      "id": "rotateWebhookSecret",
      "method": "POST",
      "path": "/v1/partner/admin/credentials/webhook-secret/rotate",
      "summary": "Rotate webhook secret",
      "description": "Rotates the webhook secret with optional grace period",
      "auth": {
        "surface": "admin",
        "headers": [
          "X-API-Key",
          "X-Client-ID"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Rotation request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "confirmation_token": {
              "type": "string",
              "example": "confirm-rotation-12345"
            },
            "grace_period_hours": {
              "type": "integer",
              "example": 48
            },
            "reason": {
              "type": "string",
              "example": "Scheduled rotation"
            }
          },
          "required": [
            "confirmation_token"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "credential_type": {
                "type": "string",
                "description": "Type of credential that was rotated (api_key or client_secret)",
                "example": "api_key"
              },
              "grace_period_ends_at": {
                "type": "string",
                "description": "When the grace period ends and old credential stops working",
                "example": "2024-01-15T10:30:00Z"
              },
              "new_credential": {
                "type": "string",
                "description": "The newly generated credential value (only shown once)",
                "example": "pk_live_abc123..."
              },
              "rollback_expires_at": {
                "type": "string",
                "description": "When the rollback token expires",
                "example": "2024-01-14T10:30:00Z"
              },
              "rollback_token": {
                "type": "string",
                "description": "Token to use if you need to rollback to the previous credential",
                "example": "rollback_token_xyz..."
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for rotating webhook secret",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "bad_request"
                ],
                "example": "bad_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "429": {
          "description": "Rate limit exceeded",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": false
      },
      "agent_notes": "Admin (API-key), security-critical: issues a new webhook signing secret used\nto verify inbound webhook signatures (HMAC-SHA256). Use the optional grace\nperiod so signatures from both old and new secrets validate during cutover;\nwithout it, verification against the old secret fails immediately and you\nmay drop legitimate deliveries. The new secret is returned once — store it\nsecurely, never log it. Rate-limited (429)."
    },
    "sendSessionMessage": {
      "id": "sendSessionMessage",
      "method": "PUT",
      "path": "/v1/partner/user/sessions/{id}",
      "summary": "Send a message to a session",
      "description": "Submits a new message to an existing chat session",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "chat:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Session ID",
            "type": "string"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Message request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "meeting_id": {
              "type": "string",
              "description": "Optional ID of the meeting to associate this session with (user must be a participant)",
              "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
            },
            "message": {
              "type": "string",
              "description": "User message to add to the conversation (1-10,000 characters)",
              "example": "Can you create action items from those decisions?"
            }
          },
          "required": [
            "message"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "turn": {
                "type": "object",
                "description": "The created user turn",
                "properties": {
                  "agent_metadata": {
                    "type": "object",
                    "description": "Agent execution metadata (present only for role=agent turns)",
                    "properties": {
                      "referenced_documents": {
                        "type": "array",
                        "description": "Context document IDs the agent referenced",
                        "items": {
                          "type": "string"
                        }
                      },
                      "token_usage": {
                        "type": "object",
                        "description": "Token usage statistics",
                        "properties": {
                          "completion_tokens": {
                            "type": "integer",
                            "description": "Number of output tokens",
                            "example": 200
                          },
                          "prompt_tokens": {
                            "type": "integer",
                            "description": "Number of input tokens",
                            "example": 150
                          },
                          "total_tokens": {
                            "type": "integer",
                            "description": "Total tokens used",
                            "example": 350
                          }
                        }
                      },
                      "tool_calls": {
                        "type": "array",
                        "description": "Tools the agent invoked during this turn",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Name of the tool",
                              "example": "search_meeting_notes"
                            },
                            "status": {
                              "type": "string",
                              "description": "Execution status",
                              "enum": [
                                "success",
                                "failure"
                              ],
                              "example": "success"
                            }
                          }
                        }
                      }
                    }
                  },
                  "completed_at": {
                    "type": "string",
                    "description": "Timestamp when the turn finished processing (null if not completed)",
                    "example": "2026-03-16T14:30:15Z"
                  },
                  "content": {
                    "type": "string",
                    "description": "Message text content",
                    "example": "Summarize the key decisions from this meeting"
                  },
                  "created_at": {
                    "type": "string",
                    "description": "Timestamp when the turn was created/enqueued",
                    "example": "2026-03-16T14:30:00Z"
                  },
                  "error": {
                    "type": "object",
                    "description": "Error details when status=failed",
                    "properties": {
                      "code": {
                        "type": "string",
                        "description": "Error code",
                        "example": "agent_error"
                      },
                      "message": {
                        "type": "string",
                        "description": "Human-readable error message",
                        "example": "Agent processing failed"
                      }
                    }
                  },
                  "id": {
                    "type": "string",
                    "description": "Unique identifier for the turn (message ID)",
                    "example": "turn-uuid-1234"
                  },
                  "role": {
                    "type": "string",
                    "description": "Role of the message author: user or agent",
                    "enum": [
                      "user",
                      "agent"
                    ],
                    "example": "user"
                  },
                  "sequence_number": {
                    "type": "integer",
                    "description": "Sequence number in the conversation",
                    "example": 1
                  },
                  "session_id": {
                    "type": "string",
                    "description": "ID of the session this turn belongs to",
                    "example": "f7e6d5c4-b3a2-1098-7654-321fedcba098"
                  },
                  "status": {
                    "type": "string",
                    "description": "Turn processing status: queued, processing, completed, or failed",
                    "enum": [
                      "queued",
                      "processing",
                      "completed",
                      "failed"
                    ],
                    "example": "completed"
                  }
                }
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "402": {
          "description": "Plan upgrade required (Pro)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "current_plan": {
                "type": "string"
              },
              "feature": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "required_plan": {
                "type": "string"
              }
            }
          }
        },
        "404": {
          "description": "Session not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "Session not active",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "422": {
          "description": "Validation error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Submits the next user turn to an existing session (the `{id}` from\ncreateSession). The `message` body field is required; `meeting_id` optionally\nscopes the turn to a specific meeting's context. Like createSession, this is\nasynchronous: the 200 acknowledges receipt, but the agent's reply arrives later\nvia a `session.turn.completed` webhook — do NOT wait for or expect the reply in\nthe response body. Requires the `chat:write` scope. Avoid firing multiple turns\nin parallel on the same session; submit sequentially so the conversation stays\nordered.\n\n\u003c!-- PUT /v1/partner/user/sessions/{id} --\u003e\n\u003c!-- Send a message to a session --\u003e\n\u003c!-- scopes: chat:write --\u003e"
    },
    "triggerMeetingActionButton": {
      "id": "triggerMeetingActionButton",
      "method": "POST",
      "path": "/v1/partner/user/meetings/{id}/action-buttons/{button_id}/trigger",
      "summary": "Trigger action button",
      "description": "Fires an action button manually. This triggers a webhook to the partner's registered endpoint.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "button_id",
            "in": "path",
            "required": true,
            "description": "Action Button ID",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": false,
            "description": "Optional next step and result context",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "addressing_values": {
              "type": "object",
              "description": "AddressingValues are submitted form values for integration-mechanism action buttons\n(e.g. {\"object_type\":\"Account\",\"record_id\":\"0014X...\"} for Salesforce). Persisted\nverbatim on the action_button_invocation row.",
              "additionalProperties": {
                "type": "string"
              }
            },
            "content": {
              "type": "string",
              "description": "Content is the (possibly user-edited) draft body submitted at trigger time.\nWhen provided alongside ResultID and the body differs from the stored result,\na new next_step_execution_log + next_step_result pair is persisted with\nexecution_mode=MANUAL_EDIT before delivery.",
              "example": "Updated meeting summary..."
            },
            "content_format": {
              "type": "string",
              "description": "ContentFormat is the format of Content (e.g. \"markdown\"). Defaults to markdown\nwhen omitted. Ignored when Content is nil.",
              "example": "markdown"
            },
            "next_step_id": {
              "type": "string",
              "description": "Next step ID if triggered in the context of a next step",
              "example": "123e4567-e89b-12d3-a456-426614174000"
            },
            "result_id": {
              "type": "string",
              "description": "Result ID if triggered in the context of a next step result",
              "example": "123e4567-e89b-12d3-a456-426614174000"
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "Action button triggered successfully",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "invocation_id": {
                "type": "string",
                "description": "InvocationID is the persisted action_button_invocation row ID created at trigger time.",
                "example": "019ddf5f-2e7c-7e0e-8f9e-12d3a4567ab0"
              },
              "message": {
                "type": "string",
                "description": "Success message",
                "example": "Action button triggered successfully"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting or action button not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "OAuth user operation (`meetings:write`) that triggers an action button\n(`button_id`) on a meeting (`id`). The effect depends on the button; work\nmay complete asynchronously and surface later via meeting updates or\nwebhooks rather than in the response. Not idempotent — triggering twice\nfires the action twice."
    },
    "uninstallToolkit": {
      "id": "uninstallToolkit",
      "method": "DELETE",
      "path": "/v1/partner/user/workspaces/{workspace_id}/toolkits/{toolkit_id}",
      "summary": "Uninstall toolkit",
      "description": "Removes a toolkit installation from the authenticated user's workspace",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "toolkits:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "description": "Workspace ID",
            "type": "string"
          },
          {
            "name": "toolkit_id",
            "in": "path",
            "required": true,
            "description": "Toolkit ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Toolkit uninstalled successfully",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Toolkit not found or not installed",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`toolkits:write`) that uninstalls a toolkit\n(`toolkit_id`) from a workspace (`workspace_id`). Destructive with respect\nto that workspace's toolkit availability; uninstalling when not installed is\na safe no-op. Effects may propagate asynchronously."
    },
    "unlinkCalendarEvent": {
      "id": "unlinkCalendarEvent",
      "method": "DELETE",
      "path": "/v1/partner/user/meetings/{id}/calendar/unlink",
      "summary": "Unlink calendar event from meeting",
      "description": "Remove the link between a calendar event and a specific meeting",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "calendar:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Meeting unlinked from calendar event successfully",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "message": {
                "type": "string",
                "description": "Human-readable message describing the result",
                "example": "Meeting linked to calendar event successfully"
              },
              "success": {
                "type": "boolean",
                "description": "Whether the operation was successful",
                "example": true
              }
            }
          }
        },
        "400": {
          "description": "Invalid meeting ID format",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Caller is not the meeting owner or an editor",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": true,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`calendar:write`) that removes the calendar-event link\nfrom a meeting (`id`). Returns success; unlinking when nothing is linked is\na safe no-op. Does not delete the meeting or the calendar event, only the\nassociation."
    },
    "updateActionItem": {
      "id": "updateActionItem",
      "method": "PUT",
      "path": "/v1/partner/user/action-items/{id}",
      "summary": "Update action item",
      "description": "Updates an existing action item if accessible to the authenticated user",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "action-items:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Action Item ID",
            "type": "string"
          },
          {
            "name": "action_item",
            "in": "body",
            "required": true,
            "description": "Action item update data",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "description": {
              "type": "string",
              "example": "Updated description"
            },
            "due_date": {
              "type": "string",
              "description": "YYYY-MM-DD format",
              "example": "2023-01-08"
            },
            "is_completed": {
              "type": "boolean",
              "example": true
            },
            "partner_context": {
              "type": "object",
              "additionalProperties": {}
            },
            "status": {
              "type": "string",
              "enum": [
                "needs_review",
                "accepted",
                "in_progress",
                "blocked",
                "completed",
                "cancelled"
              ],
              "example": "needs_review"
            },
            "title": {
              "type": "string",
              "example": "Follow up with client"
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "assigned_to_user_id": {
                "type": "string",
                "description": "ID of the user assigned to this action item",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "completed_at": {
                "type": "string",
                "description": "Timestamp when the action item was completed",
                "example": "2023-01-08T18:00:00-07:00"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the action item was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "description": "Detailed description of the action item",
                "example": "Follow up with client about proposal"
              },
              "due_date": {
                "type": "string",
                "description": "Due date in YYYY-MM-DD format",
                "example": "2023-01-08"
              },
              "has_partner_assignment": {
                "type": "boolean",
                "description": "Whether this action item was assigned via partner automation",
                "example": true
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the action item",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "is_completed": {
                "type": "boolean",
                "description": "Whether the action item has been completed",
                "example": false
              },
              "meeting_id": {
                "type": "string",
                "description": "ID of the meeting this action item belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "partner_context": {
                "type": "object",
                "description": "Partner-specific context data stored with the action item",
                "additionalProperties": {}
              },
              "status": {
                "type": "string",
                "description": "Current status (needs_review, accepted, in_progress, blocked, completed, cancelled)",
                "example": "accepted"
              },
              "title": {
                "type": "string",
                "description": "Title of the action item",
                "example": "Client follow-up call"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the action item was last updated",
                "example": "2023-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for updating an action item",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_action_item_id",
                  "invalid_request",
                  "invalid_due_date"
                ],
                "example": "invalid_action_item_id"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid action item ID format"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Action item not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`action-items:write`) full update (PUT) of an action\nitem by `id`. Send the complete desired state — omitted fields are\noverwritten, not merged. Idempotent: re-sending the same body converges to\nthe same result."
    },
    "updateMeeting": {
      "id": "updateMeeting",
      "method": "PATCH",
      "path": "/v1/partner/user/meetings/{id}",
      "summary": "Update meeting",
      "description": "Updates an existing meeting if accessible to the authenticated partner user",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "meeting",
            "in": "body",
            "required": true,
            "description": "Meeting update data",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "detail_level": {
              "type": "string",
              "enum": [
                "BULLET_POINTS",
                "STANDARD",
                "VERBATIM"
              ],
              "example": "STANDARD"
            },
            "end_time": {
              "type": "string",
              "example": "2023-01-01T11:00:00Z"
            },
            "start_time": {
              "type": "string",
              "example": "2023-01-01T10:00:00Z"
            },
            "template_id": {
              "type": "string",
              "example": "123e4567-e89b-12d3-a456-426614174004"
            },
            "title": {
              "type": "string",
              "example": "Updated Team Sync"
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "calendar_event_id": {
                "type": "string",
                "description": "ID of the linked calendar event, if any",
                "example": "123e4567-e89b-12d3-a456-426614174006"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the meeting was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "created_by_user_id": {
                "type": "string",
                "description": "ID of the user who created the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "end_time": {
                "type": "string",
                "description": "Scheduled end time in RFC3339 format",
                "example": "2023-01-01T11:00:00-07:00"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "redirect_to_meeting_id": {
                "type": "string",
                "description": "ID of the meeting to redirect to if this meeting was merged",
                "example": "123e4567-e89b-12d3-a456-426614174007"
              },
              "start_time": {
                "type": "string",
                "description": "Scheduled start time in RFC3339 format",
                "example": "2023-01-01T10:00:00-07:00"
              },
              "status": {
                "type": "string",
                "description": "Current status of the meeting",
                "enum": [
                  "draft",
                  "scheduled",
                  "in_progress",
                  "ended",
                  "completed"
                ],
                "example": "completed"
              },
              "summary_notes": {
                "type": "string",
                "description": "AI-generated summary notes from the meeting",
                "example": "Post-Meeting Summarization ..."
              },
              "title": {
                "type": "string",
                "description": "Title of the meeting",
                "example": "Weekly Team Sync"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the meeting was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "workspace_id": {
                "type": "string",
                "description": "ID of the workspace this meeting belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Bad request error for updating a meeting",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type",
                "enum": [
                  "invalid_meeting_id",
                  "invalid_request",
                  "invalid_start_time",
                  "invalid_end_time",
                  "invalid_time_range"
                ],
                "example": "invalid_meeting_id"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid meeting ID format"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "OAuth user operation (`meetings:write`) partial update (PATCH) of a meeting\nby `id` — only fields present in the body change. Applies to mutable meeting\nfields (e.g. title, times); server-managed fields such as\ntranscript/recording state are not settable here."
    },
    "updateMeetingAgendaItem": {
      "id": "updateMeetingAgendaItem",
      "method": "PUT",
      "path": "/v1/partner/user/meetings/{id}/agenda-items/{item_id}",
      "summary": "Update agenda item",
      "description": "Updates an existing agenda item. User must be a participant of the meeting.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-provided idempotency key",
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "description": "Agenda Item ID",
            "type": "string"
          },
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Updated agenda item details",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "description": {
              "type": "string",
              "example": "Updated description"
            },
            "item_type": {
              "type": "string",
              "enum": [
                "DISCUSSION",
                "DECISION",
                "ACTION_ITEM",
                "INFORMATION"
              ],
              "example": "DISCUSSION"
            },
            "presenters": {
              "type": "array",
              "example": [
                "123e4567-e89b-12d3-a456-426614174003"
              ],
              "items": {
                "type": "string"
              }
            },
            "restricted_to_leads": {
              "type": "boolean",
              "example": true
            },
            "status": {
              "type": "string",
              "enum": [
                "pending",
                "in_progress",
                "completed"
              ],
              "example": "in_progress"
            },
            "talking_points": {
              "type": "string",
              "example": "Updated private notes"
            },
            "time_allocation_minutes": {
              "type": "number",
              "example": 20
            },
            "title": {
              "type": "string",
              "example": "Updated Discussion"
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "Agenda item updated successfully",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "description": "Timestamp when the agenda item was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "description": "Detailed description of the agenda item",
                "example": "Review and discuss Q1 objectives"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the agenda item",
                "example": "123e4567-e89b-12d3-a456-426614174005"
              },
              "item_type": {
                "type": "string",
                "description": "Type of agenda item (DISCUSSION, DECISION, ACTION_ITEM, INFORMATION)",
                "example": "DISCUSSION"
              },
              "meeting_id": {
                "type": "string",
                "description": "ID of the meeting this agenda item belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "presenters": {
                "type": "array",
                "description": "User IDs of the presenters for this agenda item",
                "example": [
                  "123e4567-e89b-12d3-a456-426614174003"
                ],
                "items": {
                  "type": "string"
                }
              },
              "restricted_to_leads": {
                "type": "boolean",
                "description": "Whether this item is restricted to meeting leads only",
                "example": false
              },
              "sequence": {
                "type": "string",
                "description": "Order sequence of the agenda item",
                "example": "1"
              },
              "status": {
                "type": "string",
                "description": "Current status (pending, in_progress, completed)",
                "example": "pending"
              },
              "talking_points": {
                "type": "string",
                "description": "Private talking points for the authenticated user on this agenda item. Only returned if the user has talking points.",
                "example": "Key points to discuss: budget allocation, timeline"
              },
              "time_allocation_minutes": {
                "type": "number",
                "description": "Allocated time for this agenda item in minutes",
                "example": 15
              },
              "title": {
                "type": "string",
                "description": "Title of the agenda item",
                "example": "Q1 Planning Discussion"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the agenda item was last updated",
                "example": "2023-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "User is not a participant of the meeting",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Agenda item not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "OAuth user operation (`meetings:write`) full update (PUT) of an agenda item\n(`item_id`) on a meeting (`id`). Send the complete item state; omitted\nfields are overwritten. Idempotent for identical bodies."
    },
    "uploadMeetingContext": {
      "id": "uploadMeetingContext",
      "method": "POST",
      "path": "/v1/partner/user/meetings/{id}/context",
      "summary": "Upload meeting context",
      "description": "Uploads a partner-scoped meeting context for a meeting using multipart/form-data.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "context:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "file",
            "in": "formData",
            "required": true,
            "description": "Context file",
            "type": "file"
          },
          {
            "name": "title",
            "in": "formData",
            "required": false,
            "description": "Context title",
            "type": "string"
          },
          {
            "name": "context_type",
            "in": "formData",
            "required": false,
            "description": "Logical context type",
            "type": "string"
          },
          {
            "name": "source_format",
            "in": "formData",
            "required": true,
            "description": "Source format (json,csv,tsv,xml,html,yaml,md,txt)",
            "type": "string"
          }
        ]
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "context_type": {
                "type": "string"
              },
              "created_at": {
                "type": "string"
              },
              "created_by_user_id": {
                "type": "string"
              },
              "deleted_at": {
                "type": "string"
              },
              "file_status": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "meeting_id": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              },
              "partner_app_id": {
                "type": "string"
              },
              "platform_name": {
                "type": "string"
              },
              "source_format": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "updated_at": {
                "type": "string"
              },
              "workspace_id": {
                "type": "string"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "OAuth user operation (`context:write`) that attaches a context item\n(document/text) to a meeting (`id`). Returns the created context id.\nUploaded content may be processed asynchronously before it is usable by AI\nfeatures. Not idempotent — each call adds another context item; size/type\nlimits apply.",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "verifyPartnerAuth": {
      "id": "verifyPartnerAuth",
      "method": "POST",
      "path": "/auth/verify",
      "summary": "Verify Partner Passwordless Authentication",
      "description": "Verifies OTP code for partner OAuth flow with client-specific SECRET_HASH",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "request",
            "in": "body",
            "required": true,
            "description": "Partner authentication verification request",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "client_id": {
              "type": "string",
              "example": "partner_abc123"
            },
            "code": {
              "type": "string",
              "example": "123456"
            },
            "email": {
              "type": "string",
              "example": "user@example.com"
            },
            "session": {
              "type": "string",
              "example": "AYABeExample..."
            }
          },
          "required": [
            "client_id",
            "code",
            "email",
            "session"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "access_token": {
                "type": "string",
                "example": "eyJraWQiOiJrZXkxIiwiYWxnIjoiUlMyNTYifQ..."
              },
              "expires_in": {
                "type": "integer",
                "example": 3600
              },
              "id_token": {
                "type": "string",
                "example": "eyJraWQiOiJrZXkxIiwiYWxnIjoiUlMyNTYifQ..."
              },
              "message": {
                "type": "string",
                "example": "Authentication successful"
              },
              "redirect": {
                "type": "string",
                "example": "https://app.example.com/dashboard"
              },
              "refresh_token": {
                "type": "string",
                "example": "eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIn0..."
              },
              "success": {
                "type": "boolean",
                "example": true
              }
            }
          }
        },
        "400": {
          "description": "Bad Request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across all API endpoints. All error responses follow this consistent structure for predictable error handling.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "enum": [
                  "not_found",
                  "note_not_found",
                  "bad_request",
                  "validation_error",
                  "next_step_prompt_rejected",
                  "next_step_no_meeting_content",
                  "unauthorized",
                  "forbidden",
                  "conflict",
                  "resource_already_exists",
                  "too_many_requests",
                  "internal_server_error",
                  "toolkit_slug_collision",
                  "manifest_validation_failed",
                  "toolkit_requires_annual"
                ],
                "example": "not_found"
              },
              "message": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "The requested resource could not be found"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "readOnly": false,
        "destructive": false,
        "idempotent": false
      },
      "agent_notes": "Public endpoint that completes passwordless authentication by verifying the\nOTP code issued by `initiatePartnerAuth` for the same client. A correct code\nadvances the OAuth flow; an incorrect/expired code returns 401. Codes are\nsingle-use and time-limited, so do not retry a consumed code — re-initiate\ninstead.",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "verifySsoCallback": {
      "id": "verifySsoCallback",
      "method": "GET",
      "path": "/v1/partner/sso/callback",
      "summary": "Handle partner SSO callback",
      "description": "Handles the OIDC callback from the partner's identity provider. Exchanges the authorization code for tokens, validates the ID token, and provisions or authenticates the user.",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "required": false,
            "description": "Authorization code from IdP",
            "type": "string"
          },
          {
            "name": "state",
            "in": "query",
            "required": true,
            "description": "State parameter for session validation",
            "type": "string"
          },
          {
            "name": "error",
            "in": "query",
            "required": false,
            "description": "Error code if authentication failed",
            "type": "string"
          },
          {
            "name": "error_description",
            "in": "query",
            "required": false,
            "description": "Error description if authentication failed",
            "type": "string"
          }
        ]
      },
      "responses": {
        "302": {
          "description": "Redirect with error query params on authentication failure",
          "has_schema": true,
          "schema": {
            "type": "string"
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        }
      },
      "mcp": {
        "readOnly": true,
        "destructive": false,
        "idempotent": true
      },
      "agent_notes": "Public SSO callback endpoint the partner's IdP redirects to after the user\nauthenticates. Contio validates the IdP response and advances the SSO\nsession. This is a browser redirect step in the `initiateSso` flow, not a\nJSON API an agent calls directly; the resulting session is polled via\n`getSsoSession`."
    }
  }
}
