dev.cocore.app.registration

How an application announces itself to co/core so it can connect users' accounts with one click ("Sign in with co/core"). Published by the application on ITS OWN account (a did:plc or did:web with a repo), one record per DID at rkey `self` — there is no central app registry. When the app calls `dev.cocore.devicePair.start` with `appDid`, the AppView reads this record from the app's PDS: `name` is what the approve screen shows, and `returnUrls` are the only places the approve screen may send the browser afterwards. A return URL is additionally honoured only when its host proves it belongs to this DID by serving `https://<host>/.well-known/cocore-app.json` containing `{"did": "<this DID>"}` — so a record on a stranger's account cannot borrow a real app's domain.

Repository @cocore.dev did:plc:5quuhkmwe2q4k3azfsgg7kdz not from the namespace authority
Details · record, key literal:self
Kindrecord
Record keyliteral:self
Authorityapp.cocore.dev
Indexed
cid bafyreic6itttr2jqjj5usqvzalbbtv35xbnfxi2q3ixabbyhtsuvfpmh3m

Checks

Valid
  • missing-primary-description defs.mainThe record has no description.
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "key": "literal:self",
      "record": {
        "properties": {
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "description": {
            "description": "One sentence on what the app does with the connection. Plain text.",
            "maxLength": 300,
            "type": "string"
          },
          "iconUrl": {
            "description": "Square icon, https. Optional.",
            "format": "uri",
            "maxLength": 2048,
            "type": "string"
          },
          "name": {
            "description": "Human name of the application, shown on the approve screen.",
            "maxLength": 40,
            "type": "string"
          },
          "returnUrls": {
            "description": "Where the approve screen may send the browser after approval. https only. A requested return URL must match one of these on origin and path (its query string may differ).",
            "items": {
              "format": "uri",
              "maxLength": 2048,
              "type": "string"
            },
            "maxLength": 10,
            "type": "array"
          },
          "updatedAt": {
            "format": "datetime",
            "type": "string"
          },
          "website": {
            "description": "The app's home page, linked from the approve screen.",
            "format": "uri",
            "maxLength": 2048,
            "type": "string"
          }
        },
        "required": [
          "name",
          "returnUrls",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "How an application announces itself to co/core so it can connect users' accounts with one click (\"Sign in with co/core\"). Published by the application on ITS OWN account (a did:plc or did:web with a repo), one record per DID at rkey `self` — there is no central app registry. When the app calls `dev.cocore.devicePair.start` with `appDid`, the AppView reads this record from the app's PDS: `name` is what the approve screen shows, and `returnUrls` are the only places the approve screen may send the browser afterwards. A return URL is additionally honoured only when its host proves it belongs to this DID by serving `https://<host>/.well-known/cocore-app.json` containing `{\"did\": \"<this DID>\"}` — so a record on a stranger's account cannot borrow a real app's domain.",
  "id": "dev.cocore.app.registration",
  "lexicon": 1
}