AccessControl

Contains methods for handling user and village access control

APIDescription
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

APIDescription
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

APIDescription
POST api/Adapty/AdaptyCallback

Callback for Adapty webhook

Advertisements

Advertisements controller

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
GET api/Village/{village}/CarePlans/Definitions

Get Care Plan Definitions (all versions)

GET api/Village/{village}/CarePlans/Definitions/Active

Get Care Plan Definitions (active versions only)

GET api/Village/{village}/CarePlans/{carePlanId}/Active/Definition

Get specified Care Plan Definition (active version only)

GET api/Village/{village}/CarePlans/{carePlanId}/Definition

Get specified Care Plan Definition (all versions)

GET api/Village/{village}/CarePlans/{carePlanId}/{versionId}/Definition

Get specified Care Plan Definition version

GET api/Village/{village}/CarePlans?baseDate={baseDate}&withInactive={withInactive}&mockOnEmpty={mockOnEmpty}

Get all Care Plan instances

GET api/Village/{village}/CarePlans/{carePlanId}?baseDate={baseDate}&withInactive={withInactive}

Get all Care Plan instances for the specified care plan

GET api/Village/{village}/CarePlans/Current?withInactive={withInactive}

Get Care Plan instances for the current date

GET api/Village/{village}/CarePlans/{carePlanId}/Current?withInactive={withInactive}

Get Care Plan instances for the current date

POST api/Village/{village}/CarePlan/Definition

Save the care plan (may result in a new plan being created)

PUT api/Village/{village}/CarePlan

Answer a care plan question

DELETE api/Village/{village}/CarePlan/{id}?purgeData={purgeData}

Delete a care plan

Checklists

Checklists API methods

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
GET api/Village/{village}/Journal/Wellness

Gets the latest wellness check

GET api/Village/{village}/Journal/All?Id={Id}&Take={Take}&Skip={Skip}&Cutoff={Cutoff}

Get all journal entries

PUT api/Village/{village}/Journal

Provide a new journal entry for the village

PUT api/Village/{village}/Journal/{id}

Update an existing journal entry for the village

GET api/Village/{village}/Journal/WellnessTrends?Type={Type}&BaseDate={BaseDate}

Get Wellness Trends

GET api/Village/{village}/Journal/{id}/Photo

Download the photo for a photo journal entry

DELETE api/Village/{village}/Journal/{id}

Delete a journal entry

DELETE api/Village/{village}/Journal/{journalId}/Attachment/{id}

Delete the specified attachment

GET api/Village/{village}/Journal/Deletions?asOf={asOf}

Returns a list of deleted journal entry IDs

POST api/Village/{village}/Journal/{id}/Comment

Add a comment to a journal entry

PUT api/Village/{village}/Journal/{id}/Comment/{commentId}

Edit a comment on a journal entry

DELETE api/Village/{village}/Journal/{id}/Comment/{commentId}

Delete a comment on a journal entry

POST api/Village/{village}/Journal/{id}/Like

Like a journal entry

DELETE api/Village/{village}/Journal/{id}/Like

Remove like on a journal entry

POST api/Village/{village}/Journal/{id}/Comment/{commentId}/Like

Like a journal entry comment

DELETE api/Village/{village}/Journal/{id}/Comment/{commentId}/Like

Remove like on a journal entry comment

POST api/Village/{village}/Journal/{journalId}/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

GET api/Village/{village}/Journal/{journalId}/Attachment/{id}

Download the specified attachment

Login

Contains methods for logging in and logging out

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
GET api/Village/{village}/Resources

Get a list of resources available for the specified village, optionally filtered by Condition IDs

Stripe

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
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

APIDescription
GET api/Village/{village}/Weather

Get the weather forecast for the village

Wellness

Obsolete - Contains methods for handling wellness checks

APIDescription
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

APIDescription
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"