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