Actions
Create and manage team improvement actions anchored to focus indicators. Supports lifecycle transitions, multi-assignee company actions, and execution notes (bitácora).
Returns all actions for the authenticated company, sorted from newest to oldest. Overdue in-progress actions are expired on-the-fly before the result is returned. All filter parameters are optional and combinable. Use planId to scope results to a specific plan, or omit it to return all actions.
SessionId
Filter by parent action plan (omit to return all actions regardless of plan)
64f8a0e2d5b7c9a1e3f4a5b6Filter by area/hierarchy (matches any entry in the action's hierarchyIds)
64f8a0e2d5b7c9a1e3f4a5b6Filter by assignee (matches any entry in the assignees list)
64f8a0e2d5b7c9a1e3f4a5b6Status filter
Focus type filter (matches any focusItems entry)
Action type filter
Free-text search on action title and description (case-insensitive contains)
Actions returned (empty list when none match the filters)
Complete action payload returned by the API
Unique action identifier
507f1f77bcf86cd799439011Company that owns this action
507f1f77bcf86cd799439010Parent action plan identifier. Every action belongs to a plan.
507f1f77bcf86cd799439013Areas/hierarchies this action targets. Empty means company-wide scope.
64f8a0e2d5b7c9a1e3f4a5b6Groups this action targets.
64f8a0e2d5b7c9a1e3f4a5b6Scope of the action. MANAGER = individual manager action; COMPANY = cross-team action initiated by an admin.
MANAGERPossible values: How the action was originated. MANUAL = created by the user; SUGGESTION = proposed by a company action; AI = generated by the AI assistant.
MANUALPossible values: Visibility scope — PUBLIC means readable by any company manager; PRIVATE restricts to assignees/creator.
PRIVATEPossible values: Aggregate lifecycle status (computed from all assignee states).
IN_PROGRESSPossible values: Percentage of assignees who have individually reached COMPLETED status (0–100). Computed on-the-fly from assigneeStatuses; never stored.
50Target completion date
2025-06-30T23:59:59.000ZTimestamp when the first assignee moved to IN_PROGRESS
Timestamp when all assignees reached a terminal status
User who created this action
507f1f77bcf86cd799439012Creation timestamp
Last modification timestamp
GET /api/v1/company/actions HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Accept: */*
Actions returned (empty list when none match the filters)
[
{
"id": "507f1f77bcf86cd799439011",
"companyId": "507f1f77bcf86cd799439010",
"planId": "507f1f77bcf86cd799439013",
"plan": {
"id": "507f1f77bcf86cd799439013",
"title": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"description": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
}
},
"title": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"description": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"assigneeStatuses": [
{
"assigneeId": "507f1f77bcf86cd799439011",
"status": "IN_PROGRESS",
"startedAt": "2026-01-01T00:00:00.000Z",
"completedAt": "2026-01-01T00:00:00.000Z"
}
],
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"groupIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"characteristics": [
{
"characteristicId": "64f8a0e2d5b7c9a1e3f4a5b6",
"id": "64f8a0e2d5b7c9a1e3f4a5b6",
"questionType": "DATE",
"value": true
}
],
"actionType": "MANAGER",
"source": "MANUAL",
"visibility": "PRIVATE",
"status": "IN_PROGRESS",
"completionPercent": 50,
"dueDate": "2025-06-30T23:59:59.000Z",
"startedAt": "2026-01-01T00:00:00.000Z",
"completedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "507f1f77bcf86cd799439012",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"notes": [
{
"id": "507f1f77bcf86cd799439020",
"authorId": "507f1f77bcf86cd799439015",
"content": "Feedback de la retro mejoró tras introducir los reconocimientos entre pares.",
"visibility": "SHARED",
"createdAt": "2026-01-01T00:00:00.000Z"
}
]
}
]Creates an action in DRAFT status anchored to one or more focus indicators. For MANAGER actions, assignees defaults to the authenticated user when omitted. For COMPANY actions, an explicit list of co-responsible manager IDs must be supplied.
SessionId
Request payload for creating a new action
Parent action plan this action belongs to. Required — every action belongs to a plan.
507f1f77bcf86cd799439013Areas/hierarchies this action targets. Empty or omitted means company-wide scope.
64f8a0e2d5b7c9a1e3f4a5b6Groups this action targets. Optional.
64f8a0e2d5b7c9a1e3f4a5b6Responsible manager IDs. For MANAGER actions, defaults to the authenticated user when omitted. For COMPANY actions, provide the list of co-responsible managers.
64f8a0e2d5b7c9a1e3f4a5b6Expected completion date. Must be in the future.
2025-06-30T23:59:59.000ZScope of the action. Use MANAGER for individual manager actions, COMPANY for cross-team initiatives.
MANAGERPossible values: How the action was originated. Defaults to MANUAL when omitted.
MANUALPossible values: Template this action was created from. Provide when source=TEMPLATE.
507f1f77bcf86cd799439020Visibility for the action. Defaults to PRIVATE when omitted.
Action created successfully
Complete action payload returned by the API
Unique action identifier
507f1f77bcf86cd799439011Company that owns this action
507f1f77bcf86cd799439010Parent action plan identifier. Every action belongs to a plan.
507f1f77bcf86cd799439013Areas/hierarchies this action targets. Empty means company-wide scope.
64f8a0e2d5b7c9a1e3f4a5b6Groups this action targets.
64f8a0e2d5b7c9a1e3f4a5b6Scope of the action. MANAGER = individual manager action; COMPANY = cross-team action initiated by an admin.
MANAGERPossible values: How the action was originated. MANUAL = created by the user; SUGGESTION = proposed by a company action; AI = generated by the AI assistant.
MANUALPossible values: Visibility scope — PUBLIC means readable by any company manager; PRIVATE restricts to assignees/creator.
PRIVATEPossible values: Aggregate lifecycle status (computed from all assignee states).
IN_PROGRESSPossible values: Percentage of assignees who have individually reached COMPLETED status (0–100). Computed on-the-fly from assigneeStatuses; never stored.
50Target completion date
2025-06-30T23:59:59.000ZTimestamp when the first assignee moved to IN_PROGRESS
Timestamp when all assignees reached a terminal status
User who created this action
507f1f77bcf86cd799439012Creation timestamp
Last modification timestamp
Validation failed: missing required fields, empty focusItems, empty assignees, or invalid actionType
POST /api/v1/company/actions HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Content-Type: */*
Accept: */*
Content-Length: 772
{
"planId": "507f1f77bcf86cd799439013",
"title": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"description": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"groupIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"characteristics": [
{
"characteristicId": "64f8a0e2d5b7c9a1e3f4a5b6",
"id": "64f8a0e2d5b7c9a1e3f4a5b6",
"questionType": "DATE",
"value": true
}
],
"assignees": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"dueDate": "2025-06-30T23:59:59.000Z",
"actionType": "MANAGER",
"source": "MANUAL",
"sourceTemplateId": "507f1f77bcf86cd799439020",
"visibility": "PUBLIC"
}{
"id": "507f1f77bcf86cd799439011",
"companyId": "507f1f77bcf86cd799439010",
"planId": "507f1f77bcf86cd799439013",
"plan": {
"id": "507f1f77bcf86cd799439013",
"title": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"description": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
}
},
"title": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"description": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"assigneeStatuses": [
{
"assigneeId": "507f1f77bcf86cd799439011",
"status": "IN_PROGRESS",
"startedAt": "2026-01-01T00:00:00.000Z",
"completedAt": "2026-01-01T00:00:00.000Z"
}
],
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"groupIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"characteristics": [
{
"characteristicId": "64f8a0e2d5b7c9a1e3f4a5b6",
"id": "64f8a0e2d5b7c9a1e3f4a5b6",
"questionType": "DATE",
"value": true
}
],
"actionType": "MANAGER",
"source": "MANUAL",
"visibility": "PRIVATE",
"status": "IN_PROGRESS",
"completionPercent": 50,
"dueDate": "2025-06-30T23:59:59.000Z",
"startedAt": "2026-01-01T00:00:00.000Z",
"completedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "507f1f77bcf86cd799439012",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"notes": [
{
"id": "507f1f77bcf86cd799439020",
"authorId": "507f1f77bcf86cd799439015",
"content": "Feedback de la retro mejoró tras introducir los reconocimientos entre pares.",
"visibility": "SHARED",
"createdAt": "2026-01-01T00:00:00.000Z"
}
]
}Applies a lifecycle transition. Allowed transitions: DRAFT→IN_PROGRESS, IN_PROGRESS→COMPLETED|PARTIALLY_COMPLETED|FAILED. The EXPIRED status is set automatically by the system and cannot be requested. Transitioning to IN_PROGRESS records startedAt; transitioning to a terminal status records completedAt.
SessionId
Action identifier
64f8a0e2d5b7c9a1e3f4a5b6Request payload to apply a lifecycle transition to an action
Target lifecycle status. Only the transitions described above are allowed.
IN_PROGRESSPossible values: Status changed successfully
Complete action payload returned by the API
Unique action identifier
507f1f77bcf86cd799439011Company that owns this action
507f1f77bcf86cd799439010Parent action plan identifier. Every action belongs to a plan.
507f1f77bcf86cd799439013Areas/hierarchies this action targets. Empty means company-wide scope.
64f8a0e2d5b7c9a1e3f4a5b6Groups this action targets.
64f8a0e2d5b7c9a1e3f4a5b6Scope of the action. MANAGER = individual manager action; COMPANY = cross-team action initiated by an admin.
MANAGERPossible values: How the action was originated. MANUAL = created by the user; SUGGESTION = proposed by a company action; AI = generated by the AI assistant.
MANUALPossible values: Visibility scope — PUBLIC means readable by any company manager; PRIVATE restricts to assignees/creator.
PRIVATEPossible values: Aggregate lifecycle status (computed from all assignee states).
IN_PROGRESSPossible values: Percentage of assignees who have individually reached COMPLETED status (0–100). Computed on-the-fly from assigneeStatuses; never stored.
50Target completion date
2025-06-30T23:59:59.000ZTimestamp when the first assignee moved to IN_PROGRESS
Timestamp when all assignees reached a terminal status
User who created this action
507f1f77bcf86cd799439012Creation timestamp
Last modification timestamp
Transition not allowed from the current status, or status value is invalid
Action not found in this company
POST /api/v1/company/actions/{actionId}/status HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Content-Type: */*
Accept: */*
Content-Length: 24
{
"status": "IN_PROGRESS"
}{
"id": "507f1f77bcf86cd799439011",
"companyId": "507f1f77bcf86cd799439010",
"planId": "507f1f77bcf86cd799439013",
"plan": {
"id": "507f1f77bcf86cd799439013",
"title": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"description": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
}
},
"title": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"description": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"assigneeStatuses": [
{
"assigneeId": "507f1f77bcf86cd799439011",
"status": "IN_PROGRESS",
"startedAt": "2026-01-01T00:00:00.000Z",
"completedAt": "2026-01-01T00:00:00.000Z"
}
],
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"groupIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"characteristics": [
{
"characteristicId": "64f8a0e2d5b7c9a1e3f4a5b6",
"id": "64f8a0e2d5b7c9a1e3f4a5b6",
"questionType": "DATE",
"value": true
}
],
"actionType": "MANAGER",
"source": "MANUAL",
"visibility": "PRIVATE",
"status": "IN_PROGRESS",
"completionPercent": 50,
"dueDate": "2025-06-30T23:59:59.000Z",
"startedAt": "2026-01-01T00:00:00.000Z",
"completedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "507f1f77bcf86cd799439012",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"notes": [
{
"id": "507f1f77bcf86cd799439020",
"authorId": "507f1f77bcf86cd799439015",
"content": "Feedback de la retro mejoró tras introducir los reconocimientos entre pares.",
"visibility": "SHARED",
"createdAt": "2026-01-01T00:00:00.000Z"
}
]
}Returns a paginated slice of the execution log for an action, ordered by creation date ascending (oldest first). Only notes visible to the caller are counted and returned: admins see all notes; managers see shared notes plus their own private ones. from / to are zero-based offset / exclusive end index applied after the visibility filter.
SessionId
Action identifier
64f8a0e2d5b7c9a1e3f4a5b6Zero-based start index (default 0)
0Exclusive end index (default 20)
20Notes page returned (empty result when none match)
Action not found in this company
GET /api/v1/company/actions/{actionId}/notes HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Accept: */*
{
"from": 1,
"to": 1,
"total": 1,
"result": [
{
"id": "507f1f77bcf86cd799439020",
"authorId": "507f1f77bcf86cd799439015",
"content": "Feedback de la retro mejoró tras introducir los reconocimientos entre pares.",
"visibility": "SHARED",
"createdAt": "2026-01-01T00:00:00.000Z"
}
]
}Appends a note to the action execution log (bitácora). The author is always the authenticated user. Notes with PRIVATE visibility are only visible to their author; SHARED notes are visible to all action participants.
SessionId
Action identifier
64f8a0e2d5b7c9a1e3f4a5b6Request payload to append a note to the action execution log
Note body text describing progress, blockers or context updates
El feedback de la retro mejoró notablemente tras introducir los reconocimientos entre pares.Who can see this note. PRIVATE = only the author; SHARED = all action participants. Defaults to PRIVATE.
PRIVATEPossible values: Note created and returned
A single note appended to the action execution log
Note identifier (unique within the parent action)
507f1f77bcf86cd799439020User who wrote the note
507f1f77bcf86cd799439015Note body text
Feedback de la retro mejoró tras introducir los reconocimientos entre pares.Who can see this note. PRIVATE = only the author; SHARED = all action participants.
SHAREDPossible values: Creation timestamp
Content is blank or action not found
Action not found in this company
POST /api/v1/company/actions/{actionId}/notes HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Content-Type: */*
Accept: */*
Content-Length: 130
{
"content": "El feedback de la retro mejoró notablemente tras introducir los reconocimientos entre pares.",
"visibility": "PRIVATE"
}{
"id": "507f1f77bcf86cd799439020",
"authorId": "507f1f77bcf86cd799439015",
"content": "Feedback de la retro mejoró tras introducir los reconocimientos entre pares.",
"visibility": "SHARED",
"createdAt": "2026-01-01T00:00:00.000Z"
}Manually triggers the closure snapshot capture for an action that was closed before the impact measurement feature was deployed (backfill). This is idempotent: calling it on an action that already has an impact document is a no-op. Requires the action to be in a terminal status (COMPLETED, PARTIALLY_COMPLETED or FAILED).
SessionId
Action identifier
64f8a0e2d5b7c9a1e3f4a5b6Capture triggered (or was already present — idempotent)
No content
Action not found or not in a terminal status
POST /api/v1/company/actions/{actionId}/impact/capture HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Accept: */*
No content
Triggers an asynchronous Excel export of this action. The workbook will be delivered to your e-mail address as a download link. The response is empty — the file arrives via e-mail within seconds.
SessionId
Action identifier
64f8a0e2d5b7c9a1e3f4a5b6Export triggered — file will be sent by e-mail
No content
POST /api/v1/company/actions/{actionId}/excel HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Accept: */*
Export triggered — file will be sent by e-mail
No content
Analyses engagement score data for the requested period and returns up to 3 ready-to-use action suggestions generated by the AI. Each suggestion includes a fully populated title, description, focus indicators, scope (actionType), suggested due date and a rationale explaining the recommendation.
Date window: controlled by from/to in the request body — defaults to the last 30 days when omitted.
Team scope: when teamId is provided, metric queries are filtered to that team's hierarchy so the AI reasons about team-specific data rather than company-wide averages.
Context hint: free-text field for situation context (e.g. "Two people left last month").
The client can send the suggestion directly to the create-action endpoint (POST /v1/company/actions) with source=AI after the user confirms or adjusts the fields. Note: this call invokes an external LLM and may take a few seconds.
SessionId
Optional parameters that narrow the AI action suggestion context
Restrict score analysis to a specific team/hierarchy. When omitted, company-wide data is used.
507f1f77bcf86cd799439012Start of the measurement window (inclusive). When omitted, defaults to 30 days before 'to' (or before now if 'to' is also omitted).
2025-03-01T00:00:00.000ZEnd of the measurement window (inclusive). Defaults to the current date/time when omitted.
2025-05-31T23:59:59.000ZFree-text hint that gives the AI additional context about the current situation. Max 500 characters.
Our team had two people leave last month and morale seems low.BCP-47 language code for the suggestion text. Defaults to 'es' when omitted.
esExample: esSuggestions generated (may be an empty list if no engagement data is available)
AI-generated action suggestion — all fields pre-filled and ready for user review. Can be forwarded directly to POST /v1/company/actions after confirmation.
Short title describing the suggested action
Implementar rituales de reconocimiento semanalesDetailed execution plan: how, when, and why this action addresses the focus indicator
Cada viernes dedicar 10 minutos al inicio del standup a reconocer un logro concreto de un miembro del equipo.Recommended action scope. MANAGER for individual-team actions; COMPANY for cross-team initiatives.
MANAGERPossible values: Suggested target completion date. Map this directly to the dueDate field when creating the action.
2025-09-01T00:00:00.000ZAreas/hierarchies this action is pre-scoped to. Pre-populated from the teamId in the suggestion request; empty for company-wide suggestions.
64f8a0e2d5b7c9a1e3f4a5b6Responsible managers. Empty — must be filled by the user before confirming.
64f8a0e2d5b7c9a1e3f4a5b6Current measured value of the focus indicator at the time the suggestion was generated. Provides context to show the user the baseline the action targets (e.g. 4.3 for a score on a 0–10 scale, or 62 for HI on a 0–100 scale). Null when the measurement was unavailable for the requested period.
Brief explanation of why the model recommends this action, based on the data analysed.
El factor Reconocimiento lleva 3 pulsos consecutivos con valores inferiores a 5, lo que suele correlacionar con mayor rotación.Always AI for suggestions generated by this endpoint.
AIPossible values: Request validation failed
AI service unavailable or returned an unparseable response
POST /api/v1/company/actions/suggest HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Content-Type: */*
Accept: */*
Content-Length: 191
{
"teamId": "507f1f77bcf86cd799439012",
"from": "2025-03-01T00:00:00.000Z",
"to": "2025-05-31T23:59:59.000Z",
"hint": "Our team had two people leave last month and morale seems low.",
"language": "es"
}[
{
"title": "Implementar rituales de reconocimiento semanales",
"description": "Cada viernes dedicar 10 minutos al inicio del standup a reconocer un logro concreto de un miembro del equipo.",
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"actionType": "MANAGER",
"dueDate": "2025-09-01T00:00:00.000Z",
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"assignees": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"currentValue": 1,
"rationale": "El factor Reconocimiento lleva 3 pulsos consecutivos con valores inferiores a 5, lo que suele correlacionar con mayor rotación.",
"source": "AI"
}
]Deprecated — use POST /v1/company/actions/ai/from-comment/{commentId} (IA #5) instead. That endpoint returns a full plan draft (plan + its actions) from the same comment, which fits the model where every action belongs to a plan. This endpoint returns a single standalone action suggestion and is kept only for backward compatibility.
Converts an employee comment (idea or suggestion) into a single ready-to-use action. The original comment text is preserved as the seed for the action description — the AI polishes it into professional language while keeping the employee's intent intact. The AI also generates the title, picks the most relevant focus indicator from the engagement catalog, and suggests scope (actionType) and due date. The result can be sent directly to POST /v1/company/actions with source=AI once the user confirms. Note: this call invokes an external LLM and may take a few seconds.
SessionId
Comment (idea) identifier
64f8a0e2d5b7c9a1e3f4a5b6Action suggestion generated from the comment
AI-generated action suggestion — all fields pre-filled and ready for user review. Can be forwarded directly to POST /v1/company/actions after confirmation.
Short title describing the suggested action
Implementar rituales de reconocimiento semanalesDetailed execution plan: how, when, and why this action addresses the focus indicator
Cada viernes dedicar 10 minutos al inicio del standup a reconocer un logro concreto de un miembro del equipo.Recommended action scope. MANAGER for individual-team actions; COMPANY for cross-team initiatives.
MANAGERPossible values: Suggested target completion date. Map this directly to the dueDate field when creating the action.
2025-09-01T00:00:00.000ZAreas/hierarchies this action is pre-scoped to. Pre-populated from the teamId in the suggestion request; empty for company-wide suggestions.
64f8a0e2d5b7c9a1e3f4a5b6Responsible managers. Empty — must be filled by the user before confirming.
64f8a0e2d5b7c9a1e3f4a5b6Current measured value of the focus indicator at the time the suggestion was generated. Provides context to show the user the baseline the action targets (e.g. 4.3 for a score on a 0–10 scale, or 62 for HI on a 0–100 scale). Null when the measurement was unavailable for the requested period.
Brief explanation of why the model recommends this action, based on the data analysed.
El factor Reconocimiento lleva 3 pulsos consecutivos con valores inferiores a 5, lo que suele correlacionar con mayor rotación.Always AI for suggestions generated by this endpoint.
AIPossible values: Comment not found in this company, or comment has no text
AI service unavailable or returned an unparseable response
POST /api/v1/company/actions/suggest/from-comment/{commentId} HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Accept: */*
{
"title": "Implementar rituales de reconocimiento semanales",
"description": "Cada viernes dedicar 10 minutos al inicio del standup a reconocer un logro concreto de un miembro del equipo.",
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"actionType": "MANAGER",
"dueDate": "2025-09-01T00:00:00.000Z",
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"assignees": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"currentValue": 1,
"rationale": "El factor Reconocimiento lleva 3 pulsos consecutivos con valores inferiores a 5, lo que suele correlacionar con mayor rotación.",
"source": "AI"
}Triggers an asynchronous Excel export of ALL action plans (with their actions) for the company in a single workbook. The file will be delivered to your e-mail address as a time-limited download link. The response is empty — the file arrives via e-mail within seconds.
SessionId
Export triggered — file will be sent by e-mail
No content
POST /api/v1/company/actions/excel HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Accept: */*
Export triggered — file will be sent by e-mail
No content
Returns a DRAFT set of actions that fit an existing plan, given the plan's context. Pass the plan's planTitle/planDescription in the body so the AI tailors the actions to the plan's goal; when omitted, the plan id is used as minimal fallback context.
Count: count controls how many actions are generated (clamped to 1–5; defaults to 3).
Not persisted: the results are drafts. The client forwards each one to the create-action endpoint after the user confirms. Note: this call invokes an external LLM and may take a few seconds.
SessionId
Plan identifier the generated actions belong to
64f8a0e2d5b7c9a1e3f4a5b6Optional parameters for generating actions that fit an existing plan
Title of the plan the actions must fit into. Improves the relevance of the generated actions. Optional — when omitted the plan id is used as fallback context.
Plan de mejora del reconocimientoGoal/description of the plan the actions must serve. Optional.
Reforzar el reconocimiento entre equipos.How many actions to generate. Clamped to the range 1–5; defaults to 3 when omitted.
3Example: 3Restrict score analysis to a specific team/hierarchy. When omitted, company-wide data is used.
507f1f77bcf86cd799439012Start of the measurement window (inclusive). When omitted, defaults to 30 days before 'to' (or before now if 'to' is also omitted).
2025-03-01T00:00:00.000ZEnd of the measurement window (inclusive). Defaults to the current date/time when omitted.
2025-05-31T23:59:59.000ZFree-text hint that gives the AI additional context about the current situation. Max 500 characters.
Our team had two people leave last month and morale seems low.BCP-47 language code for the suggestion text. Defaults to 'es' when omitted.
esExample: esAction drafts generated (may be an empty list when no engagement data is available)
AI-generated action suggestion — all fields pre-filled and ready for user review. Can be forwarded directly to POST /v1/company/actions after confirmation.
Short title describing the suggested action
Implementar rituales de reconocimiento semanalesDetailed execution plan: how, when, and why this action addresses the focus indicator
Cada viernes dedicar 10 minutos al inicio del standup a reconocer un logro concreto de un miembro del equipo.Recommended action scope. MANAGER for individual-team actions; COMPANY for cross-team initiatives.
MANAGERPossible values: Suggested target completion date. Map this directly to the dueDate field when creating the action.
2025-09-01T00:00:00.000ZAreas/hierarchies this action is pre-scoped to. Pre-populated from the teamId in the suggestion request; empty for company-wide suggestions.
64f8a0e2d5b7c9a1e3f4a5b6Responsible managers. Empty — must be filled by the user before confirming.
64f8a0e2d5b7c9a1e3f4a5b6Current measured value of the focus indicator at the time the suggestion was generated. Provides context to show the user the baseline the action targets (e.g. 4.3 for a score on a 0–10 scale, or 62 for HI on a 0–100 scale). Null when the measurement was unavailable for the requested period.
Brief explanation of why the model recommends this action, based on the data analysed.
El factor Reconocimiento lleva 3 pulsos consecutivos con valores inferiores a 5, lo que suele correlacionar con mayor rotación.Always AI for suggestions generated by this endpoint.
AIPossible values: Request validation failed
AI service unavailable or returned an unparseable response
POST /api/v1/company/actions/ai/{planId}/generate-actions HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Content-Type: */*
Accept: */*
Content-Length: 311
{
"planTitle": "Plan de mejora del reconocimiento",
"planDescription": "Reforzar el reconocimiento entre equipos.",
"count": 3,
"teamId": "507f1f77bcf86cd799439012",
"from": "2025-03-01T00:00:00.000Z",
"to": "2025-05-31T23:59:59.000Z",
"hint": "Our team had two people leave last month and morale seems low.",
"language": "es"
}[
{
"title": "Implementar rituales de reconocimiento semanales",
"description": "Cada viernes dedicar 10 minutos al inicio del standup a reconocer un logro concreto de un miembro del equipo.",
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"actionType": "MANAGER",
"dueDate": "2025-09-01T00:00:00.000Z",
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"assignees": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"currentValue": 1,
"rationale": "El factor Reconocimiento lleva 3 pulsos consecutivos con valores inferiores a 5, lo que suele correlacionar con mayor rotación.",
"source": "AI"
}
]Analyses the company's engagement data and recommends concrete ways to use Happyforce features (check-in, announcement, conversation, survey, recognition) to act on the current situation, pre-filling ready-to-use content for each.
Recommendation only: these recommendations are NOT executed automatically — the user acts on them through the corresponding feature.
Date window: controlled by from/to in the request body — defaults to the last 30 days when omitted.
Team scope: when teamId is provided, metric queries are filtered to that team's hierarchy. Note: this call invokes an external LLM and may take a few seconds.
SessionId
Optional parameters that narrow the AI action suggestion context
Restrict score analysis to a specific team/hierarchy. When omitted, company-wide data is used.
507f1f77bcf86cd799439012Start of the measurement window (inclusive). When omitted, defaults to 30 days before 'to' (or before now if 'to' is also omitted).
2025-03-01T00:00:00.000ZEnd of the measurement window (inclusive). Defaults to the current date/time when omitted.
2025-05-31T23:59:59.000ZFree-text hint that gives the AI additional context about the current situation. Max 500 characters.
Our team had two people leave last month and morale seems low.BCP-47 language code for the suggestion text. Defaults to 'es' when omitted.
esExample: esRecommendations generated (may be an empty list when no engagement data is available)
AI recommendation to use a Happyforce feature, with all actionable fields pre-filled. Recommendation only — never executed automatically; the user acts on it through the corresponding feature.
Happyforce feature to use.
CHECKINPossible values: Short imperative title of the recommendation.
Lanzar un check-in sobre carga de trabajoReady-to-use draft content for the feature (e.g. the check-in question text or the announcement body). Publishable with minimal edits.
¿Cómo valoras tu carga de trabajo esta semana?Recommended action scope. MANAGER for individual-team actions; COMPANY for cross-team initiatives.
MANAGERPossible values: Suggested target completion date for the follow-up action.
2025-09-01T00:00:00.000ZAreas/hierarchies this recommendation is pre-scoped to. Pre-populated from the teamId in the request; empty for company-wide recommendations.
64f8a0e2d5b7c9a1e3f4a5b6Responsible managers. Pre-populated from the requested team scope when available; otherwise empty and filled by the user before confirming.
64f8a0e2d5b7c9a1e3f4a5b6Current measured value of the focus indicator at the time the recommendation was generated. Provides the baseline the recommendation targets. Null when the measurement was unavailable.
Why this feature and this content fit the current situation, citing the relevant signal.
El factor Carga de trabajo ha bajado 1,2 puntos en el último pulso.Request validation failed
AI service unavailable or returned an unparseable response
POST /api/v1/company/actions/ai/platform HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Content-Type: */*
Accept: */*
Content-Length: 191
{
"teamId": "507f1f77bcf86cd799439012",
"from": "2025-03-01T00:00:00.000Z",
"to": "2025-05-31T23:59:59.000Z",
"hint": "Our team had two people leave last month and morale seems low.",
"language": "es"
}[
{
"platformFeature": "CHECKIN",
"title": "Lanzar un check-in sobre carga de trabajo",
"suggestedContent": "¿Cómo valoras tu carga de trabajo esta semana?",
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"actionType": "MANAGER",
"dueDate": "2025-09-01T00:00:00.000Z",
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"assignees": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"currentValue": 1,
"rationale": "El factor Carga de trabajo ha bajado 1,2 puntos en el último pulso."
}
]Analyses the company's engagement data for the requested period and returns a DRAFT improvement plan (title, goal) together with an initial set of 2–5 actions targeting the weakest or most-declining indicators.
Date window: controlled by from/to in the request body — defaults to the last 30 days when omitted.
Team scope: when teamId is provided, metric queries are filtered to that team's hierarchy.
Not persisted: the result is a draft. The client creates the plan and its actions through the standard endpoints after the user reviews and optionally adjusts any field. Note: this call invokes an external LLM and may take a few seconds.
SessionId
Optional parameters that narrow the AI action suggestion context
Restrict score analysis to a specific team/hierarchy. When omitted, company-wide data is used.
507f1f77bcf86cd799439012Start of the measurement window (inclusive). When omitted, defaults to 30 days before 'to' (or before now if 'to' is also omitted).
2025-03-01T00:00:00.000ZEnd of the measurement window (inclusive). Defaults to the current date/time when omitted.
2025-05-31T23:59:59.000ZFree-text hint that gives the AI additional context about the current situation. Max 500 characters.
Our team had two people leave last month and morale seems low.BCP-47 language code for the suggestion text. Defaults to 'es' when omitted.
esExample: esPlan draft generated (its actions list may be empty when no engagement data is available)
AI-generated action plan draft with its initial actions. Not persisted — the user reviews it before creating the plan and actions through the standard endpoints.
Short, goal-oriented plan title.
Plan de mejora del reconocimientoPlan goal: what the plan aims to improve and why, grounded in the analysed data.
Reforzar el reconocimiento entre equipos, cuyo factor lleva tres pulsos por debajo de 5.Always AI for plans generated by this endpoint.
AIPossible values: Request validation failed
AI service unavailable or returned an unparseable response
POST /api/v1/company/actions/ai/generate-plan HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Content-Type: */*
Accept: */*
Content-Length: 191
{
"teamId": "507f1f77bcf86cd799439012",
"from": "2025-03-01T00:00:00.000Z",
"to": "2025-05-31T23:59:59.000Z",
"hint": "Our team had two people leave last month and morale seems low.",
"language": "es"
}{
"title": "Plan de mejora del reconocimiento",
"description": "Reforzar el reconocimiento entre equipos, cuyo factor lleva tres pulsos por debajo de 5.",
"actions": [
{
"title": "Implementar rituales de reconocimiento semanales",
"description": "Cada viernes dedicar 10 minutos al inicio del standup a reconocer un logro concreto de un miembro del equipo.",
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"actionType": "MANAGER",
"dueDate": "2025-09-01T00:00:00.000Z",
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"assignees": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"currentValue": 1,
"rationale": "El factor Reconocimiento lleva 3 pulsos consecutivos con valores inferiores a 5, lo que suele correlacionar con mayor rotación.",
"source": "AI"
}
],
"source": "AI"
}Turns free-text negative engagement insights (critical comments, declining indicators, detractor feedback) into a DRAFT improvement plan with an initial set of actions that address the underlying problem.
Required: the insights field (max 4000 characters).
Not persisted: the result is a draft. The client creates the plan and its actions through the standard endpoints after the user reviews and optionally adjusts any field. Note: this call invokes an external LLM and may take a few seconds.
SessionId
Parameters for generating an improvement plan from negative engagement insights
Free-text negative engagement insights the plan must address (critical comments, declining indicators, detractor feedback). Required. Max 4000 characters.
Varios comentarios mencionan falta de comunicación del liderazgo y el eNPS ha caído 15 puntos.Restrict score analysis to a specific team/hierarchy. When omitted, company-wide data is used.
507f1f77bcf86cd799439012Start of the measurement window (inclusive). When omitted, defaults to 30 days before 'to' (or before now if 'to' is also omitted).
2025-03-01T00:00:00.000ZEnd of the measurement window (inclusive). Defaults to the current date/time when omitted.
2025-05-31T23:59:59.000ZFree-text hint that gives the AI additional context about the current situation. Max 500 characters.
Our team had two people leave last month and morale seems low.BCP-47 language code for the suggestion text. Defaults to 'es' when omitted.
esExample: esPlan draft generated (its actions list may be empty when no engagement data is available)
AI-generated action plan draft with its initial actions. Not persisted — the user reviews it before creating the plan and actions through the standard endpoints.
Short, goal-oriented plan title.
Plan de mejora del reconocimientoPlan goal: what the plan aims to improve and why, grounded in the analysed data.
Reforzar el reconocimiento entre equipos, cuyo factor lleva tres pulsos por debajo de 5.Always AI for plans generated by this endpoint.
AIPossible values: Request validation failed (e.g. blank insights)
AI service unavailable or returned an unparseable response
POST /api/v1/company/actions/ai/from-engagement HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Content-Type: */*
Accept: */*
Content-Length: 301
{
"insights": "Varios comentarios mencionan falta de comunicación del liderazgo y el eNPS ha caído 15 puntos.",
"teamId": "507f1f77bcf86cd799439012",
"from": "2025-03-01T00:00:00.000Z",
"to": "2025-05-31T23:59:59.000Z",
"hint": "Our team had two people leave last month and morale seems low.",
"language": "es"
}{
"title": "Plan de mejora del reconocimiento",
"description": "Reforzar el reconocimiento entre equipos, cuyo factor lleva tres pulsos por debajo de 5.",
"actions": [
{
"title": "Implementar rituales de reconocimiento semanales",
"description": "Cada viernes dedicar 10 minutos al inicio del standup a reconocer un logro concreto de un miembro del equipo.",
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"actionType": "MANAGER",
"dueDate": "2025-09-01T00:00:00.000Z",
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"assignees": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"currentValue": 1,
"rationale": "El factor Reconocimiento lleva 3 pulsos consecutivos con valores inferiores a 5, lo que suele correlacionar con mayor rotación.",
"source": "AI"
}
],
"source": "AI"
}Takes an employee comment/idea (identified by commentId) as the seed and returns a DRAFT improvement plan whose goal addresses that idea, together with an initial set of actions that develop it. Replaces the single-action /suggest/from-comment/{commentId} flow: since every action now belongs to a plan, this returns a full plan draft instead of a standalone action.
Optional body: hint (free text, extra context to refine the suggestion) and language.
Not persisted: the result is a draft. The client creates the plan and its actions through the standard endpoints after the user reviews and optionally adjusts any field. Note: this call invokes an external LLM and may take a few seconds.
SessionId
Identifier of the source comment/idea
64f8a0e2d5b7c9a1e3f4a5b6Optional parameters for generating a plan and actions from a comment/idea
Free-text hint that gives the AI additional context to refine the suggestion. Max 500 characters.
Encaja con la iniciativa de flexibilidad horaria que estamos evaluando.BCP-47 language code for the suggestion text. Defaults to 'es' when omitted.
esExample: esPlan draft generated from the comment (its actions list may be empty when no engagement data is available)
AI-generated action plan draft with its initial actions. Not persisted — the user reviews it before creating the plan and actions through the standard endpoints.
Short, goal-oriented plan title.
Plan de mejora del reconocimientoPlan goal: what the plan aims to improve and why, grounded in the analysed data.
Reforzar el reconocimiento entre equipos, cuyo factor lleva tres pulsos por debajo de 5.Always AI for plans generated by this endpoint.
AIPossible values: Comment not found in this company or has no text content
AI service unavailable or returned an unparseable response
POST /api/v1/company/actions/ai/from-comment/{commentId} HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Content-Type: */*
Accept: */*
Content-Length: 98
{
"hint": "Encaja con la iniciativa de flexibilidad horaria que estamos evaluando.",
"language": "es"
}{
"title": "Plan de mejora del reconocimiento",
"description": "Reforzar el reconocimiento entre equipos, cuyo factor lleva tres pulsos por debajo de 5.",
"actions": [
{
"title": "Implementar rituales de reconocimiento semanales",
"description": "Cada viernes dedicar 10 minutos al inicio del standup a reconocer un logro concreto de un miembro del equipo.",
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"actionType": "MANAGER",
"dueDate": "2025-09-01T00:00:00.000Z",
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"assignees": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"currentValue": 1,
"rationale": "El factor Reconocimiento lleva 3 pulsos consecutivos con valores inferiores a 5, lo que suele correlacionar con mayor rotación.",
"source": "AI"
}
],
"source": "AI"
}Returns the full action aggregate. Overdue in-progress actions are expired on-the-fly before the response.
SessionId
Action identifier
64f8a0e2d5b7c9a1e3f4a5b6Action found
Complete action payload returned by the API
Unique action identifier
507f1f77bcf86cd799439011Company that owns this action
507f1f77bcf86cd799439010Parent action plan identifier. Every action belongs to a plan.
507f1f77bcf86cd799439013Areas/hierarchies this action targets. Empty means company-wide scope.
64f8a0e2d5b7c9a1e3f4a5b6Groups this action targets.
64f8a0e2d5b7c9a1e3f4a5b6Scope of the action. MANAGER = individual manager action; COMPANY = cross-team action initiated by an admin.
MANAGERPossible values: How the action was originated. MANUAL = created by the user; SUGGESTION = proposed by a company action; AI = generated by the AI assistant.
MANUALPossible values: Visibility scope — PUBLIC means readable by any company manager; PRIVATE restricts to assignees/creator.
PRIVATEPossible values: Aggregate lifecycle status (computed from all assignee states).
IN_PROGRESSPossible values: Percentage of assignees who have individually reached COMPLETED status (0–100). Computed on-the-fly from assigneeStatuses; never stored.
50Target completion date
2025-06-30T23:59:59.000ZTimestamp when the first assignee moved to IN_PROGRESS
Timestamp when all assignees reached a terminal status
User who created this action
507f1f77bcf86cd799439012Creation timestamp
Last modification timestamp
Action not found in this company
GET /api/v1/company/actions/{actionId} HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Accept: */*
{
"id": "507f1f77bcf86cd799439011",
"companyId": "507f1f77bcf86cd799439010",
"planId": "507f1f77bcf86cd799439013",
"plan": {
"id": "507f1f77bcf86cd799439013",
"title": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"description": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
}
},
"title": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"description": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"assigneeStatuses": [
{
"assigneeId": "507f1f77bcf86cd799439011",
"status": "IN_PROGRESS",
"startedAt": "2026-01-01T00:00:00.000Z",
"completedAt": "2026-01-01T00:00:00.000Z"
}
],
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"groupIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"characteristics": [
{
"characteristicId": "64f8a0e2d5b7c9a1e3f4a5b6",
"id": "64f8a0e2d5b7c9a1e3f4a5b6",
"questionType": "DATE",
"value": true
}
],
"actionType": "MANAGER",
"source": "MANUAL",
"visibility": "PRIVATE",
"status": "IN_PROGRESS",
"completionPercent": 50,
"dueDate": "2025-06-30T23:59:59.000Z",
"startedAt": "2026-01-01T00:00:00.000Z",
"completedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "507f1f77bcf86cd799439012",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"notes": [
{
"id": "507f1f77bcf86cd799439020",
"authorId": "507f1f77bcf86cd799439015",
"content": "Feedback de la retro mejoró tras introducir los reconocimientos entre pares.",
"visibility": "SHARED",
"createdAt": "2026-01-01T00:00:00.000Z"
}
]
}Permanently removes an action. Only the action creator or an admin can delete; legacy actions without a recorded creator are deletable by any authorised caller. Returns 204 on success, 403 when the caller is not allowed, 404 when not found.
SessionId
Action identifier
64f8a0e2d5b7c9a1e3f4a5b6Action deleted
No content
Caller is not the creator or an admin
Action not found in this company
DELETE /api/v1/company/actions/{actionId} HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Accept: */*
No content
Applies a partial update to an action. Only non-null fields are updated. Cannot be applied to actions in a terminal status (COMPLETED, PARTIALLY_COMPLETED, FAILED, EXPIRED). Immutable fields (focusItems, actionType) are ignored even if provided.
SessionId
Action identifier
64f8a0e2d5b7c9a1e3f4a5b6Partial update payload for an existing action. Only non-null fields are applied.
Extended due date. Must not be earlier than the action creation date.
2025-09-30T23:59:59.000ZUpdated action origin.
SUGGESTIONPossible values: Replaces the full assignees list when non-null. Use this to add or remove co-responsible managers. Must be non-empty if provided.
64f8a0e2d5b7c9a1e3f4a5b6Moves the action to the specified plan when non-null. The plan must belong to the same company. Omit (or send null) to leave the current plan unchanged.
507f1f77bcf86cd799439013New visibility. Null means no change.
Action updated successfully
Complete action payload returned by the API
Unique action identifier
507f1f77bcf86cd799439011Company that owns this action
507f1f77bcf86cd799439010Parent action plan identifier. Every action belongs to a plan.
507f1f77bcf86cd799439013Areas/hierarchies this action targets. Empty means company-wide scope.
64f8a0e2d5b7c9a1e3f4a5b6Groups this action targets.
64f8a0e2d5b7c9a1e3f4a5b6Scope of the action. MANAGER = individual manager action; COMPANY = cross-team action initiated by an admin.
MANAGERPossible values: How the action was originated. MANUAL = created by the user; SUGGESTION = proposed by a company action; AI = generated by the AI assistant.
MANUALPossible values: Visibility scope — PUBLIC means readable by any company manager; PRIVATE restricts to assignees/creator.
PRIVATEPossible values: Aggregate lifecycle status (computed from all assignee states).
IN_PROGRESSPossible values: Percentage of assignees who have individually reached COMPLETED status (0–100). Computed on-the-fly from assigneeStatuses; never stored.
50Target completion date
2025-06-30T23:59:59.000ZTimestamp when the first assignee moved to IN_PROGRESS
Timestamp when all assignees reached a terminal status
User who created this action
507f1f77bcf86cd799439012Creation timestamp
Last modification timestamp
Invalid field values, dueDate before creation date, or action is already closed
Action not found in this company
PATCH /api/v1/company/actions/{actionId} HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Content-Type: */*
Accept: */*
Content-Length: 373
{
"title": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"description": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"dueDate": "2025-09-30T23:59:59.000Z",
"source": "SUGGESTION",
"assignees": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"planId": "507f1f77bcf86cd799439013",
"visibility": "PUBLIC"
}{
"id": "507f1f77bcf86cd799439011",
"companyId": "507f1f77bcf86cd799439010",
"planId": "507f1f77bcf86cd799439013",
"plan": {
"id": "507f1f77bcf86cd799439013",
"title": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"description": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
}
},
"title": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"description": {
"defaultValue": "Happy birthday!",
"langValues": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"valid": true
},
"focusItems": [
{
"focusType": "SCORE",
"focusId": "text",
"targetValue": 1,
"targetTimestamp": "2026-01-01T00:00:00.000Z"
}
],
"assigneeStatuses": [
{
"assigneeId": "507f1f77bcf86cd799439011",
"status": "IN_PROGRESS",
"startedAt": "2026-01-01T00:00:00.000Z",
"completedAt": "2026-01-01T00:00:00.000Z"
}
],
"hierarchyIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"groupIds": [
"64f8a0e2d5b7c9a1e3f4a5b6"
],
"characteristics": [
{
"characteristicId": "64f8a0e2d5b7c9a1e3f4a5b6",
"id": "64f8a0e2d5b7c9a1e3f4a5b6",
"questionType": "DATE",
"value": true
}
],
"actionType": "MANAGER",
"source": "MANUAL",
"visibility": "PRIVATE",
"status": "IN_PROGRESS",
"completionPercent": 50,
"dueDate": "2025-06-30T23:59:59.000Z",
"startedAt": "2026-01-01T00:00:00.000Z",
"completedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "507f1f77bcf86cd799439012",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"notes": [
{
"id": "507f1f77bcf86cd799439020",
"authorId": "507f1f77bcf86cd799439015",
"content": "Feedback de la retro mejoró tras introducir los reconocimientos entre pares.",
"visibility": "SHARED",
"createdAt": "2026-01-01T00:00:00.000Z"
}
]
}Returns the impact document for a closed action, containing metric readings at three points in time: baseline (creation), at-closure, and the most recent periodic re-evaluation.
Scope: managers receive their own area-scoped snapshot; admins receive the global company-wide snapshot. Admins can also request a specific manager's scoped snapshot via the optional assigneeId parameter.
Returns 404 when the action has never been closed or the impact capture has not completed yet (it runs asynchronously after closure).
SessionId
Action identifier
64f8a0e2d5b7c9a1e3f4a5b6Admin only: request a specific manager's scoped impact snapshot instead of the global one
64f8a0e2d5b7c9a1e3f4a5b6Impact document found and returned
Impact measurement for a closed action, showing how the focus indicators evolved before, at and after the action was executed
Impact document identifier
507f1f77bcf86cd799439011Related action identifier
507f1f77bcf86cd799439012Manager this snapshot is scoped to. Null for the global company-wide snapshot.
507f1f77bcf86cd799439013Terminal state that triggered impact capture
COMPLETEDPossible values: When the action reached its terminal state
When the measurement window closes — no more re-evaluations after this date (closedAt + windowDays)
Number of periodic re-evaluations performed so far
3Timestamp of the most recent periodic re-evaluation
AI-generated, plain-language summary of the impact, scoped to what this caller sees. Null until the summary has been generated (see summaryStatus).
Generation status of the AI summary. When PENDING or RUNNING the client should re-request this endpoint to poll until COMPOSED.
COMPOSEDPossible values: Language the AI summary is (or will be) written in
esNo impact document for this action
GET /api/v1/company/actions/{actionId}/impact HTTP/1.1
Host: api.happyforce.com
SessionId: YOUR_API_KEY
Accept: */*
{
"id": "507f1f77bcf86cd799439011",
"actionId": "507f1f77bcf86cd799439012",
"assigneeId": "507f1f77bcf86cd799439013",
"closureStatus": "COMPLETED",
"closedAt": "2026-01-01T00:00:00.000Z",
"baseline": [
{
"focusType": "FACTOR",
"focusId": "recognition",
"value": 6.4,
"delta": 0.8,
"participantCount": 34,
"measuredAt": "2026-01-01T00:00:00.000Z",
"reliability": "MODERATE",
"normalizedDelta": 8,
"netDelta": 0.5,
"normalizedNetDelta": 5
}
],
"atClosure": [
{
"focusType": "FACTOR",
"focusId": "recognition",
"value": 6.4,
"delta": 0.8,
"participantCount": 34,
"measuredAt": "2026-01-01T00:00:00.000Z",
"reliability": "MODERATE",
"normalizedDelta": 8,
"netDelta": 0.5,
"normalizedNetDelta": 5
}
],
"latest": [
{
"focusType": "FACTOR",
"focusId": "recognition",
"value": 6.4,
"delta": 0.8,
"participantCount": 34,
"measuredAt": "2026-01-01T00:00:00.000Z",
"reliability": "MODERATE",
"normalizedDelta": 8,
"netDelta": 0.5,
"normalizedNetDelta": 5
}
],
"windowEndsAt": "2026-01-01T00:00:00.000Z",
"evaluationCount": 3,
"lastEvaluatedAt": "2026-01-01T00:00:00.000Z",
"impactSummary": "text",
"summaryStatus": "COMPOSED",
"summaryLanguage": "es"
}Last updated