@ -81,7 +81,7 @@ After retrieving an object, the client MUST verify its [FEP-8b32][FEP-8b32] inte
## Portable actors
An actor object identified by `ap://` URL MUST have the `gateway` property containing an ordered list of gateways where the latest version of that actor object can be retrieved. Each item in the list MUST be an HTTP(S) [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin), and the list MUST contain at least one item.
An actor object identified by `ap://` URL MUST have the `gateways` property containing an ordered list of gateways where the latest version of that actor object can be retrieved. Each item in the list MUST be an HTTP(S) [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin), and the list MUST contain at least one item.
An actor object identified by `ap://` URL MUST contain an [FEP-8b32][FEP-8b32] integrity proof.
When ActivityPub object containing a reference to another actor is being constructed, implementations SHOULD provide a list of gateways where specified actor object can be retrieved. This list MAY be provided using the `gateway` query parameter. Each gateway address MUST be URL-endcoded, and if multiple addresses are present they MUST be separated by commas.
When ActivityPub object containing a reference to another actor is being constructed, implementations SHOULD provide a list of gateways where specified actor object can be retrieved. This list MAY be provided using the `gateways` query parameter. Each gateway address MUST be URL-endcoded, and if multiple addresses are present they MUST be separated by commas.
This URL indicates that object can be retrieved from two gateways:
@ -140,7 +140,7 @@ Implementations MUST discard query parameters when comparing `ap://` identifiers
### Inboxes and outboxes
Servers and clients MUST use gateways to deliver activities to inboxes or outboxes. Servers specified in the `gateway` property of an actor object MUST accept POST requests to respective gateway URLs.
Servers and clients MUST use gateways to deliver activities to inboxes or outboxes. Servers specified in the `gateways` property of an actor object MUST accept POST requests to respective gateway URLs.
`ap://` URLs might not be compatible with existing [ActivityPub][ActivityPub] implementations. To provide backward compatibility, gateway-based HTTP(S) URLs of objects can be used instead of their actual `ap://` identifiers.
Publishers MUST use the first gateway from actor's `gateway` list when constructing compatible identifiers. Consuming implementations that support `ap://` URLs MUST remove the part of the URL preceding `did:` and re-construct the canonical `ap://` identifier.
Publishers MUST use the first gateway from actor's `gateways` list when constructing compatible identifiers. Consuming implementations that support `ap://` URLs MUST remove the part of the URL preceding `did:` and re-construct the canonical `ap://` identifier.
Publishers MUST NOT add the `gateway` query parameter to object IDs if compatible identifiers are used.
Publishers MUST NOT add the `gateways` query parameter to object IDs if compatible identifiers are used.
## Discussion
@ -217,7 +217,7 @@ An alternative to the `ap://` URL scheme could be a new DID method providing [DI
### Discovering locations
This proposal makes use of the `gateway` property, but the following alternatives are being considered:
This proposal makes use of the `gateways` property, but the following alternatives are being considered:
- `aliases` and [`sameAs`](https://schema.org/sameAs) (containing HTTP(S) URLs of objects)
- `alsoKnownAs` (used for account migrations, so the usage of this property may cause issues)