{
  "openapi": "3.0.3",
  "info": {
    "title": "Triple Session Public API",
    "version": "1.0.0",
    "license": {
      "name": "Proprietary",
      "url": "https://triplesession.com/terms-of-service"
    },
    "description": "Public API v1 exposes AI Coach report data from the legacy Pages API.\nWorkspace report endpoints authenticate with a workspace public API key sent as a bearer token.\n"
  },
  "servers": [
    {
      "url": "https://app.triplesession.com/api/public/ai-coach",
      "description": "Production"
    }
  ],
  "tags": [
    {
      "name": "Reports",
      "description": "AI Coach report data and artifacts."
    }
  ],
  "paths": {
    "/workspaces/{workspaceId}/reports": {
      "get": {
        "operationId": "listReports",
        "tags": ["Reports"],
        "summary": "List reports",
        "description": "Lists completed AI Coach reports visible to a workspace-scoped API key.",
        "security": [
          {
            "workspaceApiKey": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WorkspaceId"
          },
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/ReportsLimit"
          },
          {
            "$ref": "#/components/parameters/Search"
          },
          {
            "$ref": "#/components/parameters/ScorecardIdQuery"
          }
        ],
        "responses": {
          "200": {
            "description": "Reports visible to the workspace API key.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "X-RateLimit-Active-Window": {
                "$ref": "#/components/headers/XRateLimitActiveWindow"
              },
              "X-RateLimit-Minute-Limit": {
                "$ref": "#/components/headers/XRateLimitMinuteLimit"
              },
              "X-RateLimit-Minute-Remaining": {
                "$ref": "#/components/headers/XRateLimitMinuteRemaining"
              },
              "X-RateLimit-Minute-Reset": {
                "$ref": "#/components/headers/XRateLimitMinuteReset"
              },
              "X-RateLimit-Hour-Limit": {
                "$ref": "#/components/headers/XRateLimitHourLimit"
              },
              "X-RateLimit-Hour-Remaining": {
                "$ref": "#/components/headers/XRateLimitHourRemaining"
              },
              "X-RateLimit-Hour-Reset": {
                "$ref": "#/components/headers/XRateLimitHourReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportsListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid search parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportsListErrorResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportsListErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/workspaces/{workspaceId}/reports/{reportId}": {
      "get": {
        "operationId": "getReport",
        "tags": ["Reports"],
        "summary": "Get a report",
        "description": "Gets one AI Coach report after verifying the report belongs to the workspace.",
        "security": [
          {
            "workspaceApiKey": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WorkspaceId"
          },
          {
            "$ref": "#/components/parameters/ReportId"
          }
        ],
        "responses": {
          "200": {
            "description": "Report details.",
            "headers": {
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "X-RateLimit-Active-Window": {
                "$ref": "#/components/headers/XRateLimitActiveWindow"
              },
              "X-RateLimit-Minute-Limit": {
                "$ref": "#/components/headers/XRateLimitMinuteLimit"
              },
              "X-RateLimit-Minute-Remaining": {
                "$ref": "#/components/headers/XRateLimitMinuteRemaining"
              },
              "X-RateLimit-Minute-Reset": {
                "$ref": "#/components/headers/XRateLimitMinuteReset"
              },
              "X-RateLimit-Hour-Limit": {
                "$ref": "#/components/headers/XRateLimitHourLimit"
              },
              "X-RateLimit-Hour-Remaining": {
                "$ref": "#/components/headers/XRateLimitHourRemaining"
              },
              "X-RateLimit-Hour-Reset": {
                "$ref": "#/components/headers/XRateLimitHourReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/ReportNotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/workspaces/{workspaceId}/reports/{reportId}/transcript": {
      "get": {
        "operationId": "getReportTranscript",
        "tags": ["Reports"],
        "summary": "Get a report transcript",
        "description": "Gets the transcript text for one AI Coach report.",
        "security": [
          {
            "workspaceApiKey": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WorkspaceId"
          },
          {
            "$ref": "#/components/parameters/ReportId"
          }
        ],
        "responses": {
          "200": {
            "description": "Report transcript.",
            "headers": {
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "X-RateLimit-Active-Window": {
                "$ref": "#/components/headers/XRateLimitActiveWindow"
              },
              "X-RateLimit-Minute-Limit": {
                "$ref": "#/components/headers/XRateLimitMinuteLimit"
              },
              "X-RateLimit-Minute-Remaining": {
                "$ref": "#/components/headers/XRateLimitMinuteRemaining"
              },
              "X-RateLimit-Minute-Reset": {
                "$ref": "#/components/headers/XRateLimitMinuteReset"
              },
              "X-RateLimit-Hour-Limit": {
                "$ref": "#/components/headers/XRateLimitHourLimit"
              },
              "X-RateLimit-Hour-Remaining": {
                "$ref": "#/components/headers/XRateLimitHourRemaining"
              },
              "X-RateLimit-Hour-Reset": {
                "$ref": "#/components/headers/XRateLimitHourReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TranscriptResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/ReportNotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/workspaces/{workspaceId}/reports/{reportId}/scorecard": {
      "get": {
        "operationId": "getReportScorecard",
        "tags": ["Reports"],
        "summary": "Get a report scorecard",
        "description": "Gets the scored scorecard and coaching plan for one AI Coach report.",
        "security": [
          {
            "workspaceApiKey": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WorkspaceId"
          },
          {
            "$ref": "#/components/parameters/ReportId"
          }
        ],
        "responses": {
          "200": {
            "description": "Scored scorecard and coaching plan.",
            "headers": {
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "X-RateLimit-Active-Window": {
                "$ref": "#/components/headers/XRateLimitActiveWindow"
              },
              "X-RateLimit-Minute-Limit": {
                "$ref": "#/components/headers/XRateLimitMinuteLimit"
              },
              "X-RateLimit-Minute-Remaining": {
                "$ref": "#/components/headers/XRateLimitMinuteRemaining"
              },
              "X-RateLimit-Minute-Reset": {
                "$ref": "#/components/headers/XRateLimitMinuteReset"
              },
              "X-RateLimit-Hour-Limit": {
                "$ref": "#/components/headers/XRateLimitHourLimit"
              },
              "X-RateLimit-Hour-Remaining": {
                "$ref": "#/components/headers/XRateLimitHourRemaining"
              },
              "X-RateLimit-Hour-Reset": {
                "$ref": "#/components/headers/XRateLimitHourReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportScorecardResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/ReportNotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/workspaces/{workspaceId}/reports/{reportId}/deal-insights": {
      "get": {
        "operationId": "getReportDealInsights",
        "tags": ["Reports"],
        "summary": "Get report deal insights",
        "description": "Gets deal insight output for one AI Coach report.",
        "security": [
          {
            "workspaceApiKey": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WorkspaceId"
          },
          {
            "$ref": "#/components/parameters/ReportId"
          }
        ],
        "responses": {
          "200": {
            "description": "Deal insights for the report.",
            "headers": {
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "X-RateLimit-Active-Window": {
                "$ref": "#/components/headers/XRateLimitActiveWindow"
              },
              "X-RateLimit-Minute-Limit": {
                "$ref": "#/components/headers/XRateLimitMinuteLimit"
              },
              "X-RateLimit-Minute-Remaining": {
                "$ref": "#/components/headers/XRateLimitMinuteRemaining"
              },
              "X-RateLimit-Minute-Reset": {
                "$ref": "#/components/headers/XRateLimitMinuteReset"
              },
              "X-RateLimit-Hour-Limit": {
                "$ref": "#/components/headers/XRateLimitHourLimit"
              },
              "X-RateLimit-Hour-Remaining": {
                "$ref": "#/components/headers/XRateLimitHourRemaining"
              },
              "X-RateLimit-Hour-Reset": {
                "$ref": "#/components/headers/XRateLimitHourReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DealInsightsResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/ReportNotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "workspaceApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Workspace API key",
        "description": "Use the public API key generated for a workspace."
      }
    },
    "parameters": {
      "WorkspaceId": {
        "name": "workspaceId",
        "in": "path",
        "required": true,
        "description": "Workspace ID.",
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "ReportId": {
        "name": "reportId",
        "in": "path",
        "required": true,
        "description": "Report ID.",
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "Page": {
        "name": "page",
        "in": "query",
        "required": false,
        "description": "Page number. Missing, invalid, or values below 1 are treated as page 1.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "default": 1
        }
      },
      "ReportsLimit": {
        "name": "limit",
        "in": "query",
        "required": false,
        "description": "Number of reports to return. Values are clamped between 1 and 50.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 50,
          "default": 50
        }
      },
      "Search": {
        "name": "search",
        "in": "query",
        "required": false,
        "description": "Search text used to filter reports by name, evaluatee, attendee email, or CRM deal name. Values over 100 characters are rejected.",
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        }
      },
      "ScorecardIdQuery": {
        "name": "scorecardId",
        "in": "query",
        "required": false,
        "description": "Filter reports by scorecard ID.",
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      }
    },
    "headers": {
      "CacheControl": {
        "description": "Cache policy applied by the legacy report detail endpoints.",
        "schema": {
          "type": "string"
        }
      },
      "XRateLimitLimit": {
        "description": "Limit for the active rate limit window.",
        "schema": {
          "type": "integer"
        }
      },
      "XRateLimitRemaining": {
        "description": "Requests remaining in the active rate limit window.",
        "schema": {
          "type": "integer"
        }
      },
      "XRateLimitReset": {
        "description": "Unix timestamp when the active rate limit window resets.",
        "schema": {
          "type": "integer"
        }
      },
      "XRateLimitActiveWindow": {
        "description": "Active rate limit window.",
        "schema": {
          "type": "string",
          "enum": ["minute", "hour"]
        }
      },
      "XRateLimitMinuteLimit": {
        "description": "Limit for the minute rate limit window.",
        "schema": {
          "type": "integer"
        }
      },
      "XRateLimitMinuteRemaining": {
        "description": "Requests remaining in the minute rate limit window.",
        "schema": {
          "type": "integer"
        }
      },
      "XRateLimitMinuteReset": {
        "description": "Unix timestamp when the minute rate limit window resets.",
        "schema": {
          "type": "integer"
        }
      },
      "XRateLimitHourLimit": {
        "description": "Limit for the hour rate limit window.",
        "schema": {
          "type": "integer"
        }
      },
      "XRateLimitHourRemaining": {
        "description": "Requests remaining in the hour rate limit window.",
        "schema": {
          "type": "integer"
        }
      },
      "XRateLimitHourReset": {
        "description": "Unix timestamp when the hour rate limit window resets.",
        "schema": {
          "type": "integer"
        }
      },
      "RetryAfter": {
        "description": "Seconds until the request may be retried.",
        "schema": {
          "type": "integer"
        }
      }
    },
    "responses": {
      "Unauthorized": {
        "description": "Missing or invalid bearer authentication.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "Forbidden": {
        "description": "Missing, deprecated, or unauthorized API key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "ReportNotFound": {
        "description": "Requested report was not found or is outside the workspace.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "RateLimited": {
        "description": "Rate limit exceeded.",
        "headers": {
          "Retry-After": {
            "$ref": "#/components/headers/RetryAfter"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/XRateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/XRateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/XRateLimitReset"
          },
          "X-RateLimit-Active-Window": {
            "$ref": "#/components/headers/XRateLimitActiveWindow"
          },
          "X-RateLimit-Minute-Limit": {
            "$ref": "#/components/headers/XRateLimitMinuteLimit"
          },
          "X-RateLimit-Minute-Remaining": {
            "$ref": "#/components/headers/XRateLimitMinuteRemaining"
          },
          "X-RateLimit-Minute-Reset": {
            "$ref": "#/components/headers/XRateLimitMinuteReset"
          },
          "X-RateLimit-Hour-Limit": {
            "$ref": "#/components/headers/XRateLimitHourLimit"
          },
          "X-RateLimit-Hour-Remaining": {
            "$ref": "#/components/headers/XRateLimitHourRemaining"
          },
          "X-RateLimit-Hour-Reset": {
            "$ref": "#/components/headers/XRateLimitHourReset"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "InternalServerError": {
        "description": "Unexpected server error.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      }
    },
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "required": ["error"],
        "properties": {
          "error": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ReportsListErrorResponse": {
        "type": "object",
        "required": ["reports", "error"],
        "properties": {
          "reports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Report"
            }
          },
          "error": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ReportEvaluateeUser": {
        "type": "object",
        "required": ["name", "first_name", "email"],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "first_name": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "avatar_url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReportShare": {
        "type": "object",
        "required": ["id"],
        "properties": {
          "id": {
            "type": "string"
          },
          "deactivated_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReportCrmDeal": {
        "type": "object",
        "required": ["id", "name", "url"],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Report": {
        "type": "object",
        "required": [
          "id",
          "name",
          "owner_id",
          "score",
          "score_breakdown",
          "scorecard",
          "scorecard_id",
          "created_at",
          "duration_in_minutes",
          "source",
          "status",
          "evaluatee_user"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "owner_id": {
            "type": "string"
          },
          "score": {
            "type": "number"
          },
          "score_breakdown": {
            "type": "object",
            "additionalProperties": {
              "type": "number"
            }
          },
          "scorecard": {
            "type": "string"
          },
          "scorecard_id": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "duration_in_minutes": {
            "type": "number",
            "nullable": true
          },
          "source": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "evaluatee_user": {
            "$ref": "#/components/schemas/ReportEvaluateeUser"
          },
          "share": {
            "$ref": "#/components/schemas/ReportShare"
          },
          "participants": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "attendees": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "crm_deals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportCrmDeal"
            }
          }
        },
        "additionalProperties": false
      },
      "ReportsListResponse": {
        "type": "object",
        "required": ["reports", "page", "total_count"],
        "properties": {
          "reports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Report"
            }
          },
          "page": {
            "type": "integer",
            "minimum": 1
          },
          "total_count": {
            "type": "integer",
            "minimum": 0
          }
        },
        "additionalProperties": false
      },
      "ReportResponse": {
        "type": "object",
        "required": ["report"],
        "properties": {
          "report": {
            "$ref": "#/components/schemas/Report"
          }
        },
        "additionalProperties": false
      },
      "TranscriptResponse": {
        "type": "object",
        "required": ["transcript", "isFormatSupported"],
        "properties": {
          "transcript": {
            "type": "string"
          },
          "isFormatSupported": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ScorecardCriterion": {
        "type": "object",
        "required": ["id", "name", "score", "comment"],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "score": {
            "type": "string",
            "enum": ["yes", "no", "partial", "skipped"]
          },
          "comment": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ScorecardSection": {
        "type": "object",
        "required": ["name", "criteria"],
        "properties": {
          "name": {
            "type": "string"
          },
          "criteria": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScorecardCriterion"
            }
          }
        },
        "additionalProperties": false
      },
      "ReportScorecard": {
        "type": "object",
        "required": ["name", "sections"],
        "properties": {
          "name": {
            "type": "string"
          },
          "sections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScorecardSection"
            }
          }
        },
        "additionalProperties": false
      },
      "CoachingFocusArea": {
        "type": "object",
        "required": [
          "biggest_improvement_opportunity",
          "recommendation",
          "try_this",
          "question_suggestions"
        ],
        "properties": {
          "biggest_improvement_opportunity": {
            "type": "string"
          },
          "recommendation": {
            "type": "string"
          },
          "try_this": {
            "type": "string"
          },
          "question_suggestions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "CoachingItem": {
        "type": "object",
        "required": ["name", "comment"],
        "properties": {
          "name": {
            "type": "string"
          },
          "comment": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "CoachingPlan": {
        "type": "object",
        "required": ["focus_area", "strengths", "areas_for_improvement"],
        "properties": {
          "focus_area": {
            "$ref": "#/components/schemas/CoachingFocusArea"
          },
          "strengths": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CoachingItem"
            }
          },
          "areas_for_improvement": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CoachingItem"
            }
          }
        },
        "additionalProperties": false
      },
      "ReportScorecardResponse": {
        "type": "object",
        "required": ["scorecard", "coaching_plan"],
        "properties": {
          "scorecard": {
            "$ref": "#/components/schemas/ReportScorecard"
          },
          "coaching_plan": {
            "$ref": "#/components/schemas/CoachingPlan"
          }
        },
        "additionalProperties": false
      },
      "DealInsightValue": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ]
      },
      "DealInsightsResponse": {
        "type": "object",
        "required": ["evaluation_id", "link", "deal_insights"],
        "properties": {
          "evaluation_id": {
            "type": "string",
            "format": "uuid"
          },
          "link": {
            "type": "string",
            "format": "uri"
          },
          "deal_insights": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/DealInsightValue"
            }
          }
        },
        "additionalProperties": false
      }
    }
  }
}
