openapi: 3.0.3 info: title: WTW HR Portal Benefits Cases API description: Willis Towers Watson HR Portal API for delivering personalized digital employee experiences. Enables HR teams to manage employee content, benefits communications, total rewards statements, case management, and targeted workforce messaging. version: 1.0.0 contact: name: Willis Towers Watson url: https://www.wtwco.com/en-us/solutions/products/hr-portal-software servers: - url: https://api.wtwco.com/hrportal/v1 description: WTW HR Portal API security: - bearerAuth: [] tags: - name: Cases description: HR service case management paths: /cases: get: operationId: listCases summary: List Cases description: Returns a list of HR service cases. tags: - Cases parameters: - name: status in: query schema: type: string enum: - open - pending - resolved - closed description: Filter by case status - name: category in: query schema: type: string description: Filter by case category - name: page in: query schema: type: integer default: 1 - name: limit in: query schema: type: integer default: 25 responses: '200': description: Case list content: application/json: schema: $ref: '#/components/schemas/CaseList' post: operationId: createCase summary: Create Case description: Submit a new HR service case or inquiry. tags: - Cases requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CaseInput' responses: '201': description: Case created content: application/json: schema: $ref: '#/components/schemas/Case' /cases/{caseId}: get: operationId: getCase summary: Get Case description: Retrieve a specific HR service case. tags: - Cases parameters: - name: caseId in: path required: true schema: type: string responses: '200': description: Case details content: application/json: schema: $ref: '#/components/schemas/Case' '404': $ref: '#/components/responses/NotFound' put: operationId: updateCase summary: Update Case description: Update an existing HR service case. tags: - Cases parameters: - name: caseId in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CaseUpdate' responses: '200': description: Case updated content: application/json: schema: $ref: '#/components/schemas/Case' components: schemas: CaseInput: type: object required: - employeeId - category - subject properties: employeeId: type: string category: type: string subject: type: string description: type: string priority: type: string enum: - low - medium - high - urgent CaseList: type: object properties: data: type: array items: $ref: '#/components/schemas/Case' total: type: integer page: type: integer limit: type: integer Error: type: object properties: code: type: string message: type: string Case: type: object properties: id: type: string caseNumber: type: string employeeId: type: string category: type: string subject: type: string description: type: string status: type: string enum: - open - pending - resolved - closed priority: type: string enum: - low - medium - high - urgent assignedTo: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time resolvedAt: type: string format: date-time CaseUpdate: type: object properties: status: type: string enum: - open - pending - resolved - closed assignedTo: type: string notes: type: string responses: NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT