API

Social

This document will help you understand and use the social features of the novem platform

AI assisted, human approved — novem uses AI to review and keep our documentation up to date.

Novem offers a basic set of social features to help you connect with and stay up to date on other novem users.

The primary purpose of the social features is to populate the feed, the primary discoverability feature of the novem platform.

You primarily manage the social features under the /admin/social endpoints with feed entries showing up under the top level /feed endpoint.

Below is an overview of the API endpoints associated with the social features.

 ├── admin
 │   ├── invites
 │   │   └── @eve
 │   │       └── accept
 │   └── social
 │       ├── connections
 │       │   ├── alice
 │       │   └── bob
 │       ├── followers
 │       │   └── charlie
 │       ├── following
 │       │   ├── charlie
 │       │   └── mike
 │       └── ignore
 │           └── dave
 └── feed
     ├── @charlie~plot~daily_weather
     ├── @charlie~plot~email_use
     ├── @mike~mail~px_report
     └── @mike~plot~power_prices

The feed is the primary discoverability feature at novem and is curated for you by the platform. Whilst the exact algorithm is not disclosed and changes often, the primary input to your feed is content produced by other users in your network.

The feed is accessible at the top level of the API under the /feed end point and contains a list of links of the following format: @username~vis_type~vis_name. The entities link to the respective vis by the user.

You will only find one reference to a specific vis in your feed, but the vis can move up or down in your feed if it gets updated or other relevance scores change.

When viewing a user you can find that users chronological feed under the feed endpoint. e.g. /users/<username>/feed.

└── users
    └── <username>
        └── feed
            ├── @example~mail~test_mail
            ├── @example~plot~test_plot_1
            └── @example~plot~test_plot_2

User feeds are always chronological and can be thought of as an activity feed.

Your network on novem is made up of 3 classes of connections:

  • Users that you are connected with
  • Users that you follow
  • Users that you share a group or organisation membership with

In addition your extended network can consist of 2nd and 3rd degree connections as well as be inspired by things you have liked or favourited.

Note: In all feed folders the expected sort order is ascending by the order property. All consumers of the novem API are responsible for sorting by this property if you want to consume the feed output in its intended order.

By default, all assets produced on the novem platform that a user can access through the default permission structure (public or shared via group) is eligible for inclusion in feed.

To keep an in-progress visualisation out of your own feed (because it's not ready, or you simply don't want to see it there yet) you can tag it with wip. The wip tag hides the item from your own feed view; it does not remove it from other users' feeds.

A user will never see a visualisation in their feed that they don't have access to, so private assets are always private.

Novem offers two primary social constructs, a way to connect with and a way to follow other users. The connection is an invitation that has to be accepted by the other user, whereas the follow is a one-way action.

Connections and follows does not grant any additional access or other features at this moment, but might be expanded in the future.

To see the information from a user the user will have to make that information public or share it with a group that you both are a member of.

Connections is the highest order of 1:1 relationships offered by novem.

A connection has to be accepted on both sides and who your connections are will show up on your public profile. (People with private profiles will not show up unless they have a strong connection with the person viewing your profile).

To make a new connection simply PUT the username you want to connect with to the connection group

PUT/v1/admin/social/connections/<username>

Once you have initiated a connection the user will get an invitation to connect which they will have to approve by posting a positive value to the invitation.

POST/v1/admin/invites/@<your_username>/accept
Yes

Until a user accepts your invitation to connect the user will show up in the list of your connections with an I- (capital I dash) prefix. (Examples below)

 └── admin
     └── social
         └── connections
             ├── I-alice
             ├── bob
             └── eve

You can at any point remove your connection with a user by issuing a DELETE against an existing user invite or endpoint.

DELETE/v1/admin/social/connections/<username>

Connecting with people are a privilege and excessive invite spamming, frequent retries or other unwanted behaviour may result in your ability to connect being curtailed.

Unlike connecting, follow is a lighter touch, one-way action. You may follow or un-follow anyone you want at any time. In addition, following someone does not require their approval, and as such no invite or acceptance is required.

Managing who you follow is very similar to managing your connections, you use PUT to follow and DELETE to un-follow.

PUT/v1/admin/social/following/<username>
DELETE/v1/admin/social/following/<username>

Followers is a list of people following you and is provided for informational purposes only. We don't currently support the ability for you to remove your followers or moderate the list in any way.

Your followers don't interact with you in any way beyond having access to your public assets in their feed.

Ignore lets you manage a list of users you do not want to relate to. When a user is in the ignore list you will not receive invites, messages, notifications or see other information left by the user.

Ignored users will also never show up in your feed.

You manage your ignore list very similar to your following list, simply PUT to add a user and DELETE to remove a user from your ignore list.

PUT/v1/admin/social/ignore/<username>
DELETE/v1/admin/social/ignore/<username>

Invites are managed under /v1/admin/invites. The same tree holds three related things: the connection invitations you've received, the personal e-mail invitations you send to bring new people to novem, and (on paid plans) reusable invite URLs.

A GET on /v1/admin/invites lists everything together: inbound connection invites, your pending personal invites, and your invite URLs.

When someone invites you to connect, the invite appears under /v1/admin/invites/@<their_username>. Accept it by posting a positive value to its accept file (shown in Connections above). The same pattern handles inbound invitations generally.

A personal invitation brings a new person to novem by e-mail. The e-mail address is the resource id:

VerbPathDescription
PUT/v1/admin/invites/:emailSend an invitation to that e-mail address
DELETE/v1/admin/invites/:emailRevoke a pending invitation
GET/v1/admin/social/invitesList invitations that have been accepted (your invite history)
PUT / DELETE/v1/admin/social/invites/:emailEquivalent send / revoke under the social tree

Pending (not-yet-accepted) invitations show up in the GET /v1/admin/invites listing. Once accepted they move to /v1/admin/social/invites. Each send draws down your account's invite quota.

An invite URL is a named, reusable signup link, useful for a meetup or a campaign where you don't know the addresses up front. You create a handle, novem mints an opaque public URL, and anyone who visits it submits their e-mail and joins as your invitee.

Note: invite URLs require a paid subscription. Free accounts can't create them, while basic, premium, and enterprise each allow up to 3 active handles.

VerbPathDescription
PUT/v1/admin/invites/:handleCreate an invite-URL handle; optional JSON body {quota, expiry, description}
GET/v1/admin/invites/:handleThe handle's folder
DELETE/v1/admin/invites/:handleDeactivate the handle
GET/v1/admin/invites/:handle/infoAggregated state: active, url, quota, expiry, description, pending and accepted lists
GET/v1/admin/invites/:handle/urlThe public URL
POST / GET/v1/admin/invites/:handle/quotaPer-URL signup cap (bare integer)
POST / GET/v1/admin/invites/:handle/expirynever, an interval, or an absolute timestamp (in your profile timezone)
POST / GET/v1/admin/invites/:handle/descriptionFree-form owner-facing context
POST/v1/invite/:tokenPublic, no auth — an external visitor submits their e-mail here to accept

Each landed signup decrements both the URL's own quota and your account-level invite quota, so a URL can't outrun either limit.

Currently there are two ways that you can interact with other users published visualisations. You can either like or favourite them.

This is done using the novem tag functionality and behaves just as normal tags. The only difference is that aggregate like and favourite statistics are reported on various visualisations.

To like or favourite a visualisation just follow the instructions in the tags documentation.

If you see anything in the feed you do not want to see again, you can also ignore it by tagging it with the ignore tag.