Stella Connect (Medallia Agent Connect) Employees API

The Employees API from Stella Connect (Medallia Agent Connect) — 5 operation(s) for employees.

OpenAPI Specification

stellaconnect-employees-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Agent Connect Coaching Employees API
  description: Agent Connect API
  termsOfService: https://medallia.com/about/legal/terms/api
  version: 1.0.0
servers:
- url: https://{subdomain}.api.stellaconnect.net
  variables:
    subdomain:
      description: Subdomain for the Agent Connect API
      default: subdomain
security:
- ApiKeyInHeader: []
  JwtAuth: []
tags:
- name: Employees
paths:
  /v2/employees/{id}/activate:
    parameters:
    - name: id
      in: path
      description: Email or custom ID
      required: true
      style: simple
      explode: false
      schema:
        type: string
    put:
      summary: Activate Employee
      parameters:
      - name: Authorization
        in: header
        description: Token
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your token here]'
      - name: x-api-key
        in: header
        description: Production API Key
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your API key here]'
      - name: Content-Type
        in: header
        required: false
        style: simple
        explode: false
        schema:
          type: string
        example: application/json
      responses:
        '200':
          description: A 200 response code indicates that the employee has been activated.
        '403':
          description: Forbidden — The request was denied due to an authentication failure.
        '404':
          description: Not Found — The employee was not found.
        '422':
          description: Unprocessable Entity — The request was well-formed but was unable to be followed due to semantic errors.
        '500':
          description: Internal Server Error — The server encountered an unexpected condition that prevented it from fulfilling the request. File a Support ticket if this error is reproducible.
      tags:
      - Employees
  /v2/employees/{id}:
    parameters:
    - name: id
      in: path
      description: Email or custom_employee_id of the employee
      required: true
      style: simple
      explode: false
      schema:
        type: string
    get:
      summary: Employee
      parameters:
      - name: Authorization
        in: header
        description: Token
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your token here]'
      - name: x-api-key
        in: header
        description: Production API Key
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your API key here]'
      - name: Content-Type
        in: header
        required: false
        style: simple
        explode: false
        schema:
          type: string
        example: application/json
      responses:
        '200':
          description: For a 200 response code, the response body contains an object describing the employee.
          headers:
            Content-Type:
              style: simple
              explode: false
              schema:
                type: string
              example: application/json
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBodyGetEmployee'
        '403':
          description: Forbidden — The request was denied due to an authentication failure.
        '404':
          description: Not Found — The employee was not found.
        '422':
          description: Unprocessable Entity — The request was well-formed but was unable to be followed due to semantic errors.
        '500':
          description: Internal Server Error — The server encountered an unexpected condition that prevented it from fulfilling the request. File a Support ticket if this error is reproducible.
      tags:
      - Employees
    put:
      summary: Update Employee
      parameters:
      - name: Authorization
        in: header
        description: Token
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your token here]'
      - name: x-api-key
        in: header
        description: Production API Key
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your API key here]'
      - name: Content-Type
        in: header
        required: false
        style: simple
        explode: false
        schema:
          type: string
        example: application/json
      requestBody:
        description: An object describing the updates to be made to the employee
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestBodyUpdateEmployee'
        required: true
      responses:
        '200':
          description: For a 200 response code, the response body contains an object describing the employee.
          headers:
            Content-Type:
              style: simple
              explode: false
              schema:
                type: string
              example: application/json
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBodyUpdateEmployee'
        '403':
          description: Forbidden — The request was denied due to an authentication failure.
        '404':
          description: Not Found — The employee was not found.
        '422':
          description: Unprocessable Entity — The request was well-formed but was unable to be followed due to semantic errors.
        '500':
          description: Internal Server Error — The server encountered an unexpected condition that prevented it from fulfilling the request. File a Support ticket if this error is reproducible.
      tags:
      - Employees
  /v2/employees:
    get:
      summary: Employees
      parameters:
      - name: external_id
        in: query
        description: (Optional) External ID of the last employee in the current paginated response. This is used to build the next page of employees.
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: number_of_employees
        in: query
        description: (Optional) Sets the amount of employees that will be returned during each request. Default = 100. Max = 500.
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: status
        in: query
        description: '(Optional) Filters the users returned based on their status. Options are: active, deactivated, pending review, confirmed, unapproved, created.'
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: employee_status
        in: query
        description: '(Optional) Filters the users returned based on their employment status. Options are: full-time, part-time, temp.'
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: team_leader_ids
        in: query
        description: (Optional) Filters the users returned based on team leader. Use the team leader's numerical ID as the value. Add multiple parameters to return employees from multiple teams.
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: reporting_groups
        in: query
        description: (Optional) Filters the users returned based on reporting group. Use the reporting group's name as the value. Add multiple parameters to return employees from multiple reporting groups.
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: roles
        in: query
        description: (Optional) Filters the users returned based on role. Use the role's name as the value. Add multiple parameters to return employees from multiple roles.
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: q
        in: query
        description: (Optional) Returns employees that partially match the specified value. This will initiate a search by the employee's name, email address, and custom employee ID.
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: Token
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your token here]'
      - name: x-api-key
        in: header
        description: Production API Key
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your API key here]'
      - name: Content-Type
        in: header
        required: false
        style: simple
        explode: false
        schema:
          type: string
        example: application/json
      responses:
        '200':
          description: For a 200 response code, the response body contains an array of employees.
          headers:
            Content-Type:
              style: simple
              explode: false
              schema:
                type: string
              example: application/json
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBodyGetEmployees'
        '403':
          description: Forbidden — The request was denied due to an authentication failure.
        '500':
          description: Internal Server Error — The server encountered an unexpected condition that prevented it from fulfilling the request. File a Support ticket if this error is reproducible.
      tags:
      - Employees
    post:
      summary: Create Employee
      parameters:
      - name: Authorization
        in: header
        description: Token
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your token here]'
      - name: x-api-key
        in: header
        description: Production API Key
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your API key here]'
      - name: Content-Type
        in: header
        required: false
        style: simple
        explode: false
        schema:
          type: string
        example: application/json
      requestBody:
        description: An object describing the employee to be invited
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestBodyCreateEmployee'
        required: true
      responses:
        '200':
          description: For a 200 response code, the response body contains an object describing the employee.
          headers:
            Content-Type:
              style: simple
              explode: false
              schema:
                type: string
              example: application/json
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBodyCreateEmployee'
        '201':
          description: Created — A 201 response code indicates that the employee has been created.
        '403':
          description: Forbidden — The request was denied due to an authentication failure.
        '500':
          description: Internal Server Error — The server encountered an unexpected condition that prevented it from fulfilling the request. File a Support ticket if this error is reproducible.
      tags:
      - Employees
  /v2/employees/{id}/deactivate:
    parameters:
    - name: id
      in: path
      description: Email or custom_employee_id of the employee
      required: true
      style: simple
      explode: false
      schema:
        type: string
    put:
      summary: Deactivate Employee
      parameters:
      - name: Authorization
        in: header
        description: Token
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your token here]'
      - name: x-api-key
        in: header
        description: Production API Key
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your API key here]'
      - name: Content-Type
        in: header
        required: false
        style: simple
        explode: false
        schema:
          type: string
        example: application/json
      responses:
        '200':
          description: A 200 response code indicates that the employee has been deactivated.
          headers:
            Content-Type:
              style: simple
              explode: false
              schema:
                type: string
              example: application/json
        '403':
          description: Forbidden — The request was denied due to an authentication failure.
        '404':
          description: Not Found — The employee was not found.
        '422':
          description: Unprocessable Entity — The request was well-formed but was unable to be followed due to semantic errors.
        '500':
          description: Internal Server Error — The server encountered an unexpected condition that prevented it from fulfilling the request. File a Support ticket if this error is reproducible.
      tags:
      - Employees
  /v2/employees/invite:
    post:
      summary: Invite Employee
      parameters:
      - name: Authorization
        in: header
        description: Token
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your token here]'
      - name: x-api-key
        in: header
        description: Production API Key
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: '[insert your API key here]'
      - name: Content-Type
        in: header
        required: false
        style: simple
        explode: false
        schema:
          type: string
        example: application/json
      requestBody:
        description: An object describing the employee to be invited
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestBodyInviteEmployee'
        required: true
      responses:
        '200':
          description: For a 200 response code, the response body contains an object describing the employee.
          headers:
            Content-Type:
              style: simple
              explode: false
              schema:
                type: string
              example: application/json
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBodyInviteEmployee'
        '201':
          description: Created — A 201 response code indicates that the employee has been invited.
        '403':
          description: Forbidden — The request was denied due to an authentication failure.
        '500':
          description: Internal Server Error — The server encountered an unexpected condition that prevented it from fulfilling the request. File a Support ticket if this error is reproducible.
      tags:
      - Employees
components:
  schemas:
    RequestBodyCreateEmployee:
      $ref: '#/components/schemas/CreateEmployeeModel'
    ResponseBodyUpdateEmployee:
      type: object
      properties:
        email:
          type: string
          description: "Email of the updated employee\n\n Employee email must be in accepted email format."
        custom_employee_id:
          type: string
          description: ID of the updated employee
        first_name:
          type: string
          description: Updated first name of the employee
        last_name:
          type: string
          description: Updated last name of the employee
        temporary_password:
          type: string
          description: Updated temporary password for the employee
        team_leader_id:
          type: string
          description: "The ID of the employee’s updated team leader\n\n If not found, an error will be returned."
        team_leader_email:
          type: string
          description: "The email address of the updated employee’s team leader\n\n If no team leader is assigned, the default will be ‘unassigned’. If not found, an error will be returned."
        role:
          type: string
          description: "The name of the role to assign the employee\n\n The role must exist to be assigned. If a previous role exists that is different from the one provided, the user will be unassigned from the previous role and assigned to the new one."
        manage_team:
          type: boolean
          description: "Determines team ownership\n\n If true, the employee will own a team to which other employees can be added. If false, the user can be re-assigned to a team instead. The default value is false.\n\n All promotions are allowed. Once a user has manage_team set to true, it cannot be taken away. However, you may simply reassign their reporting users to a new team and change the user’s role to effectively demote a user."
        license_type:
          type: string
          description: "The updated license type of the employee\n\n Allowed values are: standard, flexible."
        channels:
          type: array
          description: "The updated assigned channels of the employee\n\n If not provided, the default assignment = [“phone”, “chat”, “email”]."
          items:
            type: string
        employment_status:
          type: string
          description: "The updated employment status of the employee\n\n Allowed values are: full-time, part-time, or temp."
        start_date:
          type: string
          description: "The updated start date of the employee\n\n Allowed format: YYYY-MM-DD"
          format: date
          example: '2026-03-15'
        hometown:
          type: string
          description: The updated hometown of the employee
        state_or_country:
          type: string
          description: The updated state or country of the employee
        profile_text:
          type: string
          description: The updated bio of the employee
        image:
          type: string
          description: "The updated URL of the profile image of the employee\n\n The image must be in PNG format and the URL must be publicly accessible."
        reporting_groups:
          type: array
          description: List of groups (names) that the employee is part of
          items:
            type: string
        permissions:
          type: array
          description: List of permissions assigned to the employee's role
          items:
            type: string
    ResponseBodyGetEmployees:
      type: object
      properties:
        employees:
          type: object
          properties:
            email:
              type: string
              description: Email address of the employee
            custom_employee_id:
              type: string
              description: A custom identifier for the employee
            first_name:
              type: string
              description: First name of the employee
            last_name:
              type: string
              description: Last name of the employee
            team_leader_id:
              type: integer
              description: The ID of the employee's team leader
            team_leader_email:
              type: string
              description: Email address of the employee's team leader
            role:
              type: string
              description: The role of the employee on the Agent Connect platform
            license_type:
              type: string
              description: The license type of the employee on the Agent Connect platform
            channels:
              type: array
              description: The channels enabled for the employee
              example:
              - phone
              - chat
              - email
              items:
                type: string
            employment_status:
              type: string
              description: The employment status of the employee
            start_date:
              type: string
              description: The start date of the employee in ISO 8601 format
              format: date
              example: '2026-03-15'
            hometown:
              type: string
              description: The home town of the employee
            state_or_country:
              type: string
              description: The state or country of the employee
            profile_text:
              type: string
              description: The text of the employee's bio in Agent Connect
            image:
              type: string
              description: The URL of the employee's profile image
              example: https://<subdomain>.stellaconnect.net/api/v2/employees/123/image.png
            groups:
              type: array
              description: The groups the employee is a member of on the Agent Connect platform
              example:
              - Support
              - Tier 2
              - Admins
              items:
                type: string
            manage_team:
              type: boolean
              description: Indicates whether the employee is a team leader
            last_active:
              type: string
              description: The last active time of the employee in UTC
              format: date-time
              example: '2026-03-15T14:30:00Z'
        meta:
          type: object
          properties:
            next_page:
              type: string
              description: The URL of the next page of employees
              example: https://<subdomain>.stellaconnect.net/api/v2/employees?after=<id>
          additionalProperties: false
          description: Information about the next page of employees
    InviteEmployeeModel:
      type: object
      properties:
        email:
          type: string
          description: "Email of the invited employee\n\n Employee email must be in accepted email format."
        custom_employee_id:
          type: string
          description: ID of the invited employee
        first_name:
          type: string
          description: First name of the invited employee
        last_name:
          type: string
          description: Last name of the invited employee
        temporary_password:
          type: string
          description: Temporary password for the invited employee
        team_leader_id:
          type: string
          description: "The ID of the invited employee’s team leader\n\n If not found, an error will be returned."
        team_leader_email:
          type: string
          description: "The email address of the invited employee’s team leader\n\n If no team leader is assigned, the default will be ‘unassigned’. If not found, an error will be returned."
        role:
          type: string
          description: "The name of the role to assign the employee\n\n The role must exist to be assigned. If a previous role exists that is different from the one provided, the user will be unassigned from the previous role and assigned to the new one."
        manage_team:
          type: boolean
          description: "Determines team ownership\n\n If true, the employee will own a team to which other employees can be added. If false, the user can be re-assigned to a team instead. The default value is false.\n\n All promotions are allowed. Once a user has manage_team set to true, it cannot be taken away. However, you may simply reassign their reporting users to a new team and change the user’s role to effectively demote a user."
        license_type:
          type: string
          description: "The license type of the invited employee\n\n Allowed values are: standard, flexible."
        channels:
          type: array
          description: "The assigned channels of the invited employee\n\n If not provided, the default assignment = [“phone”, “chat”, “email”]."
          items:
            type: string
        employment_status:
          type: string
          description: "The employment status of the invited employee\n\n Allowed values are: full-time, part-time, or temp."
        start_date:
          type: string
          description: "The start date of the invited employee\n\n Allowed format: YYYY-MM-DD"
          format: date
          example: '2026-03-15'
        hometown:
          type: string
          description: The hometown of the invited employee
        state_or_country:
          type: string
          description: The state or country of the invited employee
        profile_text:
          type: string
          description: The bio of the invited employee
        image:
          type: string
          description: "The URL of the profile image of the invited employee\n\n The image must be in PNG format and the URL must be publicly accessible."
        groups:
          type: array
          description: List of groups (names) that the invited employee is part of
          items:
            type: string
    ResponseBodyCreateEmployee:
      type: object
      properties:
        email:
          type: string
          description: "Email of the invited employee\n\n Employee email must be in accepted email format."
        custom_employee_id:
          type: string
          description: ID of the invited employee
        first_name:
          type: string
          description: First name of the invited employee
        last_name:
          type: string
          description: Last name of the invited employee
        temporary_password:
          type: string
          description: Temporary password for the invited employee
        team_leader_id:
          type: string
          description: "The ID of the invited employee’s team leader\n\n If not found, an error will be returned."
        team_leader_email:
          type: string
          description: "The email address of the invited employee’s team leader\n\n If no team leader is assigned, the default will be ‘unassigned’. If not found, an error will be returned."
        role:
          type: string
          description: "The name of the role to assign the employee\n\n The role must exist to be assigned. If a previous role exists that is different from the one provided, the user will be unassigned from the previous role and assigned to the new one."
        manage_team:
          type: boolean
          description: "Determines team ownership\n\n If true, the employee will own a team to which other employees can be added. If false, the user can be re-assigned to a team instead. The default value is false.\n\n All promotions are allowed. Once a user has manage_team set to true, it cannot be taken away. However, you may simply reassign their reporting users to a new team and change the user’s role to effectively demote a user."
        license_type:
          type: string
          description: "The license type of the invited employee\n\n Allowed values are: standard, flexible."
        channels:
          type: array
          description: "The assigned channels of the invited employee\n\n If not provided, the default assignment = [“phone”, “chat”, “email”]."
          items:
            type: string
        employment_status:
          type: string
          description: "The employment status of the invited employee\n\n Allowed values are: full-time, part-time, or temp."
        start_date:
          type: string
          description: "The start date of the invited employee\n\n Allowed format: YYYY-MM-DD"
          format: date
          example: '2026-03-15'
        hometown:
          type: string
          description: The hometown of the invited employee
        state_or_country:
          type: string
          description: The state or country of the invited employee
        profile_text:
          type: string
          description: The bio of the invited employee
        image:
          type: string
          description: "The URL of the profile image of the invited employee\n\n The image must be in PNG format and the URL must be publicly accessible."
        groups:
          type: array
          description: List of groups (names) that the invited employee is part of
          items:
            type: string
    CreateEmployeeModel:
      type: object
      properties:
        email:
          type: string
          description: "Email of the invited employee\n\n Employee email must be in accepted email format."
        custom_employee_id:
          type: string
          description: ID of the invited employee
        first_name:
          type: string
          description: First name of the invited employee
        last_name:
          type: string
          description: Last name of the invited employee
        temporary_password:
          type: string
          description: Temporary password for the invited employee
        team_leader_id:
          type: string
          description: "The ID of the invited employee’s team leader\n\n If not found, an error will be returned."
        team_leader_email:
          type: string
          description: "The email address of the invited employee’s team leader\n\n If no team leader is assigned, the default will be ‘unassigned’. If not found, an error will be returned."
        role:
          type: string
          description: "The name of the role to assign the employee\n\n The role must exist to be assigned. If a previous role exists that is different from the one provided, the user will be unassigned from the previous role and assigned to the new one."
        manage_team:
          type: boolean
          description: "Determines team ownership\n\n If true, the employee will own a team to which other employees can be added. If false, the user can be re-assigned to a team instead. The default value is false.\n\n All promotions are allowed. Once a user has manage_team set to true, it cannot be taken away. However, you may simply reassign their reporting users to a new team and change the user’s role to effectively demote a user."
        license_type:
          type: string
          description: "The license type of the invited employee\n\n Allowed values are: standard, flexible."
        channels:
          type: array
          description: "The assigned channels of the invited employee\n\n If not provided, the default assignment = [“phone”, “chat”, “email”]."
          items:
            type: string
        employment_status:
          type: string
          description: "The employment status of the invited employee\n\n Allowed values are: full-time, part-time, or temp."
        start_date:
          type: string
          description: "The start date of the invited employee\n\n Allowed format: YYYY-MM-DD"
          format: date
          example: '2026-03-15'
        hometown:
          type: string
          description: The hometown of the invited employee
        state_or_country:
          type: string
          description: The state or country of the invited employee
        profile_text:
          type: string
          description: The bio of the invited employee
        image:
          type: string
          description: "The URL of the profile image of the invited employee\n\n The image must be in PNG format and the URL must be publicly accessible."
        groups:
          type: array
          description: List of groups (names) that the invited employee is part of
          items:
            type: string
    RequestBodyInviteEmployee:
      $ref: '#/components/schemas/InviteEmployeeModel'
    UpdateEmployeeModel:
      type: object
      properties:
        email:
          type: string
          description: "Email of the updated employee\n\n Employee email must be in accepted email format."
        custom_employee_id:
          type: string
          description: ID of the updated employee
        first_name:
          type: string
          description: Updated first name of the employee
        last_

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/stellaconnect/refs/heads/main/openapi/stellaconnect-employees-api-openapi.yml