AccessControl
Contains methods for handling user and village access control
API | Description |
---|---|
GET api/Village/{village}/AccessControl |
Get Access Control settings for the village |
PUT api/Village/{village}/AccessControl |
Set Access Control settings for the village |
Account
API controller for managing existing accounts
API | Description |
---|---|
PUT api/Account/Password |
Change (or set, if no password is set) the logged-in user's password |
DELETE api/Account/External/{provider} |
Remove a social login from the user's account |
POST api/Account/External |
Add a social login to the user's account |
PUT api/Account/GcmId?confirm={confirm} |
Sets the Google Cloud Messaging (GCM) id for the user/device |
DELETE api/Account/GcmId |
Clears the Google Cloud Messaging (GCM) id for the user/device |
PUT api/Account/ApnsId?confirm={confirm} |
Sets the Apple Push Notification Service (APNS) id for the user/device |
DELETE api/Account/ApnsId |
Clears the Apple Push Notification Service (APNS) id for the user/device |
Adapty
Adapty webhook controller
API | Description |
---|---|
POST api/Adapty/AdaptyCallback |
Callback for Adapty webhook |
Advertisements
Advertisements controller
API | Description |
---|---|
GET api/Village/{village}/Advertisements |
Get list of advertisements for the village |
GET api/Advertisements/{id}/Photo |
Download the advertisement image for the specified ad |
POST api/Village/{village}/Advertisements/{id}/Click |
Track advertisement click |
POST api/Village/{village}/Advertisements/{id}/View |
Track advertisement view |
GET api/Advertisements/Interval |
Get advertisement interval for journals |
AI
AI API Calls
API | Description |
---|---|
GET api/Village/{village}/AI/History?asOf={asOf} |
Get AI chat history for the user |
POST api/Village/{village}/AI/Message |
Post a new AI chat history message |
DELETE api/Village/{village}/AI/History |
Clear AI chat history for the user |
POST api/Village/{village}/AI/Proxy/Chat |
Proxy to OpenAI Chat |
Apple
API methods for signing in using Apple authentication
API | Description |
---|---|
POST apple/sign-up |
Sign up using Apple authentication |
POST apple/sign-in |
Sign in using Apple authentication |
Avatar
Contains methods for handling user and village avatars
API | Description |
---|---|
GET api/Village/{village}/Avatar |
Get the specified village's avatar. |
POST api/Village/{village}/Avatar?crop={crop} |
Sets the avatar for the specified village. This method must be called with multipart/form-data encoding for the file.<br><br> The request payload for the image MUST have Content-Disposition and Content-Type headers. The 'name' in the Content-Disposition header MUST be "avatar": <ul> <li>Content-Disposition: form-data; name="avatar"; filename="whatever-you-want"</li> <li>Content-Type: mime/type</li> </ul> |
DELETE api/Village/{village}/Avatar |
Delete the avatar for the specified village |
GET api/Avatar/Default |
Get the default avatar for places where a user-specific avatar is not applicable |
GET api/Avatar/{id} |
Get the specified user's avatar. |
POST api/Avatar?crop={crop} |
Sets the avatar for the logged-in user. This method must be called with multipart/form-data encoding for the file.<br><br> The request payload for the image MUST have Content-Disposition and Content-Type headers. The 'name' in the Content-Disposition header MUST be "avatar": <ul> <li>Content-Disposition: form-data; name="avatar"; filename="whatever-you-want"</li> <li>Content-Type: mime/type</li> </ul> |
DELETE api/Avatar |
Delete the avatar for the logged-in user |
CarePlan
Care Plan API methods
Checklists
Checklists API methods
API | Description |
---|---|
GET api/Checklists/All |
Return all checklists in all categories for this village (full data dump) |
GET api/Village/{village}/Checklists/Categories?depth={depth} |
Return a list of Checklist Categories to the specified depth, with Village data |
GET api/Village/{village}/Checklists/Category/{categoryId}?depth={depth} |
Return a single Checklist Category to the specified depth, with Village data |
GET api/Village/{village}/Checklists/{categoryId}?depth={depth} |
Returns a list of Checklists in the specified category, to the specified depth, with Village data |
GET api/Village/{village}/Checklist/{checklistId}?depth={depth} |
Returns a single Checklist to the specified depth, with Village data |
GET api/Village/{village}/Checklist/{checklistId}/Items |
Returns a list of Checklist Items in the specified Checklist, with Village data |
GET api/Village/{village}/Checklist/{checklistId}/Answers |
Returns a list of the village's checklist answers for the specified checklist |
GET api/Village/{village}/Checklist/AllAnswers |
Returns a list of the village's checklist answers for all checklists |
PUT api/Village/{village}/Checklist/{checklistId} |
Sets the status of one or more items in a checklist |
Conditions
Resources and Conditions
API | Description |
---|---|
GET api/Village/{village}/Conditions |
Get the list of conditions selected for the village |
POST api/Village/{village}/Conditions |
Set village conditions |
GET api/Conditions?commonOnly={commonOnly} |
Get all conditions available for selection |
Contacts
Contacts controller
API | Description |
---|---|
GET api/Contacts/Categories |
Get Contact Categories |
GET api/Contacts/InfoTypes |
Get Contact Info Types |
GET api/Village/{village}/Contacts |
Get all contacts |
POST api/Village/{village}/Contacts |
Create a new contact |
POST api/Village/{village}/Contacts/Import |
Import multiple contacts |
PUT api/Village/{village}/Contacts/{id} |
Edit an existing contact |
DELETE api/Village/{village}/Contacts/{id} |
Delete a contact |
Conversation
Conversation (Messaging) API calls
API | Description |
---|---|
GET api/Village/{village}/Conversations?archived={archived} |
Get a list of conversations in the village |
HEAD api/Village/{village}/Conversation/{conversationId} |
OBSOLETE |
GET api/Village/{village}/Conversation/{conversationId}?MessageSequence={MessageSequence}&Take={Take}&Direction={Direction}&RequireFullPage={RequireFullPage}&UpdateLastRead={UpdateLastRead} |
Gets messages in the specified conversation. If MessageId is NOT provided (or is the same as the user's last-read message) AND SortDirection = Asc, the user's last-read indicator will be updated to match the last message in the result set If the result set is empty, there are (currently) no more records in the direction being retrieved. If SortDirection = Desc and there are no more records, you've reached the beginning of the conversation |
GET api/Village/{village}/Conversation/{conversationId}/Metadata |
Get the Conversation List entry for the specified conversation in the village |
PUT api/Village/{village}/Conversation |
Send a message in a specified conversation or to a specified user or to the village's default conversation. Specify ConversationId OR TargetUserId OR neither of them. If ConversationId is specified, TargetUserId is ignored. |
DELETE api/Village/{village}/Conversation/{conversationId}?leave={leave} |
Archive a conversation |
PUT api/Village/{village}/Conversation/{conversationId}/Restore |
Restore a conversation |
PUT api/Village/{village}/Conversation/{conversationId} |
Update the user's Last Read indicator for the conversation |
GET api/Conversation/NewMessageCounts |
Returns the number of new messages per village |
POST api/Village/{village}/Conversation/GroupConversation |
Creates a group conversation in a village |
PUT api/Village/{village}/Conversation/{conversationId}/Member |
Add one or more members to an existing Group conversation |
PUT api/Village/{village}/Conversation/{conversationId}/Title |
Change the title/subject of a group conversation |
GET api/Village/{village}/Conversation/{conversationId}/Members |
Get a list of current members in a conversation |
Documents
Documents API methods
API | Description |
---|---|
GET api/Village/{village}/Documents?lastUpdated={lastUpdated} |
Get all documents |
GET api/Village/{village}/Documents/Deletions?asOf={asOf} |
Returns a list of deleted document IDs |
GET api/Village/{village}/Document/{id} |
Download the specified document |
DELETE api/Village/{village}/Document/{id} |
Delete the specified document |
GET api/Documents/Categories |
Returns a pre-sorted list of document categories |
GET api/Documents/ContentTypes |
Returns a list of content types |
POST api/Village/{village}/Document |
Upload a document. This method MUST be called with multipart/form-data encoding for the file.<br><br> The request payload for the image MUST have Content-Disposition and Content-Type headers. The 'name' in the Content-Disposition header MUST be "file": <ul> <li>Content-Disposition: form-data; name="file"; filename="whatever-you-want"</li> <li>Content-Type: mime/type</li> </ul> |
PUT api/Village/{village}/Document/{id} |
Update a document. If the existing file is being replaced, this method MUST be called with multipart/form-data encoding for the file<br><br> If the existing file is being replaced, the request payload for the image MUST have Content-Disposition and Content-Type headers. The 'name' in the Content-Disposition header MUST be "file": <ul> <li>Content-Disposition: form-data; name="file"; filename="whatever-you-want"</li> <li>Content-Type: mime/type</li> </ul> |
GET api/Village/{village}/Links?lastUpdated={lastUpdated} |
Get all links |
GET api/Village/{village}/Links/Deletions?asOf={asOf} |
Returns a list of deleted document IDs |
DELETE api/Village/{village}/Link/{id} |
Delete the specified document |
POST api/Village/{village}/Link |
Create a link. |
PUT api/Village/{village}/Link/{id} |
Update a link. |
GET api/Village/{village}/Folders |
Returns a list of document folders for the village |
POST api/Village/{village}/Folder |
Create a new document folder for the village |
PUT api/Village/{village}/Folder/{id} |
Update (e.g. rename) a document folder in a village |
DELETE api/Village/{village}/Folder/{id} |
Delete a document folder in a village |
Event
Events API
API | Description |
---|---|
POST api/Village/{village}/Event |
Create a new event |
PUT api/Village/{village}/Event/{activityId} |
Edit an existing event |
DELETE api/Village/{village}/Event/{activityId}?dateTime={dateTime} |
Cancel an event instance / deletes an event |
GET api/Village/{village}/Events/Deletions?asOf={asOf} |
Returns a list of deleted event IDs |
GET api/Village/{village}/Events |
Get events matching specified criteria |
GET api/Village/{village}/Event/{activityId}?withHistory={withHistory} |
Get a specific event |
GET api/Village/{village}/Event/{activityId}/Attachment/{id} |
Download the specified attachment |
GET api/Village/{village}/Events/Pdf?isLandscape={isLandscape} |
Exports events matching specified criteria to PDF document |
PUT api/Village/{village}/Event/{activityId}/Comment |
Add a comment to a event |
DELETE api/Village/{village}/Event/{activityId}/Comment/{commentId} |
Delete a comment from an event |
PUT api/Village/{village}/Event/{activityId}/Assign |
Adds the specified users to the existing event assignment |
POST api/Village/{village}/Event/{activityId}/Assign |
Backwards Compatability Only - Adds the specified users to the existing event assignment |
PUT api/Village/{village}/Event/{activityId}/Comment/{id} |
Edit an event comment |
POST api/Village/{village}/Event/{activityId}/Attachment |
Upload an attachment. This method MUST be called with multipart/form-data encoding for the file. The request payload for the image MUST have Content-Disposition and Content-Type headers. The 'name' in the Content-Disposition header MUST be "file": Content-Disposition: form-data; name="file"; filename="whatever-you-want"Content-Type: mime/type |
DELETE api/Village/{village}/Event/{activityId}/Attachment/{id} |
Delete the specified attachment |
Invitation
API controller for Village Invitation actions
API | Description |
---|---|
POST api/Village/{village}/Invite |
Invite one or more villagers to the specified village |
DELETE api/Village/{village}/Cancel?id={id} |
Cancel an invitation |
PUT api/Village/{village}/Resend?id={id} |
Resend an invitation |
GET api/Invitation/{code} |
Get the details of an invitation based on its invitation code |
GET api/Invitation |
Get a list of the user's invitations |
PUT api/Invitation/{id} |
Accept an invitation |
DELETE api/Invitation/{id} |
Reject an invitation |
GET api/Village/{village}/Invitations |
Get a list of pending invitations for the specified village |
GET api/Invitation/ByVillage?name={name} |
Check for an invitation for the current user for a village named 'name' |
Journal
Contains methods for handling journal entries
Login
Contains methods for logging in and logging out
API | Description |
---|---|
POST api/Login/External |
Sign In using external token authentication |
GET api/Login/ForgotPassword?email={email}&returnUrl={returnUrl} |
Initiate Password Recovery email |
POST api/Login/ResetPassword |
Reset password using an emailed code |
GET api/Login/EmailConfirmation?email={email}&returnUrl={returnUrl} |
Re-send email address confirmation email |
GET api/Login/ConfirmEmail?code={code} |
Confirm user's email address (account creation) or pending email (email address change) |
GET api/Login/SSOToken?clientId={clientId} |
Retrieve an SSO Token for passing to the Web |
POST api/Login |
Sign In using password authentication |
DELETE api/Login |
Log the user out. Deletes the sign in cookie |
Lookups
Controller for miscellaneous non-village lookups
API | Description |
---|---|
GET api/Lookups/Configuration |
Returns a set of configuration values suitable for client consumption |
GET api/Lookups/CountriesAndStates |
Returns a list of countries and their associated states |
GET api/Lookups/Moods |
Return a list of journal entry Moods |
GET api/Lookups/Symptoms?commonOnly={commonOnly} |
Get all conditions available for selection |
GET api/Lookups/Conditions?commonOnly={commonOnly} |
Get all conditions available for selection |
GET api/Lookups/LinkCategories |
Returns a pre-sorted list of link categories |
Medications
Medications API methods
API | Description |
---|---|
GET api/Village/{village}/Medications |
Get all medications |
GET api/Village/{village}/Medication/{id}/Pill |
Download the pill photo for the specified medication |
GET api/Village/{village}/Medication/{id}/Label |
Download the label photo for the specified medication |
DELETE api/Village/{village}/Medication/{id} |
Delete the specified medication |
POST api/Village/{village}/Medication |
Add a medication. If photos are included, this method MUST be called with multipart/form-data encoding for the file.<br><br> The request payload for the image MAY include a pill photo, which MUST have Content-Disposition and Content-Type headers. The 'name' in the Content-Disposition header MUST be "pillphoto": <ul> <li>Content-Disposition: form-data; name="pillphoto"; filename="whatever-you-want"</li> <li>Content-Type: mime/type</li> </ul> The request payload for the image MAY include a label photo, which MUST have Content-Disposition and Content-Type headers. The 'name' in the Content-Disposition header MUST be "labelphoto": <ul> <li>Content-Disposition: form-data; name="labelphoto"; filename="whatever-you-want"</li> <li>Content-Type: mime/type</li> </ul> |
PUT api/Village/{village}/Medication/{id} |
Update a medication. If the existing photos are being replaced, this method MUST be called with multipart/form-data encoding for the file<br><br> The request payload for the image MAY include a pill photo, which MUST have Content-Disposition and Content-Type headers. The 'name' in the Content-Disposition header MUST be "pillphoto": <ul> <li>Content-Disposition: form-data; name="pillphoto"; filename="whatever-you-want"</li> <li>Content-Type: mime/type</li> </ul> The request payload for the image MAY include a label photo, which MUST have Content-Disposition and Content-Type headers. The 'name' in the Content-Disposition header MUST be "labelphoto": <ul> <li>Content-Disposition: form-data; name="labelphoto"; filename="whatever-you-want"</li> <li>Content-Type: mime/type</li> </ul> |
PUT api/Village/{village}/Medication/{id}/Photos |
Update medication photos. This method MUST be called with multipart/form-data encoding for the file<br><br> The request payload for the image MAY include a pill photo, which MUST have Content-Disposition and Content-Type headers. The 'name' in the Content-Disposition header MUST be "pillphoto": <ul> <li>Content-Disposition: form-data; name="pillphoto"; filename="whatever-you-want"</li> <li>Content-Type: mime/type</li> </ul> The request payload for the image MAY include a label photo, which MUST have Content-Disposition and Content-Type headers. The 'name' in the Content-Disposition header MUST be "labelphoto": <ul> <li>Content-Disposition: form-data; name="labelphoto"; filename="whatever-you-want"</li> <li>Content-Type: mime/type</li> </ul> |
PUT api/Village/{village}/Medication/{id}/Taken |
Log a medication as taken |
DELETE api/Village/{village}/Medication/{id}/Taken |
Unlog a medication as taken |
Members
Contains API methods for interacting with village members
API | Description |
---|---|
GET api/Members/Roles |
Get a list of roles |
GET api/Village/{village}/Villagers?withInvitations={withInvitations} |
OBSOLETE: Get a list of villagers for the specified village This method has been replaced by the 'GET Members' API call in this section, and the 'GET Invitations' API call in the Invitation section |
GET api/Village/{village}/Members |
Get a list of villagers for the specified village |
PUT api/Village/{village}/Members/Role |
Change a villager's role within the selected village |
DELETE api/Village/{village}/Members/{villagerId} |
Delete a member from a village (also Leave a village, if memberId == current user) |
Monitor
Used for site monitoring
API | Description |
---|---|
GET api/Monitor/Ping?pingKey={pingKey} |
Ping the API |
GET api/Monitor/ApiVersion |
Return API version information |
GET |
Null method |
Preferences
Contains API methods for managing the user's profile
API | Description |
---|---|
GET api/Preferences/Definitions |
Get a dictionary of preference definitions (name, value, title, etc.) |
GET api/Preferences/DefinitionsList |
Get a list of preference definitions (name, value, title, etc.) |
PUT api/Preferences/{villageId} |
Updates the current user's preferences for the specified village |
DELETE api/Preferences/{villageId} |
Resets the current user's preferences for the specified village to the system defaults |
GET api/Preferences/Marketing |
Get user marketing preferences |
GET api/Preferences |
Get the current user's preferences |
POST api/Preferences |
Set user marketing preference |
Profile
Contains API methods for managing the user's profile
API | Description |
---|---|
PUT api/Profile/Email |
Change the current user's email address. Email address change requires followup confirmation via link sent to new email address |
DELETE api/Profile/PendingEmail |
Cancel a pending email change for the user. Has no effect if the user does not have a pending email address change |
GET api/Profile |
Retrieve the current user's profile |
PUT api/Profile |
Update the current user's profile |
RBAC
Role Based Access Control (RBAC) methods
API | Description |
---|---|
GET api/RBAC |
Get RBAC settings for village |
PUT api/RBAC |
Update RBAC settings for village |
Register
Contains methods for logging in and logging out
API | Description |
---|---|
POST api/Register/External |
SignUp using an external login source (Google, facebook, etc.) |
POST api/Register |
Sign Up using an email address and password |
Resources
Resources and Conditions
API | Description |
---|---|
GET api/Village/{village}/Resources |
Get a list of resources available for the specified village, optionally filtered by Condition IDs |
Stripe
API | Description |
---|---|
GET api/Stripe/GetSessionSecret |
Create customer session |
POST api/Stripe/CreateCheckoutSession |
No documentation available. |
POST api/Stripe/CreatePortalSession |
No documentation available. |
POST api/Stripe/CreateCustomer |
Create customer |
GET api/Stripe/SearchCustomer |
Search customer |
POST api/Stripe/webhook |
Stripe Webhook |
Subscription
Contains methods for handling billing and subscriptions
API | Description |
---|---|
GET api/Subscription/Plans |
Get list of subscription plans |
GET api/Subscription/History |
Get user's subscription history |
PUT api/Subscription/Downgrade |
Downgrade subscription by identifying villages and villagers to keep. Any village not in the villages list will be cancelled. Any villager not in the villagers list for a village will be Revoked. |
GET api/Subscription |
Get details of user's current subscription |
Task
Tasks API
API | Description |
---|---|
POST api/Village/{village}/Task |
Create a new task |
PUT api/Village/{village}/Task/{activityId} |
Edit an existing task |
GET api/Village/{village}/Tasks |
Get tasks matching specified criteria |
GET api/Village/{village}/Task/{activityId}?withHistory={withHistory} |
Get a specific task |
GET api/Village/{village}/Task/{activityId}/Attachment/{id} |
Download the specified attachment |
PUT api/Village/{village}/Task/{activityId}/Comment |
Add a comment to a task |
DELETE api/Village/{village}/Task/{activityId}/Comment/{commentId} |
Delete a comment from an task |
GET api/Village/{village}/Tasks/Deletions?asOf={asOf} |
Returns a list of deleted Task IDs |
PUT api/Village/{village}/Task/{activityId}/Assign |
Adds the specified users to the existing task assignment |
POST api/Village/{village}/Task/{activityId}/Assign |
Backwards Compatability Only - Adds the specified users to the existing task assignment |
PUT api/Village/{village}/Task/{activityId}/Complete |
Mark a task as completed |
PUT api/Village/{village}/Task/{activityId}/Comment/{id} |
Edit a task comment |
DELETE api/Village/{village}/Task/{id} |
Delete a task |
DELETE api/Village/{village}/Task/{activityId}/Attachment/{id} |
Delete the specified attachment |
POST api/Village/{village}/Task/{activityId}/Attachment |
Upload an attachment. This method MUST be called with multipart/form-data encoding for the file. The request payload for the image MUST have Content-Disposition and Content-Type headers. The 'name' in the Content-Disposition header MUST be "file": Content-Disposition: form-data; name="file"; filename="whatever-you-want"Content-Type: mime/type |
TransferOwnership
API methods for transferring village ownership
API | Description |
---|---|
GET api/Village/{village}/TransferOwnership/GetOwnerCandidates?withRevoked={withRevoked} |
Get list of users who can become the owner. |
GET api/Village/{village}/TransferOwnership |
Get the current ownership transfer request for the specified village (if any) |
GET api/TransferOwnership/All?justMine={justMine} |
Get all ownership transfer requests targetting the current user |
POST api/Village/{village}/TransferOwnership/{candidateId} |
Submit an ownership transfer request to the specified user |
PUT api/Village/{village}/TransferOwnership |
Re-send the current village transfer request |
DELETE api/Village/{village}/TransferOwnership |
Cancel the current village transfer request |
POST api/TransferOwnership/Respond |
Respond to village ownership transfer request |
VillageBuilder
Village Builder controller
API | Description |
---|---|
GET api/Village/{village}/VillageBuilder |
Get Village Builder status for the specified village (includes user setup tasks) |
PUT api/Village/{village}/VillageBuilder/{step}/Skip |
Mark a village builder step as skipped |
PUT api/Village/{village}/VillageBuilder/{step}/Complete |
Mark a village builder step as completed |
PUT api/Village/{village}/VillageBuilder/Dismiss |
Dismiss the village builder (marks all steps as skipped) |
Villages
API controller for basic Village actions
API | Description |
---|---|
PUT api/Village/{village} |
Edit a village |
GET api/Village/{village} |
Get a specific village the user is a member of |
GET api/Village/{village}/Deletions?asOf={asOf} |
Returns a list of deleted village data IDs |
GET api/Village/Roles |
[OBSOLETE] Get a list of roles. Replaced by similar call in Members section. Currently returns HTTP 301 moved permanently. |
GET api/Village/{village}/RemovalData |
Get village summary data for removal dialog |
DELETE api/Village/{village} |
Remove (Delete) Village |
POST api/Villages |
Create a Village |
GET api/Villages?withExpired={withExpired}&lastUpdated={lastUpdated} |
Get a list of all villages the user is a member of |
Walkthrough
Controller for What's New
API | Description |
---|---|
GET api/Village/{village}/Walkthrough |
Get Walkthrough steps for the current village |
GET api/Walkthrough/{id}/Image |
Download the walkthrough image for the specified walkthrough step |
GET api/Walkthrough/Complete |
Gets the status indicator for whether the walkthrough has been completed for the current user (USER walkthrough, not Village setup) |
POST api/Walkthrough/Complete?isComplete={isComplete} |
Sets (or clears) the status indicator for walkthrough completion for the current user (USER walkthrough, not Village setup) |
Weather
API methods for getting weather information
API | Description |
---|---|
GET api/Village/{village}/Weather |
Get the weather forecast for the village |
Wellness
Obsolete - Contains methods for handling wellness checks
API | Description |
---|---|
GET api/Village/{village}/Wellness |
Gets the latest wellness check |
GET api/Village/{village}/Wellness/All?Id={Id}&Take={Take}&Skip={Skip}&Cutoff={Cutoff} |
Get all wellness checks |
PUT api/Village/{village}/Wellness |
Provide a new wellness check for the village |
WhatsNew
Controller for What's New
API | Description |
---|---|
GET api/Village/{village}/WhatsNew |
Get What's New for the current user |
PUT api/Village/{village}/WhatsNew/Viewed |
Update the user's What's New Viewed date |
GET api/WhatsNew/{id}/Image |
Download the image for the specified "What's New" |