forgejo/docs/unsure-where-to-put/adr_star_activity.md

36 lines
1.9 KiB
Markdown
Raw Normal View History

2023-10-20 16:12:37 +02:00
```
2023-11-10 14:10:23 +01:00
# edn notation
2023-10-20 16:12:37 +02:00
{@context [
"as": "https://www.w3.org/ns/activitystreams#",
"forge": "https://forgefed.org/ns#",],
2023-11-29 09:21:54 +01:00
::as/id "https://repo.prod.meissa.de/api/v1/activitypub/user-id/1/outbox/12345",
2023-10-20 16:12:37 +02:00
::as/type "Star",
::forge/source "forgejo",
2023-11-29 09:21:54 +01:00
::as/actor "https://repo.prod.meissa.de/api/v1/activitypub/user-id/1",
::as/object "https://codeberg.org/api/v1/activitypub/repository-id/12"
2023-10-20 16:12:37 +02:00
}
2023-11-10 14:10:23 +01:00
# json notation
2023-11-15 12:28:26 +01:00
{"id": "https://repo.prod.meissa.de/api/v1/activitypub/user-id/1/outbox/12345",
2023-11-10 14:10:23 +01:00
"type": "Star",
"source": "forgejo",
2023-11-15 12:28:26 +01:00
"actor": "https://repo.prod.meissa.de/api/v1/activitypub/user-id/1",
"object": "https://codeberg.org/api/v1/activitypub/repository-id/1"
2023-11-10 14:10:23 +01:00
}
2023-10-20 16:12:37 +02:00
```
This way of expressing stars will have the following features:
2023-12-19 09:21:23 +01:00
1. Actor & object may be dereferenced by (ap-)api
2023-10-20 16:12:37 +02:00
2. The activity can be referenced itself (e.g. in order to express a result of the triggered action)
3. Star is a special case of a Like. Star only happens in ForgeFed context. Different things should be named differnt ...
4. With the `source` given it would be more easy to distinguish the uri layout for object and actor id's and make implementation more straight forward
2023-12-19 09:21:23 +01:00
1. The `source` field reflects the software sending an activity. Values of may be forgejo, gitlab, ...
2. Knowing the sending system will it make easier to interact with:
1. We know exactly how the actor can be derefernced (see: https://codeberg.org/meissa/forgejo/src/commit/7cac9806f8247963b1cdce3f2c5f5d1bc3763fbe/models/forgefed/actor.go#L121)
2. We know how we can validate the given references (see: https://codeberg.org/meissa/forgejo/src/commit/7cac9806f8247963b1cdce3f2c5f5d1bc3763fbe/routers/api/v1/activitypub/repository.go#L180)
2023-10-20 16:12:37 +02:00
See also:
2023-12-19 09:21:23 +01:00
1. [spec in clojure]: https://repo.prod.meissa.de/meissa/activity-pub-poc/src/branch/forgefed_star/src/test/cljc/org/domaindrivenarchitecture/fed_poc/forgefed_test.cljc#L36-L41
2023-10-20 16:12:37 +02:00