@hailer/mcp 1.1.13 → 1.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/.claude/.context-watchdog.json +1 -0
  2. package/.claude/.session-checked +1 -0
  3. package/.claude/CLAUDE.md +370 -0
  4. package/.claude/agents/agent-ada-skill-builder.md +94 -0
  5. package/.claude/agents/agent-alejandro-function-fields.md +342 -0
  6. package/.claude/agents/agent-bjorn-config-audit.md +103 -0
  7. package/.claude/agents/agent-builder-agent-creator.md +130 -0
  8. package/.claude/agents/agent-code-simplifier.md +53 -0
  9. package/.claude/agents/agent-dmitri-activity-crud.md +159 -0
  10. package/.claude/agents/agent-giuseppe-app-builder.md +208 -0
  11. package/.claude/agents/agent-gunther-mcp-tools.md +39 -0
  12. package/.claude/agents/agent-helga-workflow-config.md +204 -0
  13. package/.claude/agents/agent-igor-activity-mover-automation.md +125 -0
  14. package/.claude/agents/agent-ingrid-doc-templates.md +261 -0
  15. package/.claude/agents/agent-ivan-monolith.md +154 -0
  16. package/.claude/agents/agent-kenji-data-reader.md +86 -0
  17. package/.claude/agents/agent-lars-code-inspector.md +102 -0
  18. package/.claude/agents/agent-marco-mockup-builder.md +110 -0
  19. package/.claude/agents/agent-marcus-api-documenter.md +323 -0
  20. package/.claude/agents/agent-marketplace-publisher.md +280 -0
  21. package/.claude/agents/agent-marketplace-reviewer.md +309 -0
  22. package/.claude/agents/agent-permissions-handler.md +208 -0
  23. package/.claude/agents/agent-simple-writer.md +48 -0
  24. package/.claude/agents/agent-svetlana-code-review.md +171 -0
  25. package/.claude/agents/agent-tanya-test-runner.md +333 -0
  26. package/.claude/agents/agent-ui-designer.md +100 -0
  27. package/.claude/agents/agent-viktor-sql-insights.md +212 -0
  28. package/.claude/agents/agent-web-search.md +55 -0
  29. package/.claude/agents/agent-yevgeni-discussions.md +45 -0
  30. package/.claude/agents/agent-zara-zapier.md +159 -0
  31. package/.claude/agents/ragnar.md +68 -0
  32. package/.claude/commands/app-squad.md +135 -0
  33. package/.claude/commands/audit-squad.md +158 -0
  34. package/.claude/commands/autoplan.md +563 -0
  35. package/.claude/commands/cleanup-squad.md +98 -0
  36. package/.claude/commands/config-squad.md +106 -0
  37. package/.claude/commands/crud-squad.md +87 -0
  38. package/.claude/commands/data-squad.md +97 -0
  39. package/.claude/commands/debug-squad.md +303 -0
  40. package/.claude/commands/doc-squad.md +65 -0
  41. package/.claude/commands/handoff.md +137 -0
  42. package/.claude/commands/health.md +49 -0
  43. package/.claude/commands/help.md +29 -0
  44. package/.claude/commands/help:agents.md +151 -0
  45. package/.claude/commands/help:commands.md +78 -0
  46. package/.claude/commands/help:faq.md +79 -0
  47. package/.claude/commands/help:plugins.md +50 -0
  48. package/.claude/commands/help:skills.md +93 -0
  49. package/.claude/commands/help:tools.md +75 -0
  50. package/.claude/commands/hotfix-squad.md +112 -0
  51. package/.claude/commands/integration-squad.md +82 -0
  52. package/.claude/commands/janitor-squad.md +167 -0
  53. package/.claude/commands/learn-auto.md +120 -0
  54. package/.claude/commands/learn.md +120 -0
  55. package/.claude/commands/mcp-list.md +27 -0
  56. package/.claude/commands/onboard-squad.md +140 -0
  57. package/.claude/commands/plan-workspace.md +732 -0
  58. package/.claude/commands/prd.md +130 -0
  59. package/.claude/commands/project-status.md +82 -0
  60. package/.claude/commands/publish.md +138 -0
  61. package/.claude/commands/recap.md +69 -0
  62. package/.claude/commands/restore.md +64 -0
  63. package/.claude/commands/review-squad.md +152 -0
  64. package/.claude/commands/save.md +24 -0
  65. package/.claude/commands/stats.md +19 -0
  66. package/.claude/commands/swarm.md +210 -0
  67. package/.claude/commands/tool-builder.md +39 -0
  68. package/.claude/commands/ws-pull.md +44 -0
  69. package/.claude/skills/SDK-activity-patterns/SKILL.md +428 -0
  70. package/.claude/skills/SDK-document-templates/SKILL.md +1033 -0
  71. package/.claude/skills/SDK-function-fields/SKILL.md +542 -0
  72. package/.claude/skills/SDK-generate-skill/SKILL.md +92 -0
  73. package/.claude/skills/SDK-init-skill/SKILL.md +127 -0
  74. package/.claude/skills/SDK-insight-queries/SKILL.md +787 -0
  75. package/.claude/skills/SDK-ws-config-skill/SKILL.md +1139 -0
  76. package/.claude/skills/agent-structure/SKILL.md +98 -0
  77. package/.claude/skills/api-documentation-patterns/SKILL.md +474 -0
  78. package/.claude/skills/chrome-mcp-reference/SKILL.md +370 -0
  79. package/.claude/skills/delegation-routing/SKILL.md +202 -0
  80. package/.claude/skills/frontend-design/SKILL.md +254 -0
  81. package/.claude/skills/hailer-activity-mover/SKILL.md +213 -0
  82. package/.claude/skills/hailer-api-client/SKILL.md +518 -0
  83. package/.claude/skills/hailer-app-builder/SKILL.md +1440 -0
  84. package/.claude/skills/hailer-apps-pictures/SKILL.md +269 -0
  85. package/.claude/skills/hailer-design-system/SKILL.md +231 -0
  86. package/.claude/skills/hailer-monolith-automations/SKILL.md +686 -0
  87. package/.claude/skills/hailer-permissions-system/SKILL.md +121 -0
  88. package/.claude/skills/hailer-project-protocol/SKILL.md +488 -0
  89. package/.claude/skills/hailer-rest-api/SKILL.md +61 -0
  90. package/.claude/skills/hailer-rest-api/hailer-activities.md +184 -0
  91. package/.claude/skills/hailer-rest-api/hailer-admin.md +473 -0
  92. package/.claude/skills/hailer-rest-api/hailer-calendar.md +256 -0
  93. package/.claude/skills/hailer-rest-api/hailer-feed.md +249 -0
  94. package/.claude/skills/hailer-rest-api/hailer-insights.md +195 -0
  95. package/.claude/skills/hailer-rest-api/hailer-messaging.md +276 -0
  96. package/.claude/skills/hailer-rest-api/hailer-workflows.md +283 -0
  97. package/.claude/skills/insight-join-patterns/SKILL.md +174 -0
  98. package/.claude/skills/integration-patterns/SKILL.md +421 -0
  99. package/.claude/skills/json-only-output/SKILL.md +72 -0
  100. package/.claude/skills/lsp-setup/SKILL.md +160 -0
  101. package/.claude/skills/mcp-direct-tools/SKILL.md +153 -0
  102. package/.claude/skills/optional-parameters/SKILL.md +72 -0
  103. package/.claude/skills/publish-hailer-app/SKILL.md +221 -0
  104. package/.claude/skills/testing-patterns/SKILL.md +630 -0
  105. package/.claude/skills/tool-builder/SKILL.md +250 -0
  106. package/.claude/skills/tool-parameter-usage/SKILL.md +126 -0
  107. package/.claude/skills/tool-response-verification/SKILL.md +92 -0
  108. package/.claude/skills/zapier-hailer-patterns/SKILL.md +581 -0
  109. package/.opencode/agent/agent-ada-skill-builder.md +35 -0
  110. package/.opencode/agent/agent-alejandro-function-fields.md +39 -0
  111. package/.opencode/agent/agent-bjorn-config-audit.md +36 -0
  112. package/.opencode/agent/agent-builder-agent-creator.md +39 -0
  113. package/.opencode/agent/agent-code-simplifier.md +31 -0
  114. package/.opencode/agent/agent-dmitri-activity-crud.md +40 -0
  115. package/.opencode/agent/agent-giuseppe-app-builder.md +37 -0
  116. package/.opencode/agent/agent-gunther-mcp-tools.md +39 -0
  117. package/.opencode/agent/agent-helga-workflow-config.md +204 -0
  118. package/.opencode/agent/agent-igor-activity-mover-automation.md +46 -0
  119. package/.opencode/agent/agent-ingrid-doc-templates.md +39 -0
  120. package/.opencode/agent/agent-ivan-monolith.md +46 -0
  121. package/.opencode/agent/agent-kenji-data-reader.md +53 -0
  122. package/.opencode/agent/agent-lars-code-inspector.md +28 -0
  123. package/.opencode/agent/agent-marco-mockup-builder.md +42 -0
  124. package/.opencode/agent/agent-marcus-api-documenter.md +53 -0
  125. package/.opencode/agent/agent-marketplace-publisher.md +44 -0
  126. package/.opencode/agent/agent-marketplace-reviewer.md +42 -0
  127. package/.opencode/agent/agent-permissions-handler.md +50 -0
  128. package/.opencode/agent/agent-simple-writer.md +45 -0
  129. package/.opencode/agent/agent-svetlana-code-review.md +39 -0
  130. package/.opencode/agent/agent-tanya-test-runner.md +57 -0
  131. package/.opencode/agent/agent-ui-designer.md +56 -0
  132. package/.opencode/agent/agent-viktor-sql-insights.md +34 -0
  133. package/.opencode/agent/agent-web-search.md +42 -0
  134. package/.opencode/agent/agent-yevgeni-discussions.md +37 -0
  135. package/.opencode/agent/agent-zara-zapier.md +53 -0
  136. package/.opencode/commands/app-squad.md +135 -0
  137. package/.opencode/commands/audit-squad.md +158 -0
  138. package/.opencode/commands/autoplan.md +563 -0
  139. package/.opencode/commands/cleanup-squad.md +98 -0
  140. package/.opencode/commands/config-squad.md +106 -0
  141. package/.opencode/commands/crud-squad.md +87 -0
  142. package/.opencode/commands/data-squad.md +97 -0
  143. package/.opencode/commands/debug-squad.md +303 -0
  144. package/.opencode/commands/doc-squad.md +65 -0
  145. package/.opencode/commands/handoff.md +137 -0
  146. package/.opencode/commands/health.md +49 -0
  147. package/.opencode/commands/help-agents.md +151 -0
  148. package/.opencode/commands/help-commands.md +32 -0
  149. package/.opencode/commands/help-faq.md +29 -0
  150. package/.opencode/commands/help-plugins.md +28 -0
  151. package/.opencode/commands/help-skills.md +7 -0
  152. package/.opencode/commands/help-tools.md +40 -0
  153. package/.opencode/commands/help.md +28 -0
  154. package/.opencode/commands/hotfix-squad.md +112 -0
  155. package/.opencode/commands/integration-squad.md +82 -0
  156. package/.opencode/commands/janitor-squad.md +167 -0
  157. package/.opencode/commands/learn-auto.md +120 -0
  158. package/.opencode/commands/learn.md +120 -0
  159. package/.opencode/commands/mcp-list.md +27 -0
  160. package/.opencode/commands/onboard-squad.md +140 -0
  161. package/.opencode/commands/plan-workspace.md +732 -0
  162. package/.opencode/commands/prd.md +131 -0
  163. package/.opencode/commands/project-status.md +82 -0
  164. package/.opencode/commands/publish.md +138 -0
  165. package/.opencode/commands/recap.md +69 -0
  166. package/.opencode/commands/restore.md +64 -0
  167. package/.opencode/commands/review-squad.md +152 -0
  168. package/.opencode/commands/save.md +24 -0
  169. package/.opencode/commands/stats.md +19 -0
  170. package/.opencode/commands/swarm.md +210 -0
  171. package/.opencode/commands/tool-builder.md +39 -0
  172. package/.opencode/commands/ws-pull.md +44 -0
  173. package/.opencode/opencode.json +21 -0
  174. package/package.json +1 -1
  175. package/scripts/postinstall.cjs +64 -0
  176. package/scripts/test-hal-tools.ts +154 -0
@@ -0,0 +1,184 @@
1
+ # Hailer Activities API
2
+
3
+ Execute Hailer activity (row) operations via REST API.
4
+
5
+ ## Base URL
6
+ - **Production:** `https://api.hailer.com/api`
7
+ - **Staging:** `https://api.hailer.biz/api`
8
+
9
+ ## Authentication
10
+ All requests require `hlrkey` header with session key.
11
+
12
+ ---
13
+
14
+ ## Core Operations (v3)
15
+
16
+ ### Create Activity
17
+ ```bash
18
+ curl -X POST "https://api.hailer.com/api/v3/activity/create" \
19
+ -H "Content-Type: application/json" \
20
+ -H "hlrkey: YOUR_SESSION_KEY" \
21
+ -d '["WORKFLOW_ID", {"name": "Activity Name", "fields": {"fieldId": "value"}}]'
22
+ ```
23
+
24
+ ### Create Many Activities
25
+ ```bash
26
+ curl -X POST "https://api.hailer.com/api/v3/activity/createMany" \
27
+ -H "Content-Type: application/json" \
28
+ -H "hlrkey: YOUR_SESSION_KEY" \
29
+ -d '["WORKFLOW_ID", [{"name": "Activity 1"}, {"name": "Activity 2"}]]'
30
+ ```
31
+
32
+ ### Update Many Activities
33
+ ```bash
34
+ curl -X POST "https://api.hailer.com/api/v3/activity/updateMany" \
35
+ -H "Content-Type: application/json" \
36
+ -H "hlrkey: YOUR_SESSION_KEY" \
37
+ -d '[[{"_id": "ACTIVITY_ID", "name": "Updated Name", "fields": {"fieldId": "newValue"}}]]'
38
+ ```
39
+
40
+ **GOTCHA:** All activities in the update array must belong to the same workflow. If updating activities across multiple workflows, make separate `updateMany` calls per workflow.
41
+
42
+ ### List Activities
43
+ ```bash
44
+ curl -X POST "https://api.hailer.com/api/v3/activity/list" \
45
+ -H "Content-Type: application/json" \
46
+ -H "hlrkey: YOUR_SESSION_KEY" \
47
+ -d '[{"processId": "WORKFLOW_ID", "phaseId": "PHASE_ID"}, {"limit": 50}]'
48
+ ```
49
+
50
+ ### Count Activities
51
+ ```bash
52
+ curl -X POST "https://api.hailer.com/api/v3/activity/count" \
53
+ -H "Content-Type: application/json" \
54
+ -H "hlrkey: YOUR_SESSION_KEY" \
55
+ -d '["WORKFLOW_ID"]'
56
+ ```
57
+
58
+ ### Get Activity Permissions
59
+ ```bash
60
+ curl -X POST "https://api.hailer.com/api/v3/activity/permissions" \
61
+ -H "Content-Type: application/json" \
62
+ -H "hlrkey: YOUR_SESSION_KEY" \
63
+ -d '["USER_ID", "WORKSPACE_ID"]'
64
+ ```
65
+
66
+ ---
67
+
68
+ ## Kanban Operations (v3)
69
+
70
+ ### Load Kanban for Activity
71
+ ```bash
72
+ curl -X POST "https://api.hailer.com/api/v3/activity/kanban/load" \
73
+ -H "Content-Type: application/json" \
74
+ -H "hlrkey: YOUR_SESSION_KEY" \
75
+ -d '["ACTIVITY_ID"]'
76
+ ```
77
+
78
+ ### List Kanban Activities
79
+ ```bash
80
+ curl -X POST "https://api.hailer.com/api/v3/activity/kanban/list" \
81
+ -H "Content-Type: application/json" \
82
+ -H "hlrkey: YOUR_SESSION_KEY" \
83
+ -d '["WORKFLOW_ID", {"phaseId": "PHASE_ID"}]'
84
+ ```
85
+
86
+ ---
87
+
88
+ ## Timeline & Events (v3)
89
+
90
+ ### Get Timeline
91
+ ```bash
92
+ curl -X POST "https://api.hailer.com/api/v3/activity/timeline" \
93
+ -H "Content-Type: application/json" \
94
+ -H "hlrkey: YOUR_SESSION_KEY" \
95
+ -d '[START_TIMESTAMP, END_TIMESTAMP, {"workflowIds": ["WF_ID"]}]'
96
+ ```
97
+
98
+ ### Get Events
99
+ ```bash
100
+ curl -X POST "https://api.hailer.com/api/v3/activity/events" \
101
+ -H "Content-Type: application/json" \
102
+ -H "hlrkey: YOUR_SESSION_KEY" \
103
+ -d '[START_TIMESTAMP, END_TIMESTAMP, {}]'
104
+ ```
105
+
106
+ ---
107
+
108
+ ## Linked Activities (v3)
109
+
110
+ ### Get Linked From Overview
111
+ ```bash
112
+ curl -X POST "https://api.hailer.com/api/v3/activity/linkedFrom/overview" \
113
+ -H "Content-Type: application/json" \
114
+ -H "hlrkey: YOUR_SESSION_KEY" \
115
+ -d '["ACTIVITY_ID"]'
116
+ ```
117
+
118
+ ### Search Linked Activities
119
+ ```bash
120
+ curl -X POST "https://api.hailer.com/api/v3/activity/linkedFrom/search" \
121
+ -H "Content-Type: application/json" \
122
+ -H "hlrkey: YOUR_SESSION_KEY" \
123
+ -d '["ACTIVITY_ID", "search term"]'
124
+ ```
125
+
126
+ ---
127
+
128
+ ## Deleted Activities (v3)
129
+
130
+ ### View Removed Activities
131
+ ```bash
132
+ curl -X POST "https://api.hailer.com/api/v3/activity/removed/overview" \
133
+ -H "Content-Type: application/json" \
134
+ -H "hlrkey: YOUR_SESSION_KEY" \
135
+ -d '[["PHASE_ID_1", "PHASE_ID_2"]]'
136
+ ```
137
+
138
+ ### Recover Removed Activities
139
+ ```bash
140
+ curl -X POST "https://api.hailer.com/api/v3/activity/removed/recover" \
141
+ -H "Content-Type: application/json" \
142
+ -H "hlrkey: YOUR_SESSION_KEY" \
143
+ -d '[["ACTIVITY_ID_1", "ACTIVITY_ID_2"]]'
144
+ ```
145
+
146
+ ---
147
+
148
+ ## Import (v3)
149
+
150
+ ### Import Activities from File
151
+ ```bash
152
+ curl -X POST "https://api.hailer.com/api/v3/activity/import" \
153
+ -H "Content-Type: application/json" \
154
+ -H "hlrkey: YOUR_SESSION_KEY" \
155
+ -d '["FILE_ID", {"workflowId": "WF_ID", "phaseId": "PHASE_ID"}]'
156
+ ```
157
+
158
+ ---
159
+
160
+ ## Legacy Operations (v2) - Use if v3 not available
161
+
162
+ ### Copy Activities
163
+ ```bash
164
+ curl -X POST "https://api.hailer.com/api/v2/activities/copy" \
165
+ -H "Content-Type: application/json" \
166
+ -H "hlrkey: YOUR_SESSION_KEY" \
167
+ -d '[["ACTIVITY_ID_1", "ACTIVITY_ID_2"]]'
168
+ ```
169
+
170
+ ### Check Name Uniqueness
171
+ ```bash
172
+ curl -X POST "https://api.hailer.com/api/v2/activities/nameIsUnique" \
173
+ -H "Content-Type: application/json" \
174
+ -H "hlrkey: YOUR_SESSION_KEY" \
175
+ -d '["WORKFLOW_ID", "Activity Name"]'
176
+ ```
177
+
178
+ ---
179
+
180
+ ## Notes
181
+ - Timestamps are milliseconds since Unix epoch
182
+ - Activity fields use fieldId as key, not field name
183
+ - Phase determines activity state/status
184
+ - workflowId = processId (legacy naming)
@@ -0,0 +1,473 @@
1
+ # Hailer Admin API
2
+
3
+ Execute Hailer workspace administration operations via REST API.
4
+
5
+ ## Base URL
6
+ - **Production:** `https://api.hailer.com/api`
7
+ - **Staging:** `https://api.hailer.biz/api`
8
+
9
+ ## Authentication
10
+ All requests require `hlrkey` header with session key.
11
+
12
+ ---
13
+
14
+ ## Authentication & Session
15
+
16
+ ### Login (v3)
17
+ ```bash
18
+ curl -X POST "https://api.hailer.com/api/v3/login" \
19
+ -H "Content-Type: application/json" \
20
+ -d '["user@email.com", "password"]'
21
+ ```
22
+ Returns session key to use as `hlrkey` header.
23
+
24
+ ### Resume Session (v3)
25
+ ```bash
26
+ curl -X POST "https://api.hailer.com/api/v3/resume" \
27
+ -H "Content-Type: application/json" \
28
+ -H "hlrkey: YOUR_SESSION_KEY" \
29
+ -d '[]'
30
+ ```
31
+
32
+ ### Logout
33
+ ```bash
34
+ curl -X POST "https://api.hailer.com/api/core/logout" \
35
+ -H "Content-Type: application/json" \
36
+ -H "hlrkey: YOUR_SESSION_KEY" \
37
+ -d '[]'
38
+ ```
39
+
40
+ ### OAuth Logins (v3)
41
+ ```bash
42
+ # Google
43
+ curl -X POST "https://api.hailer.com/api/v3/loginGoogle" \
44
+ -H "Content-Type: application/json" \
45
+ -d '["GOOGLE_TOKEN"]'
46
+
47
+ # Microsoft
48
+ curl -X POST "https://api.hailer.com/api/v3/loginMicrosoft" \
49
+ -H "Content-Type: application/json" \
50
+ -d '["MICROSOFT_TOKEN"]'
51
+
52
+ # Apple
53
+ curl -X POST "https://api.hailer.com/api/v3/loginApple" \
54
+ -H "Content-Type: application/json" \
55
+ -d '["APPLE_TOKEN"]'
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Workspace (Network) Management (v2)
61
+
62
+ ### Create Workspace
63
+ ```bash
64
+ curl -X POST "https://api.hailer.com/api/v2/network/create" \
65
+ -H "Content-Type: application/json" \
66
+ -H "hlrkey: YOUR_SESSION_KEY" \
67
+ -d '[{"name": "My Workspace"}]'
68
+ ```
69
+
70
+ ### Get Workspace
71
+ ```bash
72
+ curl -X POST "https://api.hailer.com/api/v2/network/get" \
73
+ -H "Content-Type: application/json" \
74
+ -H "hlrkey: YOUR_SESSION_KEY" \
75
+ -d '["WORKSPACE_ID"]'
76
+ ```
77
+
78
+ ### Update Workspace
79
+ ```bash
80
+ curl -X POST "https://api.hailer.com/api/v2/network/update" \
81
+ -H "Content-Type: application/json" \
82
+ -H "hlrkey: YOUR_SESSION_KEY" \
83
+ -d '["WORKSPACE_ID", {"name": "Updated Name", "description": "..."}]'
84
+ ```
85
+
86
+ ### Copy Workspace
87
+ ```bash
88
+ curl -X POST "https://api.hailer.com/api/v2/network/copy" \
89
+ -H "Content-Type: application/json" \
90
+ -H "hlrkey: YOUR_SESSION_KEY" \
91
+ -d '["WORKSPACE_ID", {"name": "Copy of Workspace"}]'
92
+ ```
93
+
94
+ ### Get License Info
95
+ ```bash
96
+ curl -X POST "https://api.hailer.com/api/v2/network/license/get" \
97
+ -H "Content-Type: application/json" \
98
+ -H "hlrkey: YOUR_SESSION_KEY" \
99
+ -d '["WORKSPACE_ID"]'
100
+ ```
101
+
102
+ ### Get Restrictions
103
+ ```bash
104
+ curl -X POST "https://api.hailer.com/api/v2/network/restrictions" \
105
+ -H "Content-Type: application/json" \
106
+ -H "hlrkey: YOUR_SESSION_KEY" \
107
+ -d '["WORKSPACE_ID"]'
108
+ ```
109
+
110
+ ---
111
+
112
+ ## User Invitations (v2)
113
+
114
+ ### List Pending Invitations
115
+ ```bash
116
+ curl -X POST "https://api.hailer.com/api/v2/network/invite/list" \
117
+ -H "Content-Type: application/json" \
118
+ -H "hlrkey: YOUR_SESSION_KEY" \
119
+ -d '["WORKSPACE_ID"]'
120
+ ```
121
+
122
+ ### Send Invitation
123
+ ```bash
124
+ curl -X POST "https://api.hailer.com/api/v2/network/invite/send" \
125
+ -H "Content-Type: application/json" \
126
+ -H "hlrkey: YOUR_SESSION_KEY" \
127
+ -d '["WORKSPACE_ID", {"email": "user@email.com", "role": "member"}]'
128
+ ```
129
+
130
+ ### Resend Invitation
131
+ ```bash
132
+ curl -X POST "https://api.hailer.com/api/v2/network/invite/resend" \
133
+ -H "Content-Type: application/json" \
134
+ -H "hlrkey: YOUR_SESSION_KEY" \
135
+ -d '["INVITE_ID"]'
136
+ ```
137
+
138
+ ### Edit Invitation
139
+ ```bash
140
+ curl -X POST "https://api.hailer.com/api/v2/network/invite/edit" \
141
+ -H "Content-Type: application/json" \
142
+ -H "hlrkey: YOUR_SESSION_KEY" \
143
+ -d '["INVITE_ID", {"role": "admin"}]'
144
+ ```
145
+
146
+ ### Remove Invitation
147
+ ```bash
148
+ curl -X POST "https://api.hailer.com/api/v2/network/invite/remove" \
149
+ -H "Content-Type: application/json" \
150
+ -H "hlrkey: YOUR_SESSION_KEY" \
151
+ -d '["INVITE_ID"]'
152
+ ```
153
+
154
+ ---
155
+
156
+ ## Roles (v3)
157
+
158
+ ### Create Role
159
+ ```bash
160
+ curl -X POST "https://api.hailer.com/api/v3/network/role/create" \
161
+ -H "Content-Type: application/json" \
162
+ -H "hlrkey: YOUR_SESSION_KEY" \
163
+ -d '["WORKSPACE_ID", {"name": "Custom Role", "permissions": ["view", "edit"]}]'
164
+ ```
165
+
166
+ ### List Roles
167
+ ```bash
168
+ curl -X POST "https://api.hailer.com/api/v3/network/role/list" \
169
+ -H "Content-Type: application/json" \
170
+ -H "hlrkey: YOUR_SESSION_KEY" \
171
+ -d '["WORKSPACE_ID"]'
172
+ ```
173
+
174
+ ### Update Role
175
+ ```bash
176
+ curl -X POST "https://api.hailer.com/api/v3/network/role/update" \
177
+ -H "Content-Type: application/json" \
178
+ -H "hlrkey: YOUR_SESSION_KEY" \
179
+ -d '["ROLE_ID", {"name": "Updated Role", "permissions": ["view"]}]'
180
+ ```
181
+
182
+ ### Remove Role
183
+ ```bash
184
+ curl -X POST "https://api.hailer.com/api/v3/network/role/remove" \
185
+ -H "Content-Type: application/json" \
186
+ -H "hlrkey: YOUR_SESSION_KEY" \
187
+ -d '["ROLE_ID"]'
188
+ ```
189
+
190
+ ---
191
+
192
+ ## Apps (v3)
193
+
194
+ ### Create App
195
+ ```bash
196
+ curl -X POST "https://api.hailer.com/api/v3/app/create" \
197
+ -H "Content-Type: application/json" \
198
+ -H "hlrkey: YOUR_SESSION_KEY" \
199
+ -d '["WORKSPACE_ID", {"name": "My App", "url": "https://myapp.com"}]'
200
+ ```
201
+
202
+ ### List Apps
203
+ ```bash
204
+ curl -X POST "https://api.hailer.com/api/v3/app/list" \
205
+ -H "Content-Type: application/json" \
206
+ -H "hlrkey: YOUR_SESSION_KEY" \
207
+ -d '["WORKSPACE_ID"]'
208
+ ```
209
+
210
+ ### Update App
211
+ ```bash
212
+ curl -X POST "https://api.hailer.com/api/v3/app/update" \
213
+ -H "Content-Type: application/json" \
214
+ -H "hlrkey: YOUR_SESSION_KEY" \
215
+ -d '["APP_ID", {"name": "Updated App Name"}]'
216
+ ```
217
+
218
+ ### Remove App
219
+ ```bash
220
+ curl -X POST "https://api.hailer.com/api/v3/app/remove" \
221
+ -H "Content-Type: application/json" \
222
+ -H "hlrkey: YOUR_SESSION_KEY" \
223
+ -d '["APP_ID"]'
224
+ ```
225
+
226
+ ### Add App Member
227
+ ```bash
228
+ curl -X POST "https://api.hailer.com/api/v3/app/member/add" \
229
+ -H "Content-Type: application/json" \
230
+ -H "hlrkey: YOUR_SESSION_KEY" \
231
+ -d '["APP_ID", {"userId": "USER_ID"}]'
232
+ ```
233
+
234
+ ### Remove App Member
235
+ ```bash
236
+ curl -X POST "https://api.hailer.com/api/v3/app/member/remove" \
237
+ -H "Content-Type: application/json" \
238
+ -H "hlrkey: YOUR_SESSION_KEY" \
239
+ -d '["APP_ID", {"userId": "USER_ID"}]'
240
+ ```
241
+
242
+ ### Update App Config
243
+ ```bash
244
+ curl -X POST "https://api.hailer.com/api/v3/app/config/update" \
245
+ -H "Content-Type: application/json" \
246
+ -H "hlrkey: YOUR_SESSION_KEY" \
247
+ -d '["APP_ID", {"config": {"key": "value"}}]'
248
+ ```
249
+
250
+ ---
251
+
252
+ ## User Management
253
+
254
+ ### Load Current User
255
+ ```bash
256
+ curl -X POST "https://api.hailer.com/api/user/load" \
257
+ -H "Content-Type: application/json" \
258
+ -H "hlrkey: YOUR_SESSION_KEY" \
259
+ -d '[]'
260
+ ```
261
+
262
+ ### Update User Info
263
+ ```bash
264
+ curl -X POST "https://api.hailer.com/api/user/set_user_info" \
265
+ -H "Content-Type: application/json" \
266
+ -H "hlrkey: YOUR_SESSION_KEY" \
267
+ -d '[{"firstname": "John", "lastname": "Doe", "title": "Developer"}]'
268
+ ```
269
+
270
+ ### Save User Settings
271
+ ```bash
272
+ curl -X POST "https://api.hailer.com/api/user/save_settings" \
273
+ -H "Content-Type: application/json" \
274
+ -H "hlrkey: YOUR_SESSION_KEY" \
275
+ -d '[{"language": "en", "timezone": "Europe/Helsinki"}]'
276
+ ```
277
+
278
+ ### Change Password
279
+ ```bash
280
+ curl -X POST "https://api.hailer.com/api/user/change_password" \
281
+ -H "Content-Type: application/json" \
282
+ -H "hlrkey: YOUR_SESSION_KEY" \
283
+ -d '["OLD_PASSWORD", "NEW_PASSWORD"]'
284
+ ```
285
+
286
+ ### Get User Profile (v2)
287
+ ```bash
288
+ curl -X POST "https://api.hailer.com/api/v2/user/profile" \
289
+ -H "Content-Type: application/json" \
290
+ -H "hlrkey: YOUR_SESSION_KEY" \
291
+ -d '["USER_ID"]'
292
+ ```
293
+
294
+ ### Get User Permissions (v3)
295
+ ```bash
296
+ curl -X POST "https://api.hailer.com/api/v3/user/permissions" \
297
+ -H "Content-Type: application/json" \
298
+ -H "hlrkey: YOUR_SESSION_KEY" \
299
+ -d '["USER_ID", "WORKSPACE_ID"]'
300
+ ```
301
+
302
+ ---
303
+
304
+ ## Registration (v3)
305
+
306
+ ### Register New User
307
+ ```bash
308
+ curl -X POST "https://api.hailer.com/api/v3/user/register" \
309
+ -H "Content-Type: application/json" \
310
+ -d '[{"email": "user@email.com", "password": "password123", "firstname": "John", "lastname": "Doe"}]'
311
+ ```
312
+
313
+ ### Accept Invitation (v2)
314
+ ```bash
315
+ curl -X POST "https://api.hailer.com/api/v2/user/invite/accept" \
316
+ -H "Content-Type: application/json" \
317
+ -H "hlrkey: YOUR_SESSION_KEY" \
318
+ -d '["INVITE_TOKEN"]'
319
+ ```
320
+
321
+ ---
322
+
323
+ ## Teams (Company)
324
+
325
+ ### Create Team
326
+ ```bash
327
+ curl -X POST "https://api.hailer.com/api/company/create_team" \
328
+ -H "Content-Type: application/json" \
329
+ -H "hlrkey: YOUR_SESSION_KEY" \
330
+ -d '[{"name": "Engineering", "cid": "WORKSPACE_ID"}]'
331
+ ```
332
+
333
+ ### Update Team
334
+ ```bash
335
+ curl -X POST "https://api.hailer.com/api/company/set_team_data" \
336
+ -H "Content-Type: application/json" \
337
+ -H "hlrkey: YOUR_SESSION_KEY" \
338
+ -d '["TEAM_ID", {"name": "Updated Team Name"}]'
339
+ ```
340
+
341
+ ### Update Team Users
342
+ ```bash
343
+ curl -X POST "https://api.hailer.com/api/company/update_team_users" \
344
+ -H "Content-Type: application/json" \
345
+ -H "hlrkey: YOUR_SESSION_KEY" \
346
+ -d '["TEAM_ID", {"add": ["USER_ID_1"], "remove": ["USER_ID_2"]}]'
347
+ ```
348
+
349
+ ### Remove Team
350
+ ```bash
351
+ curl -X POST "https://api.hailer.com/api/company/remove_team" \
352
+ -H "Content-Type: application/json" \
353
+ -H "hlrkey: YOUR_SESSION_KEY" \
354
+ -d '["TEAM_ID"]'
355
+ ```
356
+
357
+ ---
358
+
359
+ ## Groups (Network Groups)
360
+
361
+ ### Create Group
362
+ ```bash
363
+ curl -X POST "https://api.hailer.com/api/network/group/create" \
364
+ -H "Content-Type: application/json" \
365
+ -H "hlrkey: YOUR_SESSION_KEY" \
366
+ -d '[{"name": "Partners", "cid": "WORKSPACE_ID"}]'
367
+ ```
368
+
369
+ ### Get Group
370
+ ```bash
371
+ curl -X POST "https://api.hailer.com/api/network/group/get" \
372
+ -H "Content-Type: application/json" \
373
+ -H "hlrkey: YOUR_SESSION_KEY" \
374
+ -d '["GROUP_ID"]'
375
+ ```
376
+
377
+ ### Update Group
378
+ ```bash
379
+ curl -X POST "https://api.hailer.com/api/network/group/update" \
380
+ -H "Content-Type: application/json" \
381
+ -H "hlrkey: YOUR_SESSION_KEY" \
382
+ -d '["GROUP_ID", {"name": "Updated Group"}]'
383
+ ```
384
+
385
+ ### Remove Group
386
+ ```bash
387
+ curl -X POST "https://api.hailer.com/api/network/group/remove" \
388
+ -H "Content-Type: application/json" \
389
+ -H "hlrkey: YOUR_SESSION_KEY" \
390
+ -d '["GROUP_ID"]'
391
+ ```
392
+
393
+ ---
394
+
395
+ ## Files
396
+
397
+ ### Upload File
398
+ ```bash
399
+ curl -X POST "https://api.hailer.com/upload" \
400
+ -H "hlrkey: YOUR_SESSION_KEY" \
401
+ -H "Content-Type: multipart/form-data" \
402
+ -F "data=@/path/to/file.pdf"
403
+ ```
404
+ Returns `{"_id": "FILE_ID"}` on success.
405
+
406
+ ### List Files
407
+ ```bash
408
+ curl -X POST "https://api.hailer.com/api/files/list" \
409
+ -H "Content-Type: application/json" \
410
+ -H "hlrkey: YOUR_SESSION_KEY" \
411
+ -d '[{"cid": "WORKSPACE_ID"}]'
412
+ ```
413
+
414
+ ### Get File Properties
415
+ ```bash
416
+ curl -X POST "https://api.hailer.com/api/files/get_file_properties" \
417
+ -H "Content-Type: application/json" \
418
+ -H "hlrkey: YOUR_SESSION_KEY" \
419
+ -d '["FILE_ID"]'
420
+ ```
421
+
422
+ ### Remove Files
423
+ ```bash
424
+ curl -X POST "https://api.hailer.com/api/files/remove_files" \
425
+ -H "Content-Type: application/json" \
426
+ -H "hlrkey: YOUR_SESSION_KEY" \
427
+ -d '[["FILE_ID_1", "FILE_ID_2"]]'
428
+ ```
429
+
430
+ ---
431
+
432
+ ## Tags (v2)
433
+
434
+ ### List Tags
435
+ ```bash
436
+ curl -X POST "https://api.hailer.com/api/v2/tags/list" \
437
+ -H "Content-Type: application/json" \
438
+ -H "hlrkey: YOUR_SESSION_KEY" \
439
+ -d '["WORKSPACE_ID"]'
440
+ ```
441
+
442
+ ### Add Tag
443
+ ```bash
444
+ curl -X POST "https://api.hailer.com/api/v2/tags/manage/add" \
445
+ -H "Content-Type: application/json" \
446
+ -H "hlrkey: YOUR_SESSION_KEY" \
447
+ -d '["WORKSPACE_ID", {"name": "Important", "color": "#FF0000"}]'
448
+ ```
449
+
450
+ ### Tag an Object
451
+ ```bash
452
+ curl -X POST "https://api.hailer.com/api/v2/tags/tag" \
453
+ -H "Content-Type: application/json" \
454
+ -H "hlrkey: YOUR_SESSION_KEY" \
455
+ -d '["OBJECT_ID", "TAG_ID"]'
456
+ ```
457
+
458
+ ### Untag an Object
459
+ ```bash
460
+ curl -X POST "https://api.hailer.com/api/v2/tags/untag" \
461
+ -H "Content-Type: application/json" \
462
+ -H "hlrkey: YOUR_SESSION_KEY" \
463
+ -d '["OBJECT_ID", "TAG_ID"]'
464
+ ```
465
+
466
+ ---
467
+
468
+ ## Notes
469
+ - Workspace = Network = Company (legacy naming)
470
+ - Teams are internal groups within a workspace
471
+ - Groups (network groups) can include external users
472
+ - All IDs are 24-character MongoDB ObjectIds
473
+ - Session keys expire after inactivity