···1[[atproto-did]]
23+After a DID document has been resolved, atproto-specific information needs
4+to be extracted. **This parsing process is agnostic to the DID method used.**
5+6+The current **handle** for the DID is found in the `alsoKnowAs` array.
7+Each element of this array is a URI. Handles will have the URI scheme `at://`,
8+followed by the **handle**, with no path or other URI parts.
9+10+- [[atproto-signing-key.md]]
11+- [[atproto-pds-service-network-location.md]]
+1-1
atproto-identity.md
···1[[atproto#Basic Concepts]]
23-Users have permanent decentralized identifiers [[atproto-did.md]] for
4their accounts. Identities include a reference to the current hosting provider
5and criptographic keys.
6
···1[[atproto#Basic Concepts]]
23+Users have permanent decentralized identifiers ([[atproto-did.md]]) for
4their accounts. Identities include a reference to the current hosting provider
5and criptographic keys.
6
+8
atproto-pds-service-network-location.md
···00000000
···1+[[atproto-did-document.md]]
2+3+The **PDS service network location** for the account is found under the
4+`service` array, with `id` ending in `#atproto_pds`, and `type` matchinng
5+`AtprotoPersonalDataServer`.
6+7+The `serviceEndpoint` field must contain an HTTPS URL of the server.
8+It should only contain the URI scheme, hostname, and optional port number.
+11
atproto-signing-key.md
···00000000000
···1+[[atproto-did-document.md]]
2+3+The public **signing key** for the account is found under
4+the `verificationMethod` array, in an object with `id` ending `#atproto`,
5+the `controller` matching the DID itself, and `type` matching the fixed
6+string `"Multikey"`. The `publicKeyMultibase` field will be the public key
7+in multibase encoding.
8+9+> [!IMPORTANT]
10+> A valid signing key is required for atproto functionality.
11+> An account with no valid key in their DID document is broken.