# content
keyId is a problem.

Generally speaking, most Actors have a `keyId' that looks something like:

https://enigmatick.social/user/jdt#main-key

When an inbox POST arrives from an unknown user, we can chop off the bit including #main-key and we can pull the remaining URL as the Actor's ID.

But some implementations decided they should use /main-key instead. That indicates that the keyId format is unreliable and not well-specified. So I switched to deferring this header check for unknown Actors deeper into my ingestion pipeline so that I could retrieve the actor string from the object being sent. That works pretty well.

But GET requests. Like followers_synchronization. Dammit. There's no object to refer to. So we're back to parsing the keyId and hoping for meaning.

Out of 124,007 Actors in my database, 587 do not comply with the #main-key convention.

enigmatick=> select count(*) from actors where as_public_key->>'id' NOT LIKE '%#main-key';
count
-------
587
(1 row)

For full coverage, I need to accommodate /main-key and #key as well

#ActivityPub

# source.content
`keyId` is a problem.

Generally speaking, most Actors have a `keyId' that looks something like:

```
https://enigmatick.social/user/jdt#main-key
```

When an `inbox` `POST` arrives from an unknown user, we can chop off the bit including `#main-key` and we can pull the remaining URL as the Actor's ID.

But some implementations decided they should use `/main-key` instead. That indicates that the `keyId` format is unreliable and not well-specified. So I switched to deferring this header check for unknown Actors deeper into my ingestion pipeline so that I could retrieve the `actor` string from the object being sent. That works pretty well.

But `GET` requests. Like `followers_synchronization`. Dammit. There's no object to refer to. So we're back to parsing the `keyId` and hoping for meaning.

Out of 124,007 Actors in my database, 587 do not comply with the `#main-key` convention.

```
enigmatick=> select count(*) from actors where as_public_key->>'id' NOT LIKE '%#main-key';
count
-------
587
(1 row)
```
For full coverage, I need to accommodate `/main-key` and `#key` as well

#ActivityPub