# Credential Verification

> Validate Verifiable Credentials using Verification Service.

## Install Dependency

Package: affinidi_tdk_credential_verification_client

```bash
dart pub add affinidi_tdk_credential_verification
```

Check the latest version on [pub.dev](https://pub.dev/packages/affinidi_tdk_credential_verification_client) or view the source on [GitHub](https://github.com/affinidi/affinidi-tdk-dart/tree/main/clients/credential_verification_client).

## Classes and Methods

### Default API

Verify Verifiable Credentials and Verifiable Presentations.

#### verifyCredentials

Verifies verifiable credentials.

Parameters

    verifyCredentialInput
    VerifyCredentialInput
    Required
  List of verifiable credentials to validate.

Example

```dart
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:dotenv/dotenv.dart';
import 'package:affinidi_tdk_credential_verification_client/affinidi_tdk_credential_verification_client.dart';
import 'package:ssi/ssi.dart';

try {
    late DefaultApi defaultApi;

    final dio = Dio(
      BaseOptions(
        baseUrl: AffinidiTdkCredentialVerificationClient.basePath,
        connectTimeout: const Duration(seconds: 5),
        receiveTimeout: const Duration(seconds: 5),
      ),
    );
    final apiClient = AffinidiTdkCredentialVerificationClient(
      dio: dio,
      authTokenHook: authProvider.fetchProjectScopedToken,
    );
    defaultApi = apiClient.getDefaultApi();

   final verifiableCredentials = ListBuilder()
      ..add(W3cCredential((b) => b
        ..atContext = W3cPresentationContextBuilder()
        ..id = ''
        ..type = ListBuilder()
        ..holder = W3cCredentialHolderBuilder()
        ..credentialSubject = W3cCredentialCredentialSubjectBuilder()
        ..credentialStatus = W3cCredentialStatusBuilder()
        ..issuanceDate = ''
        ..issuer = ''
        ..expirationDate = ''
        ..proof = W3cProofBuilder()
        ..credentialSchema = W3cCredentialCredentialSchemaBuilder()
      ));

  final verifyCredentialInput = VerifyCredentialInputBuilder()
      ..verifiableCredentials = verifiableCredentials;

    final response = (await defaultApi.verifyCredentials(verifyCredentialInput: verifyCredentialInput.build()));

    print(response);
  } catch (e) {
    print('Exception: $e');
  }
```

#### verifyPresentation

Verifies a verifiable presentation.

Parameters

    verifyPresentationInput
    VerifyPresentationInput
    Required
  Verifiable presentation to validate.

Example

```dart
import 'package:dio/dio.dart';
import 'package:affinidi_tdk_auth_provider/affinidi_tdk_auth_provider.dart';
import 'package:dotenv/dotenv.dart';
import 'package:affinidi_tdk_credential_verification_client/affinidi_tdk_credential_verification_client.dart';
import 'package:ssi/ssi.dart';

try {
    late DefaultApi defaultApi;

    final dio = Dio(
      BaseOptions(
        baseUrl: AffinidiTdkCredentialVerificationClient.basePath,
        connectTimeout: const Duration(seconds: 5),
        receiveTimeout: const Duration(seconds: 5),
      ),
    );
    final apiClient = AffinidiTdkCredentialVerificationClient(
      dio: dio,
      authTokenHook: authProvider.fetchProjectScopedToken,
    );
    defaultApi = apiClient.getDefaultApi();

    final verifiablePresentation = W3cPresentationBuilder();  

    final verifyPresentationInput = VerifyPresentationInputBuilder()
      ..verifiablePresentation = verifiablePresentation;

    final response = (await defaultApi.verifyPresentation(verifyPresentationInput: verifyPresentationInput.build()));

    print(response);
  } catch (e) {
    print('Exception: $e');
  }
```
