{"action":"created","comment":{"url":"https://api.github.com/repos/lagom/lagom/pulls/comments/93066313","pull_request_review_id":13587801,"id":93066313,"diff_hunk":"@@ -0,0 +1,89 @@\n+# Message Broker API\n+\n+The Lagom Message Broker API provides a distributed publish-subscribe model that services can use to share data via topics. A topic is simply a channel that allows services to push and pull data. In Lagom, topics are strongly typed, hence both the subscriber and producer can know in advance what the expected data flowing through will be.\n+\n+## Declaring a topic\n+\n+To publish data to a topic a service needs to declare the topic in its [[service descriptor|ServiceDescriptors#service-descriptors]].\n+\n+@[hello-service](code/docs/mb/HelloService.scala)\n+\n+The syntax for declaring a topic is similar to the one used already to define services' endpoints. The [`Descriptor.withTopics`](api/com/lightbend/lagom/scaladsl/api/Descriptor.html) method accepts a sequence of topic calls, each topic call can be defined via the [`topic`](api/com/lightbend/lagom/scaladsl/api/Service$.html) method on the `Service` object. The latter takes a topic name (i.e., the topic identifier), and a method reference that returns a [`Topic`](api/com/lightbend/lagom/scaladsl/api/broker.Topic.html) instance.\n+\n+Data flowing through a topic is serialized to JSON by default. Of course, it is possible to use a different serialization format, and you can do so by providing an implicit message serializer for each topic defined in a service descriptor. This is the same approach described on [message serialization](ServiceDescriptors.html#Message-serialization) when presenting [Service Descriptors](ServiceDescriptors.html). You may want to review the [message serializers documentation](MessageSerializers.html) too.\n+\n+### Partitioning topics\n+\n+Kafka will distribute messages for a particular topic across many partitions, so that the topic can scale. Messages sent to different partitions may be processed out of order, so if the ordering of the messages you are publishing matters, you need to ensure that the messages are partitioned in such a way that order is preserved.  Typically, this means ensuring each message for a particular entity goes to the same partition.\n+\n+Lagom allows this by allowing you to configure a partition key strategy, which extracts the partition key out of a message. Kafka will then use this key to help decide what partition to send each message to. The partition can be selected using the [`partitionKeyStrategy`](api/com/lightbend/lagom/scaladsl/api/broker/kafka/KafkaProperties$.html#partitionKeyStrategy[Message]:com.lightbend.lagom.scaladsl.api.Descriptor.Property[Message,com.lightbend.lagom.scaladsl.api.broker.kafka.PartitionKeyStrategy[Message]]) property, by passing a [`PartitionKeyStrategy`](api/com/lightbend/lagom/scaladsl/api/broker/kafka/PartitionKeyStrategy.html) to it: \n+\n+@[publishing](code/docs/mb/BlogPostService.scala)\n+\n+## Implementing a topic\n+\n+The primary source of messages that Lagom is designed to produce is persistent entity events. Rather than publishing events in an ad-hoc fashion in response to particular things happen, it is better to take the stream of events from your persistent entities, and adapt that to a stream of messages sent to the message broker. In this way, you can ensure at least once processing of events by both publishers and consumers, which allows you to guarantee a very strong level of consistency throughout your system.\n+\n+Lagom's [`TopicProducer`](api/com/lightbend/lagom/scaladsl/broker/TopicProducer$.html) helper provides two methods for publishing a persistent entities event stream, [`singleStreamWithOffset`](api/com/lightbend/lagom/scaladsl/broker/TopicProducer$.html) for use with non sharded read side event streams, and [`taggedStreamWithOffset`](api/com/lightbend/lagom/scaladsl/broker/TopicProducer$.html) for use with sharded read side event streams.  Both of these methods take a callback which takes the last offset that the topic producer published, and allows resumption of the event stream from that offset via the [`PersistentEntityRegistry.eventStream`](api/com/lightbend/lagom/scaladsl/persistence/PersistentEntityRegistry.html) method for obtaining a read-side stream. For more details on read-side streams, see [[Persistent Read-Side's|ReadSide#raw-stream-of-events]].\n+\n+Lagom will, in the case of the `singleStreamWithOffset` method, ensure that your topic producer only runs on one node of your cluster, or with the `taggedStreamWithOffset` method will distribute the tags evenly across the cluster to distribute the publishing load.\n+\n+Here's an example of publishing a single, non sharded event stream:\n+\n+@[implement-topic](code/docs/mb/HelloServiceImpl.scala)\n+\n+Note that the read-side event stream you passed to the topic producer is \"activated\" as soon as the service is started. That means all events persisted by your services will eventually be published to the connected topic. Also, you will generally want to map your domain events into some other type, so that other service won't be tightly coupled to another service's domain model events. In other words, domain model events are an implementation detail of the service, and should not be leaked.\n+\n+### Offset storage\n+\n+Lagom will use your configured persistence API provider to store the offsets for your event streams. To read more about offset storage, see the [[Cassandra offset documentation|ReadSideCassandra#Building-the-read-side-handler]] and [[Relational database offset documentation|ReadSideRDBMS#Building-the-read-side-handler]].\n+\n+## Subscribe to a topic\n+\n+To subscribe to a topic, a service just needs to call [`Topic.subscribe`](api/com/lightbend/lagom/scaladsl/api/broker/Topic.html) on the topic of interest. For instance, imagine that a service wants to collect all greetings messages published by the `HelloService`. The first thing you should do is inject a `HelloService` (See the section on [[using service clients|ServiceClients#Using-a-service-client]] for a complete explanation on using a client to another service). Then, subscribe to the greetings topic, and hook your logic to apply to each messages that published to the topic.\n+\n+@[subscribe-to-topic](code/docs/mb/AnotherServiceImpl.scala)\n+\n+When calling [`Topic.subscribe`](api/com/lightbend/lagom/scaladsl/api/broker/Topic.html#subscribe:com.lightbend.lagom.scaladsl.api.broker.Subscriber[Message]) you will get back a [`Subscriber`](api/com/lightbend/lagom/scaladsl/api/broker/Subscriber.html) instance. In the above code snippet we have subscribed to the `greetings` topic using at-least-once delivery semantics. That means each message published to the `greetings` topic is received at least once, but possibly more. The subscriber also offers a [`atMostOnceSource`](api/com/lightbend/lagom/scaladsl/api/broker/Subscriber.html#atMostOnceSource:akka.stream.scaladsl.Source[Message,_]) that gives you at-most-once delivery semantics. If in doubt, prefer using at-least-once delivery semantics.\n+\n+Finally, subscribers are grouped together via [`Subscriber.withGroupId`](api/com/lightbend/lagom/scaladsl/api/broker/Subscriber.html#withGroupId\\(groupId:String\\):com.lightbend.lagom.scaladsl.api.broker.Subscriber[Message]). A subscriber group allows many nodes in your cluster to consume a message stream while ensuring that each message is only handled once by each node in your cluster.  Without subscriber groups, all of your nodes for a particular service would get every message in the stream, leading to their processing being duplicated.  By default, Lagom will use a group id that has the same name as the service consuming the topic.\n+\n+// TODO: From this point on...\n+\n+## Polymorphic event streams\n+\n+Typically you will want to publish more than one type of event to a particular topic. This can be done by creating an interface that each event implements, and then making the events implement that. In order to successfully serialize these events to and from JSON, you will have to include some extra information on your JSON representation of the data.\n+\n+For example, consider a situation where you have a blog post created event and a blog post published event. Here's what your event structure might look like:\n+\n+@[content](code/docs/mb/BlogPostService.scala)\n+\n+And that's how your Play Json formatters could look like:\n+\n+@[content-formatters](code/docs/mb/BlogPostService.scala)\n+\n+You will have to implement a custom Message Serializer that adds extra information on each JSON message so that you know what deserializer to use on the other end. The resulting JSON for the `BlogPostCreated` event will look like this:\n+\n+```json\n+{\n+ \"postId\": \"23\",\n+ \"title\": \"new post\",\n+ \"event_type\": \"postCreated\"\n+}\n+```\n+\n+While the JSON for the `BlogPostPublished` event will look like this:\n+\n+```json\n+{\n+ \"postId\": \"23\",\n+ \"event_type\": \"postPublished\"\n+}\n+```\n+\n+You can do that using [Json transformers](https://www.playframework.com/documentation/2.5.x/ScalaJsonTransformers#Case-5:-Put-a-given-value-in-a-new-branch) provided by Play Json: \n+\n+@[polymorphic-play-json](code/docs/mb/BlogPostService.scala)\n+\n+\n+This approach has an added maintenance cost. Fortunately there are libraries that expand Play Json features and provide support for algebraic data type serialization. For example: [Play JSON Derived Codecs](https://github.com/julienrf/play-json-derived-codecs).","path":"docs/manual/scala/guide/broker/MessageBrokerApi.md","position":null,"original_position":89,"commit_id":"1eae573dc226d26c3a1efa138304ca2123099f0f","original_commit_id":"46875c13e6c7decf09d27db4ab50ac7cc13593cd","user":{"login":"ignasi35","id":762126,"avatar_url":"https://avatars.githubusercontent.com/u/762126?v=3","gravatar_id":"","url":"https://api.github.com/users/ignasi35","html_url":"https://github.com/ignasi35","followers_url":"https://api.github.com/users/ignasi35/followers","following_url":"https://api.github.com/users/ignasi35/following{/other_user}","gists_url":"https://api.github.com/users/ignasi35/gists{/gist_id}","starred_url":"https://api.github.com/users/ignasi35/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ignasi35/subscriptions","organizations_url":"https://api.github.com/users/ignasi35/orgs","repos_url":"https://api.github.com/users/ignasi35/repos","events_url":"https://api.github.com/users/ignasi35/events{/privacy}","received_events_url":"https://api.github.com/users/ignasi35/received_events","type":"User","site_admin":false},"body":"@jroper please review this last sentence. I think you mentioned there were others?","created_at":"2016-12-19T16:26:45Z","updated_at":"2016-12-19T16:26:46Z","html_url":"https://github.com/lagom/lagom/pull/338#discussion_r93066313","pull_request_url":"https://api.github.com/repos/lagom/lagom/pulls/338","_links":{"self":{"href":"https://api.github.com/repos/lagom/lagom/pulls/comments/93066313"},"html":{"href":"https://github.com/lagom/lagom/pull/338#discussion_r93066313"},"pull_request":{"href":"https://api.github.com/repos/lagom/lagom/pulls/338"}}},"pull_request":{"url":"https://api.github.com/repos/lagom/lagom/pulls/338","id":98386220,"html_url":"https://github.com/lagom/lagom/pull/338","diff_url":"https://github.com/lagom/lagom/pull/338.diff","patch_url":"https://github.com/lagom/lagom/pull/338.patch","issue_url":"https://api.github.com/repos/lagom/lagom/issues/338","number":338,"state":"open","locked":false,"title":"WIP Docs for scaladsl Broker Support.","user":{"login":"ignasi35","id":762126,"avatar_url":"https://avatars.githubusercontent.com/u/762126?v=3","gravatar_id":"","url":"https://api.github.com/users/ignasi35","html_url":"https://github.com/ignasi35","followers_url":"https://api.github.com/users/ignasi35/followers","following_url":"https://api.github.com/users/ignasi35/following{/other_user}","gists_url":"https://api.github.com/users/ignasi35/gists{/gist_id}","starred_url":"https://api.github.com/users/ignasi35/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ignasi35/subscriptions","organizations_url":"https://api.github.com/users/ignasi35/orgs","repos_url":"https://api.github.com/users/ignasi35/repos","events_url":"https://api.github.com/users/ignasi35/events{/privacy}","received_events_url":"https://api.github.com/users/ignasi35/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-12-16T19:04:27Z","updated_at":"2016-12-19T16:26:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0f2d7c56c14c46b12cb0cb8cce3245c59c11f03b","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/lagom/lagom/pulls/338/commits","review_comments_url":"https://api.github.com/repos/lagom/lagom/pulls/338/comments","review_comment_url":"https://api.github.com/repos/lagom/lagom/pulls/comments{/number}","comments_url":"https://api.github.com/repos/lagom/lagom/issues/338/comments","statuses_url":"https://api.github.com/repos/lagom/lagom/statuses/1eae573dc226d26c3a1efa138304ca2123099f0f","head":{"label":"ignasi35:docs-message-broker-support-scala","ref":"docs-message-broker-support-scala","sha":"1eae573dc226d26c3a1efa138304ca2123099f0f","user":{"login":"ignasi35","id":762126,"avatar_url":"https://avatars.githubusercontent.com/u/762126?v=3","gravatar_id":"","url":"https://api.github.com/users/ignasi35","html_url":"https://github.com/ignasi35","followers_url":"https://api.github.com/users/ignasi35/followers","following_url":"https://api.github.com/users/ignasi35/following{/other_user}","gists_url":"https://api.github.com/users/ignasi35/gists{/gist_id}","starred_url":"https://api.github.com/users/ignasi35/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ignasi35/subscriptions","organizations_url":"https://api.github.com/users/ignasi35/orgs","repos_url":"https://api.github.com/users/ignasi35/repos","events_url":"https://api.github.com/users/ignasi35/events{/privacy}","received_events_url":"https://api.github.com/users/ignasi35/received_events","type":"User","site_admin":false},"repo":{"id":72645230,"name":"lagom","full_name":"ignasi35/lagom","owner":{"login":"ignasi35","id":762126,"avatar_url":"https://avatars.githubusercontent.com/u/762126?v=3","gravatar_id":"","url":"https://api.github.com/users/ignasi35","html_url":"https://github.com/ignasi35","followers_url":"https://api.github.com/users/ignasi35/followers","following_url":"https://api.github.com/users/ignasi35/following{/other_user}","gists_url":"https://api.github.com/users/ignasi35/gists{/gist_id}","starred_url":"https://api.github.com/users/ignasi35/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ignasi35/subscriptions","organizations_url":"https://api.github.com/users/ignasi35/orgs","repos_url":"https://api.github.com/users/ignasi35/repos","events_url":"https://api.github.com/users/ignasi35/events{/privacy}","received_events_url":"https://api.github.com/users/ignasi35/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ignasi35/lagom","description":"Reactive Microservices for the JVM","fork":true,"url":"https://api.github.com/repos/ignasi35/lagom","forks_url":"https://api.github.com/repos/ignasi35/lagom/forks","keys_url":"https://api.github.com/repos/ignasi35/lagom/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ignasi35/lagom/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ignasi35/lagom/teams","hooks_url":"https://api.github.com/repos/ignasi35/lagom/hooks","issue_events_url":"https://api.github.com/repos/ignasi35/lagom/issues/events{/number}","events_url":"https://api.github.com/repos/ignasi35/lagom/events","assignees_url":"https://api.github.com/repos/ignasi35/lagom/assignees{/user}","branches_url":"https://api.github.com/repos/ignasi35/lagom/branches{/branch}","tags_url":"https://api.github.com/repos/ignasi35/lagom/tags","blobs_url":"https://api.github.com/repos/ignasi35/lagom/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ignasi35/lagom/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ignasi35/lagom/git/refs{/sha}","trees_url":"https://api.github.com/repos/ignasi35/lagom/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ignasi35/lagom/statuses/{sha}","languages_url":"https://api.github.com/repos/ignasi35/lagom/languages","stargazers_url":"https://api.github.com/repos/ignasi35/lagom/stargazers","contributors_url":"https://api.github.com/repos/ignasi35/lagom/contributors","subscribers_url":"https://api.github.com/repos/ignasi35/lagom/subscribers","subscription_url":"https://api.github.com/repos/ignasi35/lagom/subscription","commits_url":"https://api.github.com/repos/ignasi35/lagom/commits{/sha}","git_commits_url":"https://api.github.com/repos/ignasi35/lagom/git/commits{/sha}","comments_url":"https://api.github.com/repos/ignasi35/lagom/comments{/number}","issue_comment_url":"https://api.github.com/repos/ignasi35/lagom/issues/comments{/number}","contents_url":"https://api.github.com/repos/ignasi35/lagom/contents/{+path}","compare_url":"https://api.github.com/repos/ignasi35/lagom/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ignasi35/lagom/merges","archive_url":"https://api.github.com/repos/ignasi35/lagom/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ignasi35/lagom/downloads","issues_url":"https://api.github.com/repos/ignasi35/lagom/issues{/number}","pulls_url":"https://api.github.com/repos/ignasi35/lagom/pulls{/number}","milestones_url":"https://api.github.com/repos/ignasi35/lagom/milestones{/number}","notifications_url":"https://api.github.com/repos/ignasi35/lagom/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ignasi35/lagom/labels{/name}","releases_url":"https://api.github.com/repos/ignasi35/lagom/releases{/id}","deployments_url":"https://api.github.com/repos/ignasi35/lagom/deployments","created_at":"2016-11-02T13:59:39Z","updated_at":"2016-11-02T13:59:43Z","pushed_at":"2016-12-19T16:26:10Z","git_url":"git://github.com/ignasi35/lagom.git","ssh_url":"git@github.com:ignasi35/lagom.git","clone_url":"https://github.com/ignasi35/lagom.git","svn_url":"https://github.com/ignasi35/lagom","homepage":"https://lightbend.com/lagom","size":2725,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"lagom:master","ref":"master","sha":"d1a816a8d8d915b80b0363a1d4a488322ce650e4","user":{"login":"lagom","id":17168851,"avatar_url":"https://avatars.githubusercontent.com/u/17168851?v=3","gravatar_id":"","url":"https://api.github.com/users/lagom","html_url":"https://github.com/lagom","followers_url":"https://api.github.com/users/lagom/followers","following_url":"https://api.github.com/users/lagom/following{/other_user}","gists_url":"https://api.github.com/users/lagom/gists{/gist_id}","starred_url":"https://api.github.com/users/lagom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lagom/subscriptions","organizations_url":"https://api.github.com/users/lagom/orgs","repos_url":"https://api.github.com/users/lagom/repos","events_url":"https://api.github.com/users/lagom/events{/privacy}","received_events_url":"https://api.github.com/users/lagom/received_events","type":"Organization","site_admin":false},"repo":{"id":52320967,"name":"lagom","full_name":"lagom/lagom","owner":{"login":"lagom","id":17168851,"avatar_url":"https://avatars.githubusercontent.com/u/17168851?v=3","gravatar_id":"","url":"https://api.github.com/users/lagom","html_url":"https://github.com/lagom","followers_url":"https://api.github.com/users/lagom/followers","following_url":"https://api.github.com/users/lagom/following{/other_user}","gists_url":"https://api.github.com/users/lagom/gists{/gist_id}","starred_url":"https://api.github.com/users/lagom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lagom/subscriptions","organizations_url":"https://api.github.com/users/lagom/orgs","repos_url":"https://api.github.com/users/lagom/repos","events_url":"https://api.github.com/users/lagom/events{/privacy}","received_events_url":"https://api.github.com/users/lagom/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/lagom/lagom","description":"Reactive Microservices for the JVM","fork":false,"url":"https://api.github.com/repos/lagom/lagom","forks_url":"https://api.github.com/repos/lagom/lagom/forks","keys_url":"https://api.github.com/repos/lagom/lagom/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lagom/lagom/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lagom/lagom/teams","hooks_url":"https://api.github.com/repos/lagom/lagom/hooks","issue_events_url":"https://api.github.com/repos/lagom/lagom/issues/events{/number}","events_url":"https://api.github.com/repos/lagom/lagom/events","assignees_url":"https://api.github.com/repos/lagom/lagom/assignees{/user}","branches_url":"https://api.github.com/repos/lagom/lagom/branches{/branch}","tags_url":"https://api.github.com/repos/lagom/lagom/tags","blobs_url":"https://api.github.com/repos/lagom/lagom/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lagom/lagom/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lagom/lagom/git/refs{/sha}","trees_url":"https://api.github.com/repos/lagom/lagom/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lagom/lagom/statuses/{sha}","languages_url":"https://api.github.com/repos/lagom/lagom/languages","stargazers_url":"https://api.github.com/repos/lagom/lagom/stargazers","contributors_url":"https://api.github.com/repos/lagom/lagom/contributors","subscribers_url":"https://api.github.com/repos/lagom/lagom/subscribers","subscription_url":"https://api.github.com/repos/lagom/lagom/subscription","commits_url":"https://api.github.com/repos/lagom/lagom/commits{/sha}","git_commits_url":"https://api.github.com/repos/lagom/lagom/git/commits{/sha}","comments_url":"https://api.github.com/repos/lagom/lagom/comments{/number}","issue_comment_url":"https://api.github.com/repos/lagom/lagom/issues/comments{/number}","contents_url":"https://api.github.com/repos/lagom/lagom/contents/{+path}","compare_url":"https://api.github.com/repos/lagom/lagom/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lagom/lagom/merges","archive_url":"https://api.github.com/repos/lagom/lagom/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lagom/lagom/downloads","issues_url":"https://api.github.com/repos/lagom/lagom/issues{/number}","pulls_url":"https://api.github.com/repos/lagom/lagom/pulls{/number}","milestones_url":"https://api.github.com/repos/lagom/lagom/milestones{/number}","notifications_url":"https://api.github.com/repos/lagom/lagom/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lagom/lagom/labels{/name}","releases_url":"https://api.github.com/repos/lagom/lagom/releases{/id}","deployments_url":"https://api.github.com/repos/lagom/lagom/deployments","created_at":"2016-02-23T01:51:06Z","updated_at":"2016-12-17T11:09:27Z","pushed_at":"2016-12-19T16:26:10Z","git_url":"git://github.com/lagom/lagom.git","ssh_url":"git@github.com:lagom/lagom.git","clone_url":"https://github.com/lagom/lagom.git","svn_url":"https://github.com/lagom/lagom","homepage":"https://lightbend.com/lagom","size":2752,"stargazers_count":1019,"watchers_count":1019,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":171,"mirror_url":null,"open_issues_count":58,"forks":171,"open_issues":58,"watchers":1019,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/lagom/lagom/pulls/338"},"html":{"href":"https://github.com/lagom/lagom/pull/338"},"issue":{"href":"https://api.github.com/repos/lagom/lagom/issues/338"},"comments":{"href":"https://api.github.com/repos/lagom/lagom/issues/338/comments"},"review_comments":{"href":"https://api.github.com/repos/lagom/lagom/pulls/338/comments"},"review_comment":{"href":"https://api.github.com/repos/lagom/lagom/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/lagom/lagom/pulls/338/commits"},"statuses":{"href":"https://api.github.com/repos/lagom/lagom/statuses/1eae573dc226d26c3a1efa138304ca2123099f0f"}}}}
{"actor":{"display_login":"ignasi35"}}