select c.credential_public_id
       , i.identity_public_id
       , c.data
       , c.created_at
       , c.revoked_at
       , c.deleted_at
from credential c
join identity   i using (identity_id)
where (($1 is null) or (c.credential_public_id = $1))
and (($2 is null) or (i.identity_public_id = $2))
and (($3 is null) or (c.type = $3))
and (($3 is null or $4 is null) or (c.data->$3->>'key' = $4))
