Post Types
Schema for posting content of different types.
Building your own type
Your type schema needs to have url
, version
, name
, description
, views
, and content
.
Name |
Required |
Type |
Description |
url |
Required |
String |
The schema url (e.g. https://tent.io/types/posts/video) |
version |
Required |
String |
See Semantic Versioning (e.g. "0.1.0") |
name |
Required |
String |
Name of the type (e.g. Video) |
description |
Required |
String |
A short description of the type (e.g. "Any video format") |
views |
Required |
Object |
JSON object defining views for the type. ignore and full are implied and don't need specifying, meta is required and should only include meta content keys. full includes all content keys, ignore is used to ask never to be sent this type of content. |
content |
Required |
Object |
JSON object defining possible content key/value pairs. |
For example, if you wanted to create a type for post cards the JSON schema might look like this:
{
"url": "https://tent.io/types/posts/post-card",
"version": "0.1.0",
"name": "Post Card",
"description": "Virtual post cards",
"views": {
"meta": ["geo", "photo.exif", "photo.filetype"],
"photo": ["photo", "geo"],
"message": ["text", "geo"],
},
"content": {
"text": "Grettings from Toronto",
"photo": {
"exif": {},
"binary": "...",
"filetype": "jpeg",
},
"geo": {
"lat": 43.753504,
"lng": -79.408326
}
}
}
Text
{
"url": "https://tent.io/types/posts/text",
"version": "1.0.0",
"name": "General Text Post",
"description": "Text-only blog post",
"views": {
"excerpt": ["excerpt"]
},
"content": {
"excerpt": "Snippet of full text...",
"text": "Full post text",
}
}
Content
Name |
Required |
Type |
Description |
excerpt |
Required |
String |
Short excerpt of text |
text |
Required |
String |
Full text of post |
HTML
{
"url": "https://tent.io/types/posts/html",
"version": "1.0.0",
"name": "HTML post",
"description": "HTML blog post",
"views": {
"excerpt": ["excerpt"]
},
"content": {
"excerpt": "Text only snippet of full HTML...",
"html": "Full post HTML",
"text": "Text only representation of HTML"
}
}
Content
Name |
Required |
Type |
Description |
excerpt |
Required |
String |
Short text-only excerpt of html |
html |
Required |
String |
Full HTML of post. Disallowed tags are link , script , and style |
text |
Optional |
String |
Text-only representation of HTML |
Status
{
"url": "https://tent.io/types/posts/status",
"version": "1.0.0",
"name": "Short status update",
"description": "160 character or less text post",
"views": {
},
"content": {
"text": "Omnis provident omnis. Et fuga error modi asperiores esse quis mollitia. In dignissimos odio molestiae qui. Nihil et consequuntur sed aperiam qui libero ##cupidit",
}
}
Content
Name |
Required |
Type |
Description |
text |
Required |
String |
plain text up to a limit of 160 character |
Delete
{
"url": "https://tent.io/types/posts/delete",
"version": "0.1.0",
"name": "Delete",
"description": "Delete existing post",
"views": {},
"content": {
"id": "entity-post-uid",
"entity": "entity.com"
}
}
Following
{
"url": "https://tent.io/types/posts/following",
"version": "0.1.0",
"name": "Following",
"description": "Describes an entity you are following",
"views": {},
"content": {
"action" "add",
"entity": "johnsmith.com"
"id": "your-uid-of-follower",
"groups" ["random-people"],
"name": "John Smith"
}
}
Name |
Required |
Type |
Description |
action |
Required |
String |
Possible values: add , remove , update |
entity |
Required |
String |
Any Tent hostname |
id |
Varies |
String |
The uid representing the following on your Tent server. Required when action is set to remove or update |
groups |
Optional |
Array |
List of group names attached to the following on your Tent server. |
name |
Optional |
String |
The name you use to reference the entity |
Follower
{
"url": "https://tent.io/types/posts/follower",
"version": "0.1.0",
"name": "Following",
"description": "Describes an entity that is following you",
"views": {},
"content": {
"action" "add",
"entity": "johnsmith.com",
"id": "your-uid-of-follower",
"groups" ["random-people"],
"name": "John Smith"
}
}
Name |
Required |
Type |
Description |
action |
Required |
String |
Possible values: add , remove , update |
entity |
Required |
String |
Any Tent hostname |
id |
Varies |
String |
The uid representing the follower on your Tent server. Required when action is set to remove or update |
groups |
Optional |
Array |
List of group names attached to the follower on your Tent server. |
name |
Optional |
String |
The name you use to reference the entity |
Photo
{
"url": "https://tent.io/types/posts/photo",
"version": "1.0.0",
"name": "Photo",
"description": "any format of photo",
"views": {
"meta": ["exif", "filetype", "caption", "album", "tags"]
},
"content": {
"exif": {
},
"binary": "...",
"filetype": "jpeg",
"caption": "Short description of photo",
"album": "travel",
"tags": ["motion", "dark"]
}
}
Content
Name |
Required |
Type |
Description |
exif |
Required |
Object |
exif key/value pairs |
filetype |
Required |
String |
Type of photo (e.g. png) |
binary |
Required |
String |
Base64 encoded photo binary |
caption |
Optional |
String |
Short description of photo (max of 160 characters) |
album |
Optional |
String |
Name of album photo belongs to |
tags |
Optional |
Array |
List of tags describing the photo |
Video
{
"url": "https://tent.io/types/posts/video",
"version": "1.0.0",
"name": "Video",
"description": "any format of video",
"views": {
"meta": ["exif", "filetype", "caption", "album", "tags", "length"]
},
"content": {
"exif": {
},
"binary": "...",
"filetype": "mpeg",
"caption": "Short description of video",
"album": "travel",
"tags": ["under the sun"],
"length": 160
}
}
Content
Name |
Required |
Type |
Description |
exif |
Required |
Object |
exif key/value pairs |
filetype |
Required |
String |
Type of video (e.g. mpeg) |
binary |
Required |
String |
Base64 encoded video binary |
caption |
Optional |
String |
Short description of video (max of 160 characters) |
album |
Optional |
String |
Name of album video belongs to |
tags |
Optional |
Array |
List of tags describing the video |
length |
Required |
Number |
Length of video in seconds |
Message
{
"url": "https://tent.io/types/posts/message",
"version": "1.0.0",
"name": "Message",
"description": "Tent equivalent of email",
"views": {
"meta": ["to", "cc", "bcc"]
},
"content": {
"to": ["johndoe.me", "briansmith.com"],
"cc": ["carla-laura.me"],
"bcc": [],
"attachments": [
{
"content_type": "jpeg",
"content_encoding": "base64",
"binary": "..."
}
]
}
}
Content
Name |
Required |
Type |
Description |
to |
Required |
Array |
List of entities to whom the message is to |
cc |
Optional |
Array |
List of entities who are carbon copied |
bcc |
Optional |
Array |
List of entities who are blind carbon copied (empty unless you are the sender) |
attachments |
Optional |
Array |
List of attachment objects |
Attachment Object
Name |
Required |
Type |
Description |
content_type |
Required |
String |
Type of attachment (e.g. pdf) |
content_encoding |
Required |
String |
Encoding of attachment binary |
binary |
Required |
String |
Encoded binary of attachment (see content_encoding ) |