Engagedly Departments API
Create and manage organizational departments
Create and manage organizational departments
openapi: 3.0.3
info:
title: Engagedly Activities Departments API
description: 'REST API for the Engagedly people strategy execution platform. Provides endpoints for managing users, departments, locations, job titles, business units, permissions, user attributes, and employee activities such as praises and recognition. Supports performance review workflows, goal management, and organizational data integration using header-based authentication with ClientKey and SecretKey.
'
version: beta
contact:
url: https://engagedly.com
license:
name: Proprietary
servers:
- url: https://api.engagedly.com/beta
description: Production API server
security:
- clientKeyAuth: []
secretKeyAuth: []
tags:
- name: Departments
description: Create and manage organizational departments
paths:
/departments:
get:
operationId: listDepartments
summary: List all departments
description: Returns a paginated list of all departments in the organization.
tags:
- Departments
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/sizeParam'
responses:
'200':
description: Paginated list of departments
content:
application/json:
schema:
$ref: '#/components/schemas/DepartmentListResponse'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createDepartment
summary: Create a new department
description: Creates a new department in the organization.
tags:
- Departments
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DepartmentRequest'
responses:
'201':
description: Department created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/DepartmentSingleResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/UnprocessableEntity'
/departments/{id}:
get:
operationId: getDepartment
summary: Get a single department
description: Returns details for a single department including its members.
tags:
- Departments
parameters:
- $ref: '#/components/parameters/idPathParam'
responses:
'200':
description: Department details
content:
application/json:
schema:
$ref: '#/components/schemas/DepartmentSingleResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateDepartment
summary: Update an existing department
description: Updates the name and/or members of an existing department.
tags:
- Departments
parameters:
- $ref: '#/components/parameters/idPathParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DepartmentRequest'
responses:
'200':
description: Department updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/DepartmentSingleResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteDepartment
summary: Delete a department
description: Permanently deletes the specified department.
tags:
- Departments
parameters:
- $ref: '#/components/parameters/idPathParam'
responses:
'204':
description: Department deleted successfully
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
ErrorDetail:
type: object
properties:
field:
type: string
example: name
message:
type: string
example: Mandatory attribute missing
code:
type: string
example: missing_field
ErrorResponse:
type: object
properties:
error_type:
type: string
enum:
- api_connection_error
- authentication_error
- invalid_request_error
- validation_error
example: validation_error
errors:
type: array
items:
$ref: '#/components/schemas/ErrorDetail'
DepartmentRequest:
type: object
required:
- name
properties:
name:
type: string
members:
type: array
items:
type: string
description: Array of user IDs
DepartmentSingleResponse:
type: object
properties:
success:
type: boolean
data:
$ref: '#/components/schemas/Department'
Department:
type: object
properties:
id:
type: string
example: f5afec62-21ff-40d3-a06e-9a2162ef6b69
name:
type: string
example: Customer Support
members_count:
type: string
example: '10'
administrators_count:
type: string
example: '2'
members:
type: array
items:
$ref: '#/components/schemas/UserRef'
Pagination:
type: object
properties:
page:
type: integer
example: 1
size:
type: integer
example: 25
has_more:
type: boolean
example: false
total_records:
type: integer
example: 42
DepartmentListResponse:
type: object
properties:
success:
type: boolean
pagination:
$ref: '#/components/schemas/Pagination'
data:
type: array
items:
$ref: '#/components/schemas/Department'
UserRef:
type: object
properties:
id:
type: string
name:
type: string
email:
type: string
format: email
first_name:
type: string
middle_name:
type: string
nullable: true
last_name:
type: string
display_picture:
$ref: '#/components/schemas/DisplayPicture'
is_admin:
type: boolean
nullable: true
DisplayPicture:
type: object
properties:
large:
type: string
format: uri
nullable: true
medium:
type: string
format: uri
nullable: true
small:
type: string
format: uri
nullable: true
original:
type: string
format: uri
nullable: true
reduced:
type: string
format: uri
nullable: true
responses:
Unauthorized:
description: Unauthorized — invalid or missing ClientKey/SecretKey
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
UnprocessableEntity:
description: Unprocessable Entity — validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
BadRequest:
description: Bad request — missing or invalid parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
NotFound:
description: Not Found — resource does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
parameters:
pageParam:
name: page
in: query
description: Page number (starts at 1)
schema:
type: integer
minimum: 1
default: 1
idPathParam:
name: id
in: path
required: true
description: The unique identifier of the resource
schema:
type: string
sizeParam:
name: size
in: query
description: Number of records per page (maximum 50)
schema:
type: integer
minimum: 1
maximum: 50
default: 25
securitySchemes:
clientKeyAuth:
type: apiKey
in: header
name: ClientKey
description: Client key obtained from the Engagedly portal under Integrations > Engagedly API
secretKeyAuth:
type: apiKey
in: header
name: SecretKey
description: Secret key obtained from the Engagedly portal. Shown only once upon generation.