AEP Foundation Specifications

Complete Inspect Document Example

This example shows a Service that supports the baseline HTTP binding, did:web,
and the three initial session-credential grant types.

GET /.well-known/aep HTTP/1.1
Host: api.example.com
Accept: application/aep+json
HTTP/1.1 200 OK
Content-Type: application/aep+json
Cache-Control: max-age=300
ETag: "aep-inspect-20260627"
{
  "aep_version": "1.0",
  "authentication": {
    "methods": ["aep-jwt", "oauth-bearer", "api-key", "basic"]
  },
  "bindings": {
    "supported": ["http"]
  },
  "claims": {
    "optional": ["owner.name"],
    "preferred": ["owner.organization"],
    "required": ["contact.email"]
  },
  "commands": {
    "grant_types": ["oauth-bearer", "api-key", "basic"],
    "grant_types_config": {
      "api-key": {
        "default_lifetime_seconds": "2592000",
        "header_names": ["x-api-key"],
        "scopes_supported": ["read", "write"],
        "supports_per_credential_revoke": "true"
      },
      "basic": {
        "default_lifetime_seconds": "86400",
        "realm": "api.example.com",
        "scopes_supported": ["read"],
        "supports_per_credential_revoke": "true"
      },
      "oauth-bearer": {
        "access_token_formats": ["opaque"],
        "default_lifetime_seconds": "900",
        "introspection_endpoint": "https://api.example.com/oauth/introspect",
        "revocation_endpoint": "https://api.example.com/oauth/revoke",
        "scopes_supported": ["read", "write"],
        "supports_per_credential_revoke": "true"
      }
    },
    "supported": ["enroll", "grant", "inspect", "revoke", "status"]
  },
  "core": {
    "signing_algorithms": ["EdDSA", "ES256"]
  },
  "extensions": {
    "supported": []
  },
  "http": {
    "endpoint_base": "/aep/",
    "openapi": {
      "path_matching": {"trailing_slash": "strict"},
      "url": "/openapi.json"
    }
  },
  "identity": {
    "methods": ["did:web"]
  },
  "service": {
    "did": "did:web:api.example.com"
  }
}

The Inspect response origin and the origin encoded by service.did are both
https://api.example.com. An Agent rejects the document before provisioning,
signing, or credential transmission if those origins differ. A path-bearing DID,
such as did:web:api.example.com:services:primary, has the same origin and is
also valid for this Inspect URL.