{
  "service": "chorus",
  "displayName": "Chorus",
  "categories": [
    "Communication",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Token",
      "placeholder": "abcdefghijklmnopqrstuvwxyz0123456789",
      "description": "Chorus API token sent as the raw Authorization header value. Generate it from Personal Settings in the Chorus application after your role has API access."
    }
  ],
  "homepageUrl": "https://www.chorus.ai",
  "actions": [
    {
      "id": "chorus.get_conversation",
      "service": "chorus",
      "name": "get_conversation",
      "description": "Get a specific Chorus conversation with optional populated fields.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Chorus conversation ID to retrieve."
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "account",
                "company_name",
                "_created_at",
                "_modified_at",
                "deal",
                "disposition",
                "language",
                "metrics",
                "meeting.id",
                "name",
                "owner",
                "owner.email",
                "participants",
                "private",
                "recording",
                "recording.audio_only",
                "recording.autojoin",
                "recording.autojoin_reason",
                "recording.clusters",
                "recording.duration",
                "recording.end_reason",
                "recording.recordable",
                "recording.schedule_end_time",
                "recording.schedule_start_time",
                "recording.start_time",
                "recording.thumbnails",
                "recording.trackers",
                "recording.utterances",
                "source",
                "status",
                "user_company_name"
              ],
              "description": "A Chorus conversation field to populate."
            },
            "description": "Chorus conversation fields to populate.",
            "minItems": 1
          },
          "forceRegeneration": {
            "type": "boolean",
            "description": "Whether Chorus should regenerate the conversation from latest data."
          },
          "skipSummaryGeneration": {
            "type": "boolean",
            "description": "Whether Chorus should skip summary generation."
          },
          "includeMeetingMetadata": {
            "type": "boolean",
            "description": "Whether Chorus should include meeting metadata such as provider calendar ID and meeting URL."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input for getting a Chorus conversation."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "conversation": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Chorus resource ID."
              },
              "type": {
                "type": "string",
                "description": "The Chorus resource type."
              },
              "attributes": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The Chorus resource attributes."
              }
            },
            "additionalProperties": true,
            "description": "A Chorus JSON:API resource."
          }
        },
        "additionalProperties": false,
        "description": "The Chorus conversation response."
      }
    },
    {
      "id": "chorus.get_current_user",
      "service": "chorus",
      "name": "get_current_user",
      "description": "Get details about the current Chorus API token user.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input is required for this Chorus action."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Chorus resource ID."
              },
              "type": {
                "type": "string",
                "description": "The Chorus resource type."
              },
              "attributes": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The Chorus resource attributes."
              }
            },
            "additionalProperties": true,
            "description": "A Chorus JSON:API resource."
          }
        },
        "additionalProperties": false,
        "description": "The current Chorus user response."
      }
    },
    {
      "id": "chorus.get_team",
      "service": "chorus",
      "name": "get_team",
      "description": "Get a specific Chorus team by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Chorus team ID."
          }
        },
        "additionalProperties": false,
        "description": "Input for getting a Chorus team."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "team": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Chorus resource ID."
              },
              "type": {
                "type": "string",
                "description": "The Chorus resource type."
              },
              "attributes": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The Chorus resource attributes."
              }
            },
            "additionalProperties": true,
            "description": "A Chorus JSON:API resource."
          }
        },
        "additionalProperties": false,
        "description": "The Chorus team response."
      }
    },
    {
      "id": "chorus.list_engagements",
      "service": "chorus",
      "name": "list_engagements",
      "description": "List Chorus engagements with documented v3 filters and continuation pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "compliance": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by Chorus call recording compliance flag."
          },
          "continuationKey": {
            "type": "string",
            "minLength": 1,
            "description": "The Chorus continuation_key returned by the previous page."
          },
          "dispositionConnected": {
            "type": "boolean",
            "description": "Filter by Chorus connected disposition."
          },
          "dispositionGatekeeper": {
            "type": "boolean",
            "description": "Filter by Chorus gatekeeper disposition."
          },
          "dispositionTree": {
            "type": "boolean",
            "description": "Filter by Chorus phone tree disposition."
          },
          "dispositionVoicemail": {
            "type": "boolean",
            "description": "Filter by Chorus voicemail disposition."
          },
          "engagementIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A Chorus string value."
            },
            "description": "One or more Chorus engagement IDs to retrieve.",
            "minItems": 1
          },
          "engagementType": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by Chorus engagement type."
          },
          "contentType": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by Chorus engagement content type."
          },
          "maxDate": {
            "type": "string",
            "description": "Only include engagements on or before this datetime.",
            "format": "date-time"
          },
          "maxDuration": {
            "type": "number",
            "description": "Only include engagements with duration at or below this number of seconds."
          },
          "minDate": {
            "type": "string",
            "description": "Only include engagements on or after this datetime.",
            "format": "date-time"
          },
          "minDuration": {
            "type": "number",
            "description": "Only include engagements with duration at or above this number of seconds."
          },
          "participantsEmail": {
            "type": "string",
            "description": "Filter by a participant email address.",
            "format": "email"
          },
          "teamIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "description": "A Chorus numeric ID."
            },
            "description": "One or more Chorus team IDs for engagement owners.",
            "minItems": 1
          },
          "userIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "description": "A Chorus numeric ID."
            },
            "description": "One or more Chorus user IDs for engagement owners.",
            "minItems": 1
          },
          "withTrackers": {
            "type": "boolean",
            "description": "Whether to return tracker information with engagements."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Chorus engagements."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "engagements": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "engagement_id": {
                  "type": "string",
                  "description": "The Chorus engagement ID."
                },
                "subject": {
                  "type": "string",
                  "description": "The engagement subject."
                },
                "user_id": {
                  "type": "integer",
                  "description": "The Chorus user ID of the engagement owner."
                },
                "user_email": {
                  "type": "string",
                  "description": "The email address of the engagement owner."
                },
                "user_name": {
                  "type": "string",
                  "description": "The name of the engagement owner."
                },
                "date_time": {
                  "type": "number",
                  "description": "The engagement start time as returned by Chorus."
                },
                "duration": {
                  "type": "number",
                  "description": "The engagement duration in seconds."
                },
                "participants": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "A Chorus engagement participant."
                  },
                  "description": "Participants included in the engagement."
                }
              },
              "additionalProperties": true,
              "description": "A Chorus engagement returned by the v3 engagements API."
            },
            "description": "The Chorus engagements returned by the API."
          },
          "continuationKey": {
            "anyOf": [
              {
                "type": "string",
                "description": "The continuation key for the next page, if present."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "The Chorus engagements response."
      }
    },
    {
      "id": "chorus.list_scorecards",
      "service": "chorus",
      "name": "list_scorecards",
      "description": "List Chorus scorecards with documented filters and page pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "recipientIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "description": "A Chorus numeric ID."
            },
            "description": "IDs of Chorus users who were scored.",
            "minItems": 1
          },
          "reviewerIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "description": "A Chorus numeric ID."
            },
            "description": "IDs of Chorus users who completed scorecards.",
            "minItems": 1
          },
          "initiativeId": {
            "type": "integer",
            "description": "The Chorus initiative ID that scorecards were completed against."
          },
          "submittedRange": {
            "type": "string",
            "minLength": 1,
            "description": "The submitted datetime range in Chorus format, such as 2021-01-01T00:00:00Z:2021-01-31T00:00:00Z."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of scorecards to return per page. Chorus allows 1 to 100."
          },
          "pageNumber": {
            "type": "integer",
            "minimum": 1,
            "description": "The one-indexed page of scorecards to return."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Chorus scorecards."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "scorecards": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Chorus resource ID."
                },
                "type": {
                  "type": "string",
                  "description": "The Chorus resource type."
                },
                "attributes": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The Chorus resource attributes."
                }
              },
              "additionalProperties": true,
              "description": "A Chorus JSON:API resource."
            },
            "description": "The Chorus scorecards returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "The Chorus scorecards response."
      }
    },
    {
      "id": "chorus.list_teams",
      "service": "chorus",
      "name": "list_teams",
      "description": "List Chorus teams visible to the connected API token user.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input is required for this Chorus action."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "teams": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Chorus resource ID."
                },
                "type": {
                  "type": "string",
                  "description": "The Chorus resource type."
                },
                "attributes": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The Chorus resource attributes."
                }
              },
              "additionalProperties": true,
              "description": "A Chorus JSON:API resource."
            },
            "description": "The Chorus teams returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "The Chorus teams response."
      }
    }
  ]
}
