{"result":{"depiction_url":null,"edges":{"in_module":{"objects":[{"created":"2026-09-30T09:18:26Z","object_id":{"id":1303,"is_a":["text","documentation","reference","module"],"name":"doc_module_mod_wires","title":"mod_wires","uri":"https:\/\/zotonic.com\/id\/1303"},"seq":1}],"predicate":{"id":333,"is_a":["meta","predicate"],"name":"in_module","title":{"_type":"trans","tr":{"en":"In module"}},"uri":"https:\/\/zotonic.com\/id\/in_module"}},"subject":{"objects":[{"created":"2026-09-30T09:18:26Z","object_id":{"id":2555,"is_a":["categorization","keyword","keyword_information_type"],"name":"zotonic_topic_reference","title":"Reference","uri":"https:\/\/zotonic.com\/id\/2555"},"seq":1},{"created":"2026-09-30T09:18:26Z","object_id":{"id":2563,"is_a":["categorization","keyword","keyword_audience"],"name":"zotonic_topic_frontend_developer","title":"Frontend developer","uri":"https:\/\/zotonic.com\/id\/2563"},"seq":2},{"created":"2026-09-30T09:18:26Z","object_id":{"id":2583,"is_a":["categorization","keyword","keyword_domain"],"name":"zotonic_topic_user_interface_and_interaction","title":"User interface and interaction","uri":"https:\/\/zotonic.com\/id\/2583"},"seq":3},{"created":"2026-09-30T09:18:26Z","object_id":{"id":2625,"is_a":["categorization","keyword","keyword_architecture"],"name":"zotonic_topic_model","title":"Model","uri":"https:\/\/zotonic.com\/id\/2625"},"seq":4},{"created":"2026-09-30T09:18:26Z","object_id":{"id":2655,"is_a":["categorization","keyword","keyword_task"],"name":"zotonic_topic_publish_and_subscribe","title":"Publish and subscribe","uri":"https:\/\/zotonic.com\/id\/2655"},"seq":5},{"created":"2026-09-30T09:18:26Z","object_id":{"id":2673,"is_a":["categorization","keyword","keyword_technology"],"name":"zotonic_topic_javascript","title":"JavaScript","uri":"https:\/\/zotonic.com\/id\/2673"},"seq":6},{"created":"2026-09-30T09:18:26Z","object_id":{"id":2718,"is_a":["categorization","keyword","keyword_technology"],"name":"zotonic_topic_cotonic","title":"Cotonic","uri":"https:\/\/zotonic.com\/id\/2718"},"seq":7}],"predicate":{"id":308,"is_a":["meta","predicate"],"name":"subject","title":{"_type":"trans","tr":{"en":"Keyword"}},"uri":"http:\/\/purl.org\/dc\/elements\/1.1\/subject"}}},"id":2756,"is_a":["text","documentation","reference","cotonic_reference","cotonic_model"],"links":[{"rel":"self","target":"https:\/\/zotonic.com\/.zotonic\/websub\/topic\/2756"},{"rel":"hub","target":"https:\/\/zotonic.com\/.zotonic\/websub"}],"medium":null,"medium_url":null,"name":"doc_zotonic_cotonic_model_activity","page_url":{"en":"https:\/\/zotonic.com\/cotonic\/zotonic-models\/activity","x-default":"https:\/\/zotonic.com\/cotonic\/zotonic-models\/activity"},"preview_url":null,"resource":{"version":19,"pivot_location_lat":null,"title":"model\/activity","is_authoritative":true,"body":"<h1>model\/activity<\/h1>\n<p>Publishes browser activity observed by Zotonic&#39;s wires script. This is an\nevent-only model: it has no <code>get<\/code>, <code>post<\/code>, or <code>delete<\/code> operations and no\navailability ping.<\/p>\n<h2>event<\/h2>\n<p>Topic: <code>model\/activity\/event<\/code>.<\/p>\n<p>The payload is <code>{ type: &quot;scroll&quot; }<\/code>, with <code>type<\/code> taken from one of these DOM\nevents: <code>scroll<\/code>, <code>mousemove<\/code>, <code>keyup<\/code>, or <code>touchstart<\/code>. There are no coordinates,\nkey values, or DOM targets in the payload.<\/p>\n<pre class=\"notranslate\"><code class=\"notranslate language-javascript\">cotonic.broker.subscribe(&quot;model\/activity\/event&quot;, function(msg) {\n    console.log(&quot;Activity:&quot;, msg.payload.type);\n});\n<\/code><\/pre>\n<p>The listeners run on <code>window<\/code> with capture and passive options. Publication is\nlimited to one message per 100 ms time bucket, shared across all four event\ntypes. Suppressed events are not queued for later delivery. Messages are not\nretained, so a new subscriber only sees subsequent activity.<\/p>\n<p>This topic is distinct from Cotonic&#39;s <code>model\/ui\/event\/recent-activity<\/code>, which\ncarries an <code>is_active<\/code> state and is used by the authentication worker.<\/p>\n<h2>Implementation<\/h2>\n<p><a href=\"https:\/\/github.com\/zotonic\/zotonic\/blob\/master\/apps\/zotonic_mod_wires\/priv\/lib\/js\/apps\/zotonic-wired.js\">JavaScript source<\/a>.<\/p>","slug":"model-activity","is_protected":false,"visible_for":0,"tz":"UTC","language":["en"],"doc_source_hash":"0d72d401f7dea9126850d628f8aec18cfd08621f4493c0f1674682c86d5df357","is_featured":false,"content_group_id":{"id":2551,"is_a":["meta","content_group"],"name":"content_group_imported_docs","title":"Imported documentation","uri":"https:\/\/zotonic.com\/id\/content_group_imported_docs"},"category_id":{"id":2723,"is_a":["meta","category"],"name":"cotonic_model","title":"Cotonic models","uri":"https:\/\/zotonic.com\/id\/cotonic_model"},"doc_source_path":"doc\/cotonic-models\/activity.md","publication_start":"2026-09-30T09:18:26Z","page_path":"\/cotonic\/zotonic-models\/activity","github_url":"https:\/\/github.com\/zotonic\/zotonic\/blob\/master\/doc\/cotonic-models\/activity.md","pivot_location_lng":null,"doc_source_kind":"cotonic_model","name":"doc_zotonic_cotonic_model_activity","is_unfindable":false,"is_published":true,"pivot_geocode":null,"created":"2026-09-30T09:18:26Z","uri":null,"doc_status":"current","is_dependent":false,"publication_end":"9999-06-01T00:00:00Z","modifier_id":{"id":1,"is_a":["person"],"name":"administrator","title":"Site Administrator","uri":"https:\/\/zotonic.com\/id\/1"},"privacy":0,"doc_source_commit":"b8c4b2ccdc223257f311968fbd17b2d66f0c4156\n","creator_id":{"id":1,"is_a":["person"],"name":"administrator","title":"Site Administrator","uri":"https:\/\/zotonic.com\/id\/1"},"modified":"2026-09-30T09:40:08Z","title_slug":"model-activity"},"uri":"https:\/\/zotonic.com\/id\/2756","uri_template":"https:\/\/zotonic.com\/id\/:id","websub":{"hub":"https:\/\/zotonic.com\/.zotonic\/websub","topic":"https:\/\/zotonic.com\/.zotonic\/websub\/topic\/2756"}},"status":"ok"}