Public Activity

Fetched from http://localhost:45203/activitypub/public/page?cursor=%7B%22or%22%3A%5B%7B%22published%22%3A%7B%22lt%22%3A%222018-01-31T20%3A50%3A18.455Z%22%7D%7D%2C%7B%22and%22%3A%5B%7B%22published%22%3A%7B%22equals%22%3A%222018-01-31T20%3A50%3A18.455Z%22%7D%7D%2C%7B%22id%22%3A%7B%22lt%22%3A%22https%3A%2F%2Ftesting.distbin.com%2Factivities%2F45789507-4dd2-4fd2-ade6-c42964f1578e%22%7D%7D%5D%7D%5D%7D

{…}
{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "OrderedCollectionPage",
  "orderedItems": [
    {
      "type": "Create",
      "@context": "https://www.w3.org/ns/activitystreams",
      "object": {
        "id": "urn:uuid:6e9fd35e-0d60-4967-a10c-19fba0571674",
        "type": "Note",
        "content": "Boom! (from testing.distbin.com, hooray federation)",
        "generator": {
          "type": "Application",
          "name": "distbin-html",
          "url": "https://testing.distbin.com"
        },
        "inReplyTo": "https://distbin.com/activities/f2c30779-6fd4-4bea-a1a2-a4017fe65649"
      },
      "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://distbin.com/activities/f2c30779-6fd4-4bea-a1a2-a4017fe65649",
        null,
        "https://distbin.com/activities/5f4903d6-c69b-4647-8ca5-2a48ea6a3f1b",
        "http://distbin.com/about"
      ],
      "id": "https://testing.distbin.com/activities/63ea67f7-4869-4a9a-9d1e-939abb7b913b",
      "published": "2018-01-31T20:47:18.068Z",
      "distbin:activityPubDeliveryFailures": [
        {
          "name": "TargetRequestFailed",
          "message": "Got unexpected status code 301 when requesting http://distbin.com/about to determine inbox URL"
        }
      ],
      "distbin:activityPubDeliverySuccesses": [
        "https://distbin.com/activities/5f4903d6-c69b-4647-8ca5-2a48ea6a3f1b",
        "https://distbin.com/activities/f2c30779-6fd4-4bea-a1a2-a4017fe65649"
      ],
      "http://www.w3.org/2002/07/owl#sameAs": [
        "urn:uuid:63ea67f7-4869-4a9a-9d1e-939abb7b913b"
      ],
      "inbox": [
        "https://testing.distbin.com/activitypub/inbox"
      ],
      "url": [
        "https://testing.distbin.com/activities/63ea67f7-4869-4a9a-9d1e-939abb7b913b"
      ],
      "uuid": "63ea67f7-4869-4a9a-9d1e-939abb7b913b",
      "replies": "https://testing.distbin.com/activities/63ea67f7-4869-4a9a-9d1e-939abb7b913b/replies"
    },
    {
      "type": "Create",
      "@context": "https://www.w3.org/ns/activitystreams",
      "object": {
        "id": "urn:uuid:593cafcc-479a-4814-9bd1-e079e64c6437",
        "type": "Note",
        "content": "reply",
        "generator": {
          "type": "Application",
          "name": "distbin-html",
          "url": "https://testing.distbin.com"
        },
        "inReplyTo": "https://testing.distbin.com/activities/ce13369e-d771-4d1e-878b-ec5dbe2076ef"
      },
      "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://testing.distbin.com/activities/ce13369e-d771-4d1e-878b-ec5dbe2076ef"
      ],
      "id": "https://testing.distbin.com/activities/f0065bb0-8de0-4fef-872f-9f7a4bdf6a88",
      "published": "2018-01-31T02:02:19.546Z",
      "http://www.w3.org/2002/07/owl#sameAs": [
        "urn:uuid:f0065bb0-8de0-4fef-872f-9f7a4bdf6a88"
      ],
      "inbox": [
        "https://testing.distbin.com/activitypub/inbox"
      ],
      "url": [
        "https://testing.distbin.com/activities/f0065bb0-8de0-4fef-872f-9f7a4bdf6a88"
      ],
      "uuid": "f0065bb0-8de0-4fef-872f-9f7a4bdf6a88",
      "replies": "https://testing.distbin.com/activities/f0065bb0-8de0-4fef-872f-9f7a4bdf6a88/replies"
    },
    {
      "type": "Create",
      "@context": "https://www.w3.org/ns/activitystreams",
      "object": {
        "id": "urn:uuid:208da0e1-e9c2-43d8-a997-bbf3d24c79e8",
        "type": "Note",
        "content": "so...",
        "generator": {
          "type": "Application",
          "name": "distbin-html",
          "url": "https://testing.distbin.com"
        }
      },
      "cc": [
        "https://www.w3.org/ns/activitystreams#Public"
      ],
      "id": "https://testing.distbin.com/activities/ce13369e-d771-4d1e-878b-ec5dbe2076ef",
      "published": "2018-01-31T02:02:10.748Z",
      "http://www.w3.org/2002/07/owl#sameAs": [
        "urn:uuid:ce13369e-d771-4d1e-878b-ec5dbe2076ef"
      ],
      "inbox": [
        "https://testing.distbin.com/activitypub/inbox"
      ],
      "url": [
        "https://testing.distbin.com/activities/ce13369e-d771-4d1e-878b-ec5dbe2076ef"
      ],
      "uuid": "ce13369e-d771-4d1e-878b-ec5dbe2076ef",
      "replies": "https://testing.distbin.com/activities/ce13369e-d771-4d1e-878b-ec5dbe2076ef/replies"
    },
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Create",
      "object": {
        "type": "Note",
        "content": "great!",
        "generator": {
          "type": "Application",
          "name": "distbin-html",
          "url": "https://distbin.com"
        },
        "inReplyTo": "https://mastodon.bengo.is/@bengo/1"
      },
      "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://mastodon.bengo.is/@bengo/1"
      ],
      "id": "https://testing.distbin.com/activities/0dd58cf0-646b-4c91-b396-af99554addd2",
      "published": "2017-11-21T03:12:38.940Z",
      "distbin:activityPubDeliveryFailures": [
        {
          "name": "TypeError",
          "message": "Cannot read property 'http://www.w3.org/ns/ldp#inbox' of undefined"
        }
      ],
      "http://www.w3.org/2002/07/owl#sameAs": [
        "urn:uuid:0dd58cf0-646b-4c91-b396-af99554addd2"
      ],
      "inbox": [
        "https://testing.distbin.com/activitypub/inbox"
      ],
      "url": [
        "https://testing.distbin.com/activities/0dd58cf0-646b-4c91-b396-af99554addd2"
      ],
      "uuid": "0dd58cf0-646b-4c91-b396-af99554addd2",
      "replies": "https://testing.distbin.com/activities/0dd58cf0-646b-4c91-b396-af99554addd2/replies"
    },
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Create",
      "object": {
        "type": "Note",
        "content": "@cwebber this seems like it implies a test case. i.e. I want to write a test case for my implementation for this situation, ensure it fails, and then write code to make it pass. So can we blow this up into an example exchange of messages?\r\n\r\nLet\r\n* A - Alyssa\r\n* B - Ben (hey! me!)\r\n* F1 - Follower 1 of Alyssa\r\n\r\nThen:\r\n\r\n> Alyssa makes a post about her having successfully presented a paper at a conference and sends it to her followers collection\r\n\r\n1. A -> B:\r\n```\r\n{\r\n  \"id\": \"https://bengo.is/activities/alyssa-presented-a-paper\", \r\n  \"type\": Create\",\r\n  \"actor\": \"https://bengo.is/ficticious-people/alyssa\",\r\n  \"object\": { \"type\": \"Post\", \"content\": \"I presented a paper last week at a conference\" },\r\n  \"cc\": [\r\n    \"https://bengo.is/ficticious-people/alyssa/followers/\",\r\n    \"https://bengo.is/ficticious-people/ben\"\r\n  ]\r\n}\r\n```\r\n\r\n> Ben replies to Alyssa's message congratulating her and includes her followers collection on the recipients.\r\n\r\n2. B -> A:\r\n```\r\n{\r\n  \"type\": Create\",\r\n  \"id\": \"https://bengo.is/activities/ben-replies-to-alyssa-presented-a-paper\", \r\n  \"inReplyTo\": \"https://bengo.is/activities/alyssa-presented-a-paper\",\r\n  \"actor\": \"https://bengo.is/ficticious-people/ben\",\r\n  \"object\": { \"type\": \"Post\", \"content\": \"Cool story\" },\r\n  \"cc\": [\r\n    \"https://bengo.is/ficticious-people/alyssa/followers/\",\r\n    \"https://bengo.is/ficticious-people/alyssa\"]\r\n}\r\n```\r\n\r\n> However, Ben has no access to see the members of Alyssa's followers collection, so his server does not forward his messages to their inbox.\r\n\r\n3. B -> F1\r\n\r\n**ben cannot deliver to `https://bengo.is/ficticious-people/alyssa/followers/`, only to `https://bengo.is/ficticious-people/alyssa`** - F1 never see's Ben's response\r\n\r\n> Without the following mechanism, if Alyssa were then to reply to Ben:\r\n\r\n4. A -> B\r\n```\r\n{\r\n  \"type\": Create\",\r\n  \"id\": \"https://bengo.is/activities/alyssa-replies-to-ben-replies-to-alyssa-presented-a-paper\", \r\n  \"inReplyTo\": \"https://bengo.is/activities/ben-replies-to-alyssa-presented-a-paper\",\r\n  \"actor\": \"https://bengo.is/ficticious-people/alyssa\",\r\n  \"object\": { \"type\": \"Post\", \"content\": \"That's pretty terse, ben. use your words\" },\r\n  \"cc\": [\r\n    \"https://bengo.is/ficticious-people/alyssa/followers/\",\r\n    \"https://bengo.is/ficticious-people/ben\"]\r\n}\r\n```\r\n\r\n> her followers would see Alyssa replying to Ben without having ever seen Ben interacting. This would be very confusing!\r\n\r\n5. F1: \"**WTF?**\"\r\n\r\n---\r\n\r\nBack to bengo:\r\n\r\n1. Is the above exchange accurate wrt informing a test case? That is my main concern.\r\n2. At the WTF point above, couldn't F1 just go fetch B's reply activity by URL? This would leave A out of the decision of whether B wants to share with F1, which seems like a good idea. Why inbox forward if F1 could just fetch from B? This will help me understand inbox forwarding and explain to others.\r\n",
        "generator": {
          "type": "Application",
          "name": "distbin-html",
          "url": "https://distbin.com"
        },
        "inReplyTo": "https://github.com/w3c/activitypub/commit/93760cb0b6014e6fe82f90d2f6d4b32d43cd75bd"
      },
      "location": {
        "type": "Place",
        "units": "m",
        "latitude": 37.763398599999995,
        "longitude": -122.42771510000001,
        "accuracy": 95,
        "radius": 37
      },
      "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://github.com/w3c/activitypub/commit/93760cb0b6014e6fe82f90d2f6d4b32d43cd75bd"
      ],
      "attributedTo": {
        "url": "https://bengo.is"
      },
      "id": "https://testing.distbin.com/activities/3e67fe4f-a72c-42df-865c-4003ab693226",
      "published": "2017-11-21T00:43:13.392Z",
      "distbin:activityPubDeliveryFailures": [
        {
          "name": "TypeError",
          "message": "Cannot read property 'http://www.w3.org/ns/ldp#inbox' of undefined"
        }
      ],
      "http://www.w3.org/2002/07/owl#sameAs": [
        "urn:uuid:3e67fe4f-a72c-42df-865c-4003ab693226"
      ],
      "inbox": [
        "https://testing.distbin.com/activitypub/inbox"
      ],
      "url": [
        "https://testing.distbin.com/activities/3e67fe4f-a72c-42df-865c-4003ab693226"
      ],
      "uuid": "3e67fe4f-a72c-42df-865c-4003ab693226",
      "replies": "https://testing.distbin.com/activities/3e67fe4f-a72c-42df-865c-4003ab693226/replies"
    },
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Create",
      "object": {
        "type": "Note",
        "content": "",
        "generator": {
          "type": "Application",
          "name": "distbin-html",
          "url": "https://distbin.com"
        },
        "inReplyTo": "http://distbin.com/about"
      },
      "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "http://distbin.com/about"
      ],
      "id": "https://testing.distbin.com/activities/e96d05f1-87b2-47a4-b265-70629addcc88",
      "published": "2017-11-20T02:28:07.779Z",
      "distbin:activityPubDeliveryFailures": [
        {
          "name": "TargetRequestFailed",
          "message": "Got unexpected status code 301 when requesting http://distbin.com/about to determine inbox URL"
        }
      ],
      "http://www.w3.org/2002/07/owl#sameAs": [
        "urn:uuid:e96d05f1-87b2-47a4-b265-70629addcc88"
      ],
      "inbox": [
        "https://testing.distbin.com/activitypub/inbox"
      ],
      "url": [
        "https://testing.distbin.com/activities/e96d05f1-87b2-47a4-b265-70629addcc88"
      ],
      "uuid": "e96d05f1-87b2-47a4-b265-70629addcc88",
      "replies": "https://testing.distbin.com/activities/e96d05f1-87b2-47a4-b265-70629addcc88/replies"
    },
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Create",
      "object": {
        "type": "Note",
        "content": "Hi Hobbes!",
        "generator": {
          "type": "Application",
          "name": "distbin-html",
          "url": "https://distbin.com"
        }
      },
      "cc": [
        "https://www.w3.org/ns/activitystreams#Public"
      ],
      "id": "https://testing.distbin.com/activities/fd026086-2492-4b40-a692-8b323dfddcef",
      "published": "2017-11-17T18:55:57.276Z",
      "http://www.w3.org/2002/07/owl#sameAs": [
        "urn:uuid:fd026086-2492-4b40-a692-8b323dfddcef"
      ],
      "inbox": [
        "https://testing.distbin.com/activitypub/inbox"
      ],
      "url": [
        "https://testing.distbin.com/activities/fd026086-2492-4b40-a692-8b323dfddcef"
      ],
      "uuid": "fd026086-2492-4b40-a692-8b323dfddcef",
      "replies": "https://testing.distbin.com/activities/fd026086-2492-4b40-a692-8b323dfddcef/replies"
    },
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Create",
      "object": {
        "type": "Note",
        "content": "",
        "generator": {
          "type": "Application",
          "name": "distbin-html",
          "url": "https://distbin.com"
        }
      },
      "cc": [
        "https://www.w3.org/ns/activitystreams#Public"
      ],
      "id": "https://testing.distbin.com/activities/e5b274d9-80e0-4b43-9a86-20cfba2070d3",
      "published": "2017-11-20T02:08:02.013Z",
      "http://www.w3.org/2002/07/owl#sameAs": [
        "urn:uuid:e5b274d9-80e0-4b43-9a86-20cfba2070d3"
      ],
      "inbox": [
        "https://testing.distbin.com/activitypub/inbox"
      ],
      "url": [
        "https://testing.distbin.com/activities/e5b274d9-80e0-4b43-9a86-20cfba2070d3"
      ],
      "uuid": "e5b274d9-80e0-4b43-9a86-20cfba2070d3",
      "replies": "https://testing.distbin.com/activities/e5b274d9-80e0-4b43-9a86-20cfba2070d3/replies"
    },
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Create",
      "object": {
        "type": "Note",
        "content": "I bought activitypub.com. So glad no one maliciously snagged it up before me.\r\n\r\nRight now it redirects to https://activitypub.rocks.",
        "generator": {
          "type": "Application",
          "name": "distbin-html",
          "url": "https://distbin.com"
        },
        "inReplyTo": "https://activitypub.com"
      },
      "location": {
        "type": "Place",
        "units": "m",
        "latitude": 37.7633803,
        "longitude": -122.4277231,
        "accuracy": 95,
        "radius": 48
      },
      "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://activitypub.com"
      ],
      "attributedTo": {
        "url": "https://bengo.is"
      },
      "id": "https://testing.distbin.com/activities/e535145e-3ba3-4c57-aa07-72bbb1c70919",
      "published": "2017-11-16T01:04:07.086Z",
      "distbin:activityPubDeliveryFailures": [
        {
          "name": "TargetRequestFailed",
          "message": "Got unexpected status code 301 when requesting https://activitypub.com to determine inbox URL"
        }
      ],
      "http://www.w3.org/2002/07/owl#sameAs": [
        "urn:uuid:e535145e-3ba3-4c57-aa07-72bbb1c70919"
      ],
      "inbox": [
        "https://testing.distbin.com/activitypub/inbox"
      ],
      "url": [
        "https://testing.distbin.com/activities/e535145e-3ba3-4c57-aa07-72bbb1c70919"
      ],
      "uuid": "e535145e-3ba3-4c57-aa07-72bbb1c70919",
      "replies": "https://testing.distbin.com/activities/e535145e-3ba3-4c57-aa07-72bbb1c70919/replies"
    },
    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Create",
      "object": {
        "type": "Note",
        "content": "This is a test",
        "generator": {
          "type": "Application",
          "name": "distbin-html",
          "url": "https://distbin.com"
        },
        "inReplyTo": "https://cybre.space/@nightpool/99010025742628579"
      },
      "cc": [
        "https://www.w3.org/ns/activitystreams#Public",
        "https://cybre.space/@nightpool/99010025742628579"
      ],
      "id": "https://testing.distbin.com/activities/fdad1c6d-3230-484d-ae36-51507d9e4840",
      "published": "2017-11-15T22:36:39.242Z",
      "distbin:activityPubDeliveryFailures": [
        {
          "name": "TypeError",
          "message": "Cannot read property 'http://www.w3.org/ns/ldp#inbox' of undefined"
        }
      ],
      "http://www.w3.org/2002/07/owl#sameAs": [
        "urn:uuid:fdad1c6d-3230-484d-ae36-51507d9e4840"
      ],
      "inbox": [
        "https://testing.distbin.com/activitypub/inbox"
      ],
      "url": [
        "https://testing.distbin.com/activities/fdad1c6d-3230-484d-ae36-51507d9e4840"
      ],
      "uuid": "fdad1c6d-3230-484d-ae36-51507d9e4840",
      "replies": "https://testing.distbin.com/activities/fdad1c6d-3230-484d-ae36-51507d9e4840/replies"
    }
  ],
  "startIndex": 10,
  "next": "?cursor=%7B%22or%22%3A%5B%7B%22published%22%3A%7B%22lt%22%3A%222017-11-15T22%3A36%3A39.242Z%22%7D%7D%2C%7B%22and%22%3A%5B%7B%22published%22%3A%7B%22equals%22%3A%222017-11-15T22%3A36%3A39.242Z%22%7D%7D%2C%7B%22id%22%3A%7B%22lt%22%3A%22https%3A%2F%2Ftesting.distbin.com%2Factivities%2Ffdad1c6d-3230-484d-ae36-51507d9e4840%22%7D%7D%5D%7D%5D%7D",
  "partOf": "/activitypub/public"
}

Boom! (from testing.distbin.com, hooray federation)

reply

so...

great!

@cwebber this seems like it implies a test case. i.e. I want to write a test case for my implementation for this situation, ensure it fails, and then write code to make it pass. So can we blow this up into an example exchange of messages?

Let

  • A - Alyssa
  • B - Ben (hey! me!)
  • F1 - Follower 1 of Alyssa

Then:

Alyssa makes a post about her having successfully presented a paper at a conference and sends it to her followers collection

  1. A -> B:
    {
    "id": "https://bengo.is/activities/alyssa-presented-a-paper", 
    "type": Create",
    "actor": "https://bengo.is/ficticious-people/alyssa",
    "object": { "type": "Post", "content": "I presented a paper last week at a conference" },
    "cc": [
     "https://bengo.is/ficticious-people/alyssa/followers/",
     "https://bengo.is/ficticious-people/ben"
    ]
    }
    

Ben replies to Alyssa's message congratulating her and includes her followers collection on the recipients.

  1. B -> A:
    {
    "type": Create",
    "id": "https://bengo.is/activities/ben-replies-to-alyssa-presented-a-paper", 
    "inReplyTo": "https://bengo.is/activities/alyssa-presented-a-paper",
    "actor": "https://bengo.is/ficticious-people/ben",
    "object": { "type": "Post", "content": "Cool story" },
    "cc": [
     "https://bengo.is/ficticious-people/alyssa/followers/",
     "https://bengo.is/ficticious-people/alyssa"]
    }
    

However, Ben has no access to see the members of Alyssa's followers collection, so his server does not forward his messages to their inbox.

  1. B -> F1

ben cannot deliver to https://bengo.is/ficticious-people/alyssa/followers/, only to https://bengo.is/ficticious-people/alyssa - F1 never see's Ben's response

Without the following mechanism, if Alyssa were then to reply to Ben:

  1. A -> B
    {
    "type": Create",
    "id": "https://bengo.is/activities/alyssa-replies-to-ben-replies-to-alyssa-presented-a-paper", 
    "inReplyTo": "https://bengo.is/activities/ben-replies-to-alyssa-presented-a-paper",
    "actor": "https://bengo.is/ficticious-people/alyssa",
    "object": { "type": "Post", "content": "That's pretty terse, ben. use your words" },
    "cc": [
     "https://bengo.is/ficticious-people/alyssa/followers/",
     "https://bengo.is/ficticious-people/ben"]
    }
    

her followers would see Alyssa replying to Ben without having ever seen Ben interacting. This would be very confusing!

  1. F1: "WTF?"

Back to bengo:

  1. Is the above exchange accurate wrt informing a test case? That is my main concern.
  2. At the WTF point above, couldn't F1 just go fetch B's reply activity by URL? This would leave A out of the decision of whether B wants to share with F1, which seems like a good idea. Why inbox forward if F1 could just fetch from B? This will help me understand inbox forwarding and explain to others.

https://testing.distbin.com/activities/e96d05f1-87b2-47a4-b265-70629addcc88

Hi Hobbes!

https://testing.distbin.com/activities/e5b274d9-80e0-4b43-9a86-20cfba2070d3

I bought activitypub.com. So glad no one maliciously snagged it up before me.

Right now it redirects to https://activitypub.rocks.

This is a test

10 previous items - Next Page