List credentials visible to the caller
const url = 'https://your-org.evershell.ai/v1/credentials';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://your-org.evershell.ai/v1/credentials \ --header 'Authorization: Bearer <token>'Permissions: any signed-in caller. Per-user narrowing
runs inside the handler: callers without auth:write (so
Members holding only auth:write:own, or callers with no
auth scope at all) see only org-scoped credentials plus
their own personal override rows; Operators+ see every
credential including other members’ personal overrides.
Authorizations
Section titled “Authorizations ”Responses
Section titled “ Responses ”OK
object
object
Non-null for personal (per-user) credentials
oauth2_jwt_bearer_with_subject is Google domain-wide
delegation — same SA JSON key as the durable credential,
but mint requests carry a sub claim that impersonates the
email in provider_config.subject.
Vault path to the durable secret. Reference only — the secret value is never returned.
Provider-specific structured config. Common shapes:
{client_id, tenant_id} for Microsoft client_credentials,
{subject} for Google domain-wide delegation,
{username} for basic_auth. Never carries the secret.
object
Timestamp of the most recent successful mint by the proxy’s broker.
Short status code from the most recent mint attempt — populated alongside status=needs_reauth to surface the broker’s terminal-error reason.
AC-kind only — lets members create personal overrides
Example
{ "credentials": [ { "provider": "google", "kind": "oauth2_authorization_code", "status": "active" } ]}Credentials subsystem isn’t configured on this CP (auth_disabled).
object
object
Closed-enum slug (e.g. permission_denied, validation_error, workspace_not_found)
Human-readable summary
Server-generated request id for correlating logs
Optional structured context. Validation errors land at
details.fields as a per-field map.
object
Example
{ "error": { "code": "permission_denied", "message": "caller lacks required scope", "request_id": "7f3a9c2e" }}