{
"post_id": "91e0c0a1-f563-45a2-81c5-8e0a8b223cc1",
"id": "https://iconicity-part2.herokuapp.com/author/4d6c1e57-d977-4fed-91fb-691b87a7ccb5/posts/91e0c0a1-f563-45a2-81c5-8e0a8b223cc1",
"title": "12312",
"type": "post",
"source": "https://iconicity-part2.herokuapp.com/author/4d6c1e57-d977-4fed-91fb-691b87a7ccb5/posts/91e0c0a1-f563-45a2-81c5-8e0a8b223cc1",
"origin": "https://iconicity-part2.herokuapp.com/author/4d6c1e57-d977-4fed-91fb-691b87a7ccb5/posts/91e0c0a1-f563-45a2-81c5-8e0a8b223cc1",
"description": "123123",
"contentType": "text/plain",
"author": {
"type": "author",
"id": "https://iconicity-part2.herokuapp.com/author/4d6c1e57-d977-4fed-91fb-691b87a7ccb5",
"url": "https://iconicity-part2.herokuapp.com/author/4d6c1e57-d977-4fed-91fb-691b87a7ccb5",
"host": "iconicity-part2.herokuapp.com",
"displayName": "MichaelQi",
"github": "https://github.com/MichaelQi11"
},
"content": "123123",
"visibility": "PUBLIC",
"categories": {},
"unlisted": false,
"image": "/media/images/G_z2AGWa.jpg",
"like": [],
"external_likes": {},
"count": 0,
"size": 0,
"published": "2021-04-01T01:43:37.964271Z",
"host": "",
"like_count": 0,
"comments": [],
"author_display_name": "MichaelQi"
}
}
-
Inbox
- URL:/author/{AUTHOR_ID}/inbox
- GET: if authenticated get a list of posts sent to {AUTHOR_ID}
- POST: send a comment, like or follow to the author
- if the type is “comment” then add that comment to the author’s inbox
Ex. requests.post(full_postinbox_url, data={"obj":json.dumps(comment_object_serialized)},
auth=HTTPBasicAuth(auth_user, auth_pass))
- if the type is “follow” then add that follow is added to the author’s inbox to approve later
Ex. requests.post(full_followee_url, data={"obj":json.dumps(frd_request_objectr_serialized)},
auth=HTTPBasicAuth(auth_user, auth_pass))
- if the type is “like” then add that like to the author’s inbox
Ex. requests.post(full_postinbox_url, data={"obj":json.dumps(like_object_serialized)},
auth=HTTPBasicAuth(auth_user, auth_pass))
The detailed structure of each project can be found in the following specific sections.
- Example:
GET https://iconicity-part2.herokuapp.com/author/4d6c1e57-d977-4fed-91fb-691b87a7ccb5/inbox
{ "items": [],
"author": "https://iconicity-part2.herokuapp.com/author/4d6c1e57-d977-4fed-91fb-691b87a7ccb5",
"type": "inbox"
}
{"type": "author",
"id": "https://iconicity-part2.herokuapp.com/author/4d6c1e57-d977-4fed-91fb-691b87a7ccb5",
"url": "https://iconicity-part2.herokuapp.com/author/4d6c1e57-d977-4fed-91fb-691b87a7ccb5",
"host": "iconicity-part2.herokuapp.com",
"displayName": "MichaelQi",
"github": "https://github.com/MichaelQi11"
}
-
Followers
- URL:/author/{AUTHOR_ID}/followers
- GET: get a list of authors who are their followers
- URL:/author/{AUTHOR_ID}/followers/{FOREIGN_AUTHOR_ID}
- GET check if follower
- Example: GET:/author/{AUTHOR_ID}/followers
{
"type": "followers",
"items":[
{
"type":"author",
"id":"http://127.0.0.1:5454/author/1d698d25ff008f7538453c120f581471",
"url":"http://127.0.0.1:5454/author/1d698d25ff008f7538453c120f581471",
"host":"http://127.0.0.1:5454/",
"displayName":"Greg Johnson",
"github": "http://github.com/gjohnson"
},
{
"type":"author",
"id":"http://127.0.0.1:5454/author/9de17f29c12e8f97bcbbd34cc908f1baba40658e",
"host":"http://127.0.0.1:5454/",
"displayName":"Lara Croft",
"url":"http://127.0.0.1:5454/author/9de17f29c12e8f97bcbbd34cc908f1baba40658e",
"github": "http://github.com/laracroft"
}
]
}
-
FriendRequest
- This allows someone to follow you, so you can send them your posts.
- Sent to inbox
- Example format:
{
"type": "Follow",
"summary":"Greg wants to follow Lara",
"actor":{
"type":"author",
"id":"http://127.0.0.1:5454/author/1d698d25ff008f7538453c120f581471",
"url":"http://127.0.0.1:5454/author/1d698d25ff008f7538453c120f581471",
"host":"http://127.0.0.1:5454/",
"displayName":"Greg Johnson",
"github": "http://github.com/gjohnson"
},
"object":{
"type":"author",
# ID of the Author
"id":"http://127.0.0.1:5454/author/9de17f29c12e8f97bcbbd34cc908f1baba40658e",
# the home host of the author
"host":"http://127.0.0.1:5454/",
# the display name of the author
"displayName":"Lara Croft",
# url to the authors profile
"url":"http://127.0.0.1:5454/author/9de17f29c12e8f97bcbbd34cc908f1baba40658e",
# HATEOS url for Github API
"github": "http://github.com/laracroft"
}
}
-
Comments
- URL:/author/{author_id}/posts/{post_id}/comments
- GET get comments of the post
- POST if you post an object of "type":"comment", it will add your comment to the post
- Comment id is the auto generated UUID of the comment
- example comment:
{
"type":"comment",
"author":{
"type":"author",
# ID of the Author (UUID)
"id":"http://127.0.0.1:5454/author/1d698d25ff008f7538453c120f581471",
# url to the authors information
"url":"http://127.0.0.1:5454/author/1d698d25ff008f7538453c120f581471",
"host":"http://127.0.0.1:5454/",
"displayName":"Greg Johnson",
# HATEOS url for Github API
"github": "http://github.com/gjohnson"
}
"comment":"Sick Olde English",
"contentType":"text/markdown",
# ISO 8601 TIMESTAMP
"published":"2015-03-09T13:07:04+00:00",
# ID of the Comment (UUID)
"id":"f6255bb01c648fe967714d52a89e8e9c",
}
-
Likes
- You can like posts and comments
- Send them to the inbox
- URL:/author/{author_id}/inbox/
- POST: send a like object to {author_id}
- URL:/author/{author_id}/post/{post_id}/likes
- GET a list of likes from other authors on author_id's post post_id
- Example like object:
{
"@context": "https://www.w3.org/ns/activitystreams",
"summary": "Lara Croft Likes your post",
"type": "Like",
"author":{
"type":"author",
"id":"http://127.0.0.1:5454/author/9de17f29c12e8f97bcbbd34cc908f1baba40658e",
"host":"http://127.0.0.1:5454/",
"displayName":"Lara Croft",
"url":"http://127.0.0.1:5454/author/9de17f29c12e8f97bcbbd34cc908f1baba40658e",
"github":"http://github.com/laracroft"
},
"object":"http://127.0.0.1:5454/author/9de17f29c12e8f97bcbbd34cc908f1baba40658e/posts/764efa883dda1e11db47671c4a3bbd9e"
}