# Overview

## Welcome to mio.ID Business

This documentation provides step-by-step guidance on integrating mio.ID services into your application.

## Why mio.ID?

mio.ID empowers businesses to accelerate digital transformation and enhance scalability by optimizing client onboarding and risk management processes. By incorporating advanced identity verification and background checks, our platform helps reduce risks while ensuring regulatory compliance.

## Key Benefits of mio.ID Integration

* **Faster Approvals:** Streamline the onboarding process with pre-approved identity trust, enabling quicker client activation and preferred rates.
* **Enhanced Revenue and Conversion:** Improve conversion rates with seamless, frictionless experiences that attract and retain clients.
* **Advanced Biometric Solutions:** Simplify payments and authentication through cutting-edge biometric verification, offering a secure and efficient alternative to traditional methods.
* **Risk Management and Compliance:** Effectively mitigate risks and maintain compliance with regulatory requirements through robust identity and transaction monitoring tools.
* **Operational Efficiency:** Automate workflows to reduce manual errors and increase productivity, ensuring a smooth client journey from onboarding to ongoing interactions.

By integrating mio.ID, businesses can deliver a secure, seamless client experience, positioning themselves as trusted providers in an increasingly competitive digital landscape.\
Let’s get started — explore how mio.ID can transform your operations today!


# Data Dictionary

The Data Dictionary serves as a comprehensive guide to understanding and utilizing the various data objects available through our API. It provides detailed descriptions, field definitions, and relationships for key entities like Objects and Taxonomy, enabling developers to fully integrate and optimize their use of the mio.ID platform.

This section is an essential reference for structuring API calls and interpreting responses, ensuring accurate and efficient interaction with our system. By exploring the pages linked here, you'll gain insights into how to utilize the platform's features, such as Activities, Members, and Requirements, and adapt them to your specific needs.


# Glossary

The Glossary provides a comprehensive reference for key terms and concepts used throughout the mio.ID developer documentation. This section is divided into subsections, each focusing on a specific aspect of the platform, offering clear and concise definitions to aid understanding and implementation.

### Subsections

#### [Entity or Member](/api-reference/data-dictionary/glossary/entity-or-member)

This subsection explains the structure and attributes of entities and members in the mio.ID platform. It outlines how individuals and businesses are represented within the system, their unique identifiers, and associated metadata.

#### [Activity](/api-reference/data-dictionary/glossary/activity)

This subsection defines activities within the mio.ID ecosystem. It describes the various actions and events tracked on the platform, including their structure, types, statuses, and related metadata.

#### [Requirement](/api-reference/data-dictionary/glossary/requirement)

This subsection elaborates on the requirements object. It details how specific personal details or documents are requested, shared, or processed between entities during an activity.

The Glossary serves as a central resource for understanding the terminology and parameters critical for integrating and leveraging mio.ID’s API capabilities.


# Entity or Member

The *Entity or Member* object within the mio.ID platform represents individuals or businesses registered within the system. This object contains metadata such as unique identifiers, avatar/logo, identity trust score, and other details crucial for recognizing and interacting with the registered participants in the platform. Both individuals and businesses can be categorized as members, and each member is assigned a unique identifier to distinguish them within the system.

## Member Type

Defines the type of user registered in mio.ID.

<table><thead><tr><th width="221">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>INDIVIDUAL</code></td><td>Represents a single user or consumer.</td></tr><tr><td><code>BUSINESS</code></td><td>Represents a company or organization..</td></tr></tbody></table>

## Identity Trust Score Level

This determines the identity trust level based entirely on the user's scoring at the moment.

<table><thead><tr><th width="195">Level</th><th>Description</th></tr></thead><tbody><tr><td><code>POOR</code></td><td>Trust score range: 300 - 499</td></tr><tr><td><code>FAIR</code></td><td>InTrust score range: 500 - 649</td></tr><tr><td><code>GOOD</code></td><td>Trust score range: 650 - 749</td></tr><tr><td><code>EXCELENT</code></td><td>Trust score range: 750 - 850</td></tr></tbody></table>

## Identity Trust Score

This is the numerical value representing the level of trust associated with the user's identity, calculated based on various factors.

<table><thead><tr><th width="190">Score</th><th>Description</th></tr></thead><tbody><tr><td>300 - 850</td><td>The trust score is calculated within a range of 300 to 850. The higher the score, the more trustworthy the user’s identity is considered.</td></tr></tbody></table>

This score helps assess the risk and reliability of the user or business within the platform, facilitating safer transactions and interactions.


# Activity

The *Activity* section defines the different types of interactions and statuses available within the mio.ID platform. It helps users understand the nature of actions, their outcomes, and how they evolve over time.

## Activity Type

Each activity type represents a distinct interaction initiated or received within the platform:

<table><thead><tr><th width="153">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>AT_001</code></td><td><strong>Request Details:</strong> An initiator sends a request to a receptor, asking for approval to access their personal details.</td></tr><tr><td><code>AT_002</code></td><td><strong>Share Details:</strong> An initiator shares their personal details directly with the receptor without requiring further approval.</td></tr><tr><td><code>AT_003</code></td><td><strong>Swap Details:</strong> A reciprocal exchange of personal details. The receptor can accept all or part of the requested details, which become visible to both parties.</td></tr><tr><td><code>AT_004</code></td><td><strong>Authorization Request:</strong> A request for transaction or process approval. This may include BioFace authentication for enhanced security and verification.</td></tr></tbody></table>

## Activity Status

Statuses track the current state of an activity, helping users understand its progression and outcome:

<table><thead><tr><th width="228">Status</th><th>Description</th></tr></thead><tbody><tr><td><code>SENT</code></td><td><p>The activity has been created and is pending the receptor’s attention.</p><p>This status is visible only to the initiator.</p></td></tr><tr><td><code>ACTION_REQUIRED</code></td><td><p>The activity is awaiting the receptor's response within the specified validity period.</p><p>This status is visible only to the receptor.</p></td></tr><tr><td><code>ACCEPTED</code></td><td>The receptor has approved the activity. Accepted personal details are shared and visible to both parties for the duration of the defined sharing period.</td></tr><tr><td><code>DECLINED</code></td><td>The receptor has declined the activity. No personal details will be shared or visible to either party.</td></tr><tr><td><code>CANCELED</code></td><td>The activity was not attended to within the validity period and is now inactive. No personal details were shared or made visible.</td></tr><tr><td><code>EXPIRED</code></td><td>The sharing period defined by the receptor has ended, and the activity is no longer valid. No personal details are accessible to either party.</td></tr><tr><td><code>COMPLETED</code></td><td>Both parties have finalized the activity successfully. Any shared personal details remain visible within the agreed sharing period.</td></tr></tbody></table>


# Requirement

The Requirement object defines the personal details, actions, or validations requested by the initiator of an activity. It ensures flexibility by allowing the recipient (receptor) to decide which details to share while meeting the requirements of the activity.

## Requirement Type

The Requirement Type specifies the format or nature of the requested data or action in an activity.

**Available in: GET** (response only).

<table><thead><tr><th width="193">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>RTP_001</code></td><td>Requires the execution of a BioFace Authentication Flow.</td></tr><tr><td><code>RTP_002</code></td><td>Requests personal details in the form of structured data values (JSON object).</td></tr><tr><td><code>RTP_003</code></td><td>Requests images, such as selfies or identity document photos (front and back) as a binary file.</td></tr><tr><td><code>RTP_004</code></td><td>Requests a combination of structured personal details (<strong>RTP_002</strong>) OR image data (<strong>RTP_003</strong>).</td></tr><tr><td><code>RTP_005</code></td><td>Requests a combination of structured personal details (<strong>RTP_002</strong>) AND image data (<strong>RTP_003</strong>).</td></tr></tbody></table>

## Requirement Category

The Requirement Category groups requirements into logical categories based on the type of information being requested.

**Available in: GET** (response only).

<table><thead><tr><th width="192">Category</th><th>Description</th></tr></thead><tbody><tr><td><code>RQC_001</code></td><td>Refers to Identity-related personal details.</td></tr><tr><td><code>RQC_002</code></td><td>Refers to Background-related personal details.</td></tr><tr><td><code>RQC_003</code></td><td>Refers to Document-related details</td></tr></tbody></table>

## Requirement Code

The Requirement Code uniquely identifies a group of personal detail requirements, requests, or actions within an activity. Each Requirement Item specifies the precise data or action associated with the requirement, outlining what will be included in the request. The table below lists all available Requirement Codes and their corresponding Requirement Items, which can be included in a request.

**Available in: POST** (request) and **GET** (response).

<table data-full-width="true"><thead><tr><th width="163">Code</th><th width="253">Description</th><th>Requirement Items</th></tr></thead><tbody><tr><td><code>RQ_001</code></td><td>BioFace Authentication</td><td>-</td></tr><tr><td><code>RQ_002</code></td><td>Identity Trust</td><td><ul><li><code>IDT_001</code>   Member Since</li><li><code>IDT_002</code>   Identity Trust Score</li><li><code>IDT_003</code>   Identity Trust Score Level</li><li><code>IDT_004</code>   IDV Timestamp</li></ul></td></tr><tr><td><code>RQ_003</code></td><td>Selfie</td><td>-</td></tr><tr><td><code>RQ_004</code></td><td>Personal Information</td><td><ul><li><code>PIF_001</code>   Profile Name</li><li><code>PIF_002</code>   Fullname</li><li><code>PIF_003</code>   Surname</li><li><code>PIF_004</code>   Given names</li><li><code>PIF_005</code>   Date of Birth</li><li><code>PIF_006</code>   Gender</li><li><code>PIF_007</code>   Marital Status</li></ul></td></tr><tr><td><code>RQ_005</code></td><td>Nationality</td><td>-</td></tr><tr><td><code>RQ_006</code></td><td>Identity Document</td><td><ul><li><code>IDC_001</code>   Frontside image</li><li><code>IDC_002</code>   Backside image</li><li><code>IDC_003</code>   Document Information</li></ul></td></tr><tr><td><code>RQ_007</code></td><td>Address</td><td>-</td></tr><tr><td><code>RQ_008</code></td><td>Phone</td><td>-</td></tr><tr><td><code>RQ_009</code></td><td>Email</td><td>-</td></tr><tr><td><code>RQ_010</code></td><td>Government Tax ID</td><td>-</td></tr><tr><td><code>RQ_011</code></td><td>Occupation</td><td>-</td></tr><tr><td><code>RQ_012</code></td><td>Employment</td><td>-</td></tr><tr><td><code>RQ_013</code></td><td>Compliance</td><td>-</td></tr><tr><td><code>RQ_014</code></td><td>Income</td><td>-</td></tr><tr><td><code>RQ_015</code></td><td>Proof of Residence</td><td>-</td></tr><tr><td><code>RQ_016</code></td><td>Proof of Income</td><td>-</td></tr><tr><td><code>RQ_017</code></td><td>Proof of Employment</td><td>-</td></tr><tr><td><code>RQ_018</code></td><td>Proof of Education</td><td>-</td></tr><tr><td><code>RQ_019</code></td><td>Proof of Ownership</td><td>-</td></tr><tr><td><code>RQ_020</code></td><td>Proof of Funds</td><td>-</td></tr><tr><td><code>RQ_021</code></td><td>Proof of Insurance</td><td>-</td></tr><tr><td><code>RQ_022</code></td><td>Legal Document</td><td>-</td></tr><tr><td><code>RQ_023</code></td><td>House Owner</td><td>-</td></tr><tr><td><code>RQ_024</code></td><td>Housing Monthly Cost</td><td>-</td></tr></tbody></table>

## Accepted Requirements

The Accepted Requirement items uniquely identify the details of the elements associated with the Requirement Items. These accepted elements are grouped under a Requirement Code and represent the data included in the response.

The table below lists all available Acceptance Codes returned as part of the response.

<table data-full-width="true"><thead><tr><th width="183">Requirement</th><th width="163">Property</th><th>Example</th></tr></thead><tbody><tr><td><code>RQ_002</code></td><td><code>items</code></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json"><strong>[
</strong>  {
    "code": "IDT_001", // Member Since
    "data": {
      "value": 1704085200000
    }
  },
  {
    "code": "IDT_002", // Identity Trust Score
    "data": {
      "value": 450
    }
  },
  {
    "code": "IDT_003", // Identity Trust Score Level
    "data": {
      "value": "POOR"
    }
  },
  {
    "code": "IDT_004", // IDV Timestamp
    "data": {
      "datetime": 1704085200000
    }
  }
]
</code></pre></td></tr><tr><td><code>RQ_003</code></td><td><code>data</code></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">{
  "url": "https://url.com/my-selfie.png"
}
</code></pre></td></tr><tr><td><code>RQ_004</code></td><td><code>items</code></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">[
  {
    "code": "PIF_001", // Profile Name
    "data": {
      "value": "John Doe"
    }
  },
  {
    "code": "PIF_002", // Fullname
    "data": {
      "value": "John Martin Doe"
    }
  },
  {
    "code": "PIF_003", // Surname
    "data": {
      "value": "Doe"
    }
  },
  {
    "code": "PIF_004", // Given names
    "data": {
      "value": "John Martin"
    }
  },
  {
    "code": "PIF_005", // Date of Birth
    "data": {
      "value": "1984-12-31"
    }
  },
  {
    "code": "PIF_006", // Gender
    "data": {
      "value": "M"
    }
  },
  {
    "code": "PIF_007", // Marital Status
    "data": {
      "value": "Single"
    }
  }
]
</code></pre></td></tr><tr><td><code>RQ_005</code></td><td><code>data</code></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">{
  "nationality": "US"
}
</code></pre></td></tr><tr><td><code>RQ_006</code></td><td><code>items</code></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">[
  {
    "code": "IDC_001", // Frontside image
    "data": {
      "url": "https://url.com/front-image.png"
    }
  },
  {
    "code": "IDC_002", // Backside image
    "data": {
      "url": "https://url.com/back-image.png"
    }
  },
  {
    "code": "IDC_003", // Document Information
    "data": {
      "fullname": "John Martin Doe",
      "given_names": "John Martin",
      "surnames": "Doe",
      "first_name": "John",
      "middle_name": "Martin",
      "surname": "Doe",
      "second_surname": null,
      "gender": "M",
      "age": "40",
      "date_of_birth": "1984-12-31",
      "marital_status": "Single",
      "height": "5'10''",
      "weight": "220lb",
      "eyes_color": "Blue",
      "hair_color": "Black",
      "nationality": "US",
      "place_of_birth": "US",
      "address": "1853 E Orleans St.",
      "city": "Philadelphia",
      "state": "Pennsylvania",
      "zipcode": "19134",
      "address_country": "US",
      "category": "Government issued-id",
      "type": "PASSPORT",
      "type_name": "Passport",
      "id_number": "987654321",
      "alternate_number": "12345678",
      "document_place_of_issue": "US",
      "document_issuing_state": "PA",
      "document_issuing_state_name": "Pennsylvania",
      "document_issuing_country": "US",
      "document_issuing_date": "2020-01-01",
      "document_expiration_date": "2029-12-31",
      "rfid_present": true
    }
  }
]
</code></pre></td></tr><tr><td><code>RQ_007</code></td><td><code>data</code></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">{
  "country": "US",
  "state": "Pennsylvania",
  "city": "Philadelphia",
  "address": "1853 E Orleans St.",
  "zipcode": "19134"
}
</code></pre></td></tr><tr><td><code>RQ_008</code></td><td><code>data</code></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">{
  "country_code": "US",
  "number": "9876543210"
}
</code></pre></td></tr><tr><td><code>RQ_009</code></td><td><code>data</code></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">{
  "recipient": "playground@preventor.com"
}
</code></pre></td></tr><tr><td><code>RQ_010</code></td><td><code>data</code></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">{
  "country": "PE",
  "type": "BT_001",
  "number": "456BH9312B1"
}
</code></pre></td></tr><tr><td><code>RQ_011</code></td><td><code>data</code></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">{
  "code": "OCC_004"
}
</code></pre></td></tr><tr><td><code>RQ_012</code></td><td><code>data</code></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">{
  "status": "EMS_001",
  "title": "Engineer",
  "start_date": "2024-01-01",
  "end_date": "2028-12-31",
  "employer": {
    "name": "Microsoft Corp.",
    "address": {
      "country": "US",
      "city": "Philadelphia",
      "state": "Pennsylvania",
      "address": "1801 E Orleans St.",
      "zipcode": "19134"
    }
  }
}
</code></pre></td></tr><tr><td><code>RQ_014</code></td><td><code>data</code></td><td><pre class="language-json"><code class="lang-json">{
  "currency": "USD",
  "income": 300000,
  "symbol": "$"
}
</code></pre></td></tr><tr><td><code>RQ_015</code></td><td><code>data</code></td><td><pre class="language-json"><code class="lang-json">{
  "type": "DCT_001",
  "name": "Document of residence",
  "owner": "Donald Trump",
  "issuing_entity": "US Government",
  "issuing_date": "2020-01-01",
  "expiration_date": "2030-05-30",
  "url": "https://url.com/document"
}
</code></pre></td></tr><tr><td><code>RQ_016</code></td><td><code>data</code></td><td><pre class="language-json"><code class="lang-json">{
  "type": "DCT_002",
  "name": "Payment bill",
  "owner": "Donald Trump",
  "issuing_entity": "Microsoft Corp.",
  "issuing_date": "2020-01-01",
  "url": "https://url.com/document"
}
</code></pre></td></tr><tr><td><code>RQ_017</code></td><td><code>data</code></td><td><pre class="language-json"><code class="lang-json">{
  "type": "DCT_003",
  "name": "Employment contract",
  "owner": "Donald Trump",
  "issuing_entity": "Google LLC",
  "issuing_date": "2020-01-01",
  "expiration_date": "2030-05-30",
  "url": "https://url.com/document"
}
</code></pre></td></tr><tr><td><code>RQ_018</code></td><td><code>data</code></td><td><pre class="language-json"><code class="lang-json">{
  "type": "DCT_004",
  "name": "Graduation document",
  "owner": "Donald Trump",
  "issuing_entity": "Georgia University",
  "issuing_date": "1985-01-01",
  "url": "https://url.com/document"
}
</code></pre></td></tr><tr><td><code>RQ_019</code></td><td><code>data</code></td><td><pre class="language-json"><code class="lang-json">{
  "type": "DCT_005",
  "name": "House ownership",
  "owner": "Donald Trump",
  "issuing_entity": "US Government",
  "issuing_date": "2020-01-01",
  "url": "https://url.com/document"
}
</code></pre></td></tr><tr><td><code>RQ_020</code></td><td><code>data</code></td><td><pre class="language-json"><code class="lang-json">{
  "type": "DCT_006",
  "name": "Funds inform",
  "owner": "Donald Trump",
  "issuing_entity": "US Government",
  "issuing_date": "2020-01-01",
  "url": "https://url.com/document"
}
</code></pre></td></tr><tr><td><code>RQ_021</code></td><td><code>data</code></td><td><pre class="language-json"><code class="lang-json">{
  "type": "DCT_007",
  "name": "Insurance contract",
  "owner": "Donald Trump",
  "issuing_entity": "US Government",
  "issuing_date": "2020-01-01",
  "expiration_date": "2030-05-30",
  "url": "https://url.com/document"
}
</code></pre></td></tr><tr><td><code>RQ_022</code></td><td><code>data</code></td><td><pre class="language-json"><code class="lang-json">{
  "type": "DCT_008",
  "name": "Divorce agreement",
  "owner": "Donald Trump",
  "issuing_entity": "US Government",
  "issuing_date": "2020-01-01",
  "url": "https://url.com/document"
}
</code></pre></td></tr><tr><td><code>RQ_023</code></td><td><code>data</code></td><td><pre class="language-json"><code class="lang-json">{
  "is_owner": false
}
</code></pre></td></tr><tr><td><code>RQ_024</code></td><td><code>data</code></td><td><pre class="language-json"><code class="lang-json">{
  "currency": "USD",
  "symbol": "$",
  "cost": 80000
}
</code></pre></td></tr></tbody></table>


# Objects

Across our API endpoints, several key objects are available to interact with, each serving a specific function within the mio.ID ecosystem. Below is a summary of the core objects and links to their detailed descriptions, including fields and use cases:

* [Member](/api-reference/data-dictionary/objects/entity-or-member)\
  Represents a registered individual or business in the mio.ID platform.\
  **Use Case:** Interact with individuals or businesses, verify identity, or initiate activities.\
  **Endpoints:** Accessible through Community-related APIs.
* [Activity](/api-reference/data-dictionary/objects/activity)\
  Represents requests, sharings, or exchanges initiated by members or businesses.\
  **Use Case:** Create, track, or respond to data-sharing requests between entities.\
  **Endpoints:** Includes APIs to list activities, retrieve details, and create requests.
* [Requirement](/api-reference/data-dictionary/objects/requirement)\
  Defines conditions or prerequisites associated with an activity.\
  **Use Case:** Set or retrieve specific requirements necessary to complete an interaction.\
  **Endpoints:** Useful for customizing workflows based on compliance or business logic.
* [Webhook](/api-reference/data-dictionary/objects/webhook)\
  Represents a configured endpoint for receiving real-time event notifications.

  **Use Case:** Automate workflows by subscribing to events like activity updates or member changes.\
  **Endpoints:** Manage webhooks to receive notifications for specified events.

For detailed field information, request structure, and usage examples, refer to the respective object documentation in the [API](/api-reference/api-endpoints) Developer Guide.


# Entity or Member

The **Entity** or **Member** profile object represents the metadata associated with a mio.ID account, encapsulating essential information about the individual or business entity tied to the profile.

### Primary Use

This object is the main data structure returned by the **Community Endpoint**, providing comprehensive details about registered users or businesses.

### Contextual Use

The **Member** object can also appear as a nested child within the **Activity Object**, where it provides specific details related to user interactions, such as transaction approvals, data sharing, or other events within the mio.ID ecosystem.

### Representation

The **Entity or Member** object supports both:

* **Individuals (users)**: Personal accounts tied to a single user.
* **Businesses**: Profiles associated with registered organizations.

This flexibility ensures robust data handling for diverse use cases across the mio.ID platform.

### Fields

<table data-full-width="true"><thead><tr><th width="244">Field</th><th width="167">Type</th><th width="551">Description</th></tr></thead><tbody><tr><td><code>id</code></td><td><code>string</code></td><td>The unique identifier for a mioID entity or member.</td></tr><tr><td><code>name</code></td><td><code>string</code></td><td>Name of this member.</td></tr><tr><td><code>cifcode</code></td><td><code>string</code></td><td>A secondary unique identifier, often referred to as the business's customer unique ID.</td></tr><tr><td><code>type</code></td><td><code>string</code></td><td>Specifies the type of registered member.<br>It can be either <code>INDIVIDUAL</code> or <code>BUSINESS</code><br><code>R</code>fer to <a href="/api-reference/data-dictionary/glossary/entity-or-member#member-type">Member Type</a> for more information.</td></tr><tr><td><code>avatar</code></td><td><code>string</code></td><td>The URL of the avatar or logo associated with a business member.</td></tr><tr><td><code>score</code></td><td><code>number</code></td><td>The identity trust score of the member.</td></tr><tr><td><code>scoring_level</code></td><td><code>string</code></td><td><p>The trust score level of the member's identity.<br>It can be: </p><ul><li><code>POOR</code></li><li><code>FAIR</code> </li><li><code>GOOD</code> </li><li><code>EXCELLENT</code></li></ul><p>Refer to <a href="/api-reference/data-dictionary/glossary/entity-or-member#scoring-level">Identity Trust Score Level</a> for more information.</p></td></tr><tr><td><code>social_media</code></td><td><code>array</code></td><td>A collection of objects containing metadata about the business member's social media profiles.</td></tr><tr><td><code>created_at</code></td><td><code>number</code></td><td>The timestamp representing when the member registered on the mioID platform (also known as the "member since" date).</td></tr><tr><td><code>unregistered</code></td><td><code>boolean</code></td><td>Indicates whether the member has deleted their profile from the mioID platform.<br><strong>Note:</strong> This property is only included in the <code>Activity</code> child object for historical purposes.</td></tr></tbody></table>


# Activity

The **Activity** object represents the various types of actions and events within the mio.ID platform, initiated by or involving both individual and business entities. It is a key component for tracking, analyzing, and reporting interactions, providing detailed metadata about each activity's lifecycle and status.

### Fields

<table data-full-width="true"><thead><tr><th width="269">Field</th><th width="165">Type</th><th width="527">Description</th></tr></thead><tbody><tr><td><code>id</code></td><td><code>string</code></td><td>Unique identifier for this activity</td></tr><tr><td><code>entity</code></td><td><code>object</code></td><td>The participant involved in the activity, either sending or receiving it.<br>Refer to <a href="/api-reference/data-dictionary/objects/entity-or-member">Member </a>for more information.</td></tr><tr><td><code>type</code></td><td><code>string</code></td><td><p>Specifies the type of activity.<br>Its values can be: </p><ul><li><code>AT_001</code></li><li><code>AT_002</code></li><li><code>AT_003</code></li><li><code>AT_004</code></li></ul><p>Refer to <a href="/api-reference/data-dictionary/glossary/activity#activity-type">Activity Type</a> for more information.</p></td></tr><tr><td><code>type_name</code></td><td><code>string</code></td><td>Human-readable description of the activity type.</td></tr><tr><td><code>in_out_bound</code></td><td><code>string</code></td><td><p>Indicates the direction of the activity.<br>Its value can be:</p><ul><li><code>IN</code> (Inbound)</li><li><code>OUT</code> (Outbound)</li></ul></td></tr><tr><td><code>requirements</code></td><td><code>array</code></td><td>List of  <a href="/api-reference/data-dictionary/objects/requirement">Requirements</a> requested or shared during the activity.</td></tr><tr><td><code>accepted_requirements</code></td><td><code>array</code></td><td>List of <a href="/api-reference/data-dictionary/objects/requirement">Requirements</a> that the recipient accepted to share with the initiator.</td></tr><tr><td><code>declined_requirements</code></td><td><code>array</code></td><td>List of <a href="/api-reference/data-dictionary/objects/requirement">Requirements</a> that the recipient declined to share.</td></tr><tr><td><code>description</code></td><td><code>string</code></td><td>A message from the initiator sent as part of the activity.</td></tr><tr><td><code>status</code></td><td><code>string</code></td><td>Current status of the activity.<br>Refer to <a href="/api-reference/data-dictionary/glossary/activity#activity-status">Activity Status</a> for more information.</td></tr><tr><td><code>notification_message</code></td><td><code>string</code></td><td>A completion message sent by the recipient to the initiator when the activity is completed.</td></tr><tr><td><code>timeline</code></td><td><code>array</code></td><td>A log of activity statuses and their timestamps.</td></tr><tr><td><code>time_zone</code></td><td><code>string</code></td><td>The timezone in which the activity occurred.</td></tr><tr><td><code>expires_in</code></td><td><code>object</code></td><td>Period for which the activity is valid, set by the recipient. Once expired, the initiator loses access to the recipient's shared details.</td></tr><tr><td><code>expires_at</code></td><td><code>number</code></td><td>Timestamp indicating when the personal details are no longer available to the initiator due to expiration.</td></tr><tr><td><code>attended_at</code></td><td><code>number</code></td><td>Timestamp when the recipient made a decision (accepted or declined).</td></tr><tr><td><code>completed_at</code></td><td><code>number</code></td><td>Timestamp when the activity was marked as <strong>COMPLETED</strong>.</td></tr><tr><td><code>valid_until</code></td><td><code>number</code></td><td>Time limit for the recipient to decide on the activity. Once expired, the activity becomes inactive.</td></tr><tr><td><code>created_at</code></td><td><code>object</code></td><td>Datetime when Activity has been created.</td></tr><tr><td><code>updated_at</code></td><td><code>object</code></td><td>Datetime when Activity has been updated.</td></tr></tbody></table>


# Requirement

The **Requirements** object represents personal details requested by the initiator during an activity. The recipient (receptor) determines which details to share to complete the activity.

### Fields

<table data-full-width="true"><thead><tr><th width="199">Field</th><th width="194">Type</th><th width="587">Description</th></tr></thead><tbody><tr><td><code>code</code></td><td><code>string</code></td><td>Unique identifier for this requirement.</td></tr><tr><td><code>type</code></td><td><code>string</code></td><td>Specifies the type of requirement.</td></tr><tr><td><code>category</code></td><td><code>string</code></td><td>Category of the requirement.</td></tr><tr><td><code>data</code></td><td><code>object</code></td><td>Contains personal details for requirements involving data sharing.<br><strong>Note:</strong> This field appears only in the <code>accepted_requirements</code> array within the Activity object.</td></tr><tr><td><code>items</code></td><td><code>array</code></td><td><p>Contains a detailed list of personal details involving grouped requirements. Examples include:</p><ul><li><code>IDENTITY TRUST</code> = <code>"RQ_002"</code></li><li><code>PERSONAL INFO</code> = <code>"RQ_004"</code></li><li><code>IDENTITY DOCUMENT</code> = <code>"RQ_006"</code></li></ul><p><strong>Note:</strong> Refer to the <strong>Requirement Item</strong> table for structure details.</p></td></tr></tbody></table>

## Requirement Item

The **Requirement Item** object represents detailed sub-requirements within a larger group of personal details requested during an activity.

<table data-full-width="true"><thead><tr><th width="199">Field</th><th width="195">Type</th><th width="567">Description</th></tr></thead><tbody><tr><td><code>code</code></td><td><code>string</code></td><td>Unique code identifying this specific inner requirement</td></tr><tr><td><code>type</code></td><td><code>string</code></td><td>Specifies the type of sub-requirement.</td></tr><tr><td><code>data</code></td><td><code>object</code></td><td><p>Contains a detailed list of personal details associated with grouped requirements.<br>Examples include:</p><ul><li><code>IDENTITY TRUST</code> = <code>"RQ_002"</code></li><li><code>PERSONAL INFO</code> = <code>"RQ_004"</code></li><li><code>IDENTITY DOCUMENT</code> = <code>"RQ_006"</code></li></ul><p><strong>Note:</strong> This field appears only in the <code>accepted_requirements</code> array within the Activity object.</p></td></tr></tbody></table>

This structure allows for a more granular breakdown of individual requirements, ensuring clarity and flexibility during implementation.


# Webhook

The **Webhook** object facilitates the integration of your application with the mio.ID platform by enabling real-time event notifications. This object defines a configured endpoint in your system that receives notifications about actions or changes in mio.ID services, ensuring seamless automation and synchronization.

<table data-full-width="true"><thead><tr><th width="224">Field</th><th width="188">Type</th><th width="551">Description</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>string</code></td><td>Specifies the type of webhook.</td></tr><tr><td><code>url</code></td><td><code>string</code></td><td>The URL of your service to be used as the webhook endpoint.</td></tr><tr><td><code>secret</code></td><td><code>string</code></td><td>A secret key used to cipher messages for secure communication.<br><strong>Note:</strong> Refer to <strong>Webhooks Configuration</strong> for details about the ciphering process.</td></tr><tr><td><code>authorization</code></td><td><code>object</code></td><td><p>Provides options for securing your service using one of the following methods:</p><ul><li>Basic authentication</li><li>Bearer token authorization</li><li>API key</li></ul></td></tr><tr><td><code>headers</code></td><td><code>object</code></td><td>Allows configuration of additional metadata to be included in the headers for your service. This ensures compatibility with services requiring custom metadata.</td></tr></tbody></table>

This structure supports robust, secure integration for handling real-time updates and actions on the mio.ID platform.


# API endpoints

The API Endpoints section provides a detailed guide to interacting with the mio.ID platform. It outlines the key services and functionalities available through our API, including Authentication, Community, Activities, and Webhooks. Each endpoint is described with its purpose, supported methods, and integration details, helping you build secure and efficient workflows.

This section is your roadmap for leveraging mio.ID's capabilities, from authenticating users to managing data exchanges and receiving event-driven notifications. Dive into each subsection to explore how to implement these features seamlessly into your applications.

Please, refer to our [API documentation](https://api.mio.id/business/docs/#/) to see more information about our endpoints.


# Authentication

To access our services, you need to be both authenticated and authorized. The first step is to generate an access token. This token is essential for secure interaction with our API and ensures that only authorized users can access the services.

### Credentials for Token Generation

To create your access token, you will need the following credentials, which were provided to you via email:

* **Key:** A unique identifier for your application.&#x20;
* **Username:** Your assigned username.&#x20;
* **Password:** The corresponding password for your username.

### How to Authenticate

**Send Your Key as a Header:** Include your key in the request header under the field Authorization-Key.

**Use Basic Authorization for Username and Password:** Combine your username and password into a Basic Authorization header. This involves encoding the username:password pair using Base64.

<mark style="color:green;">POST</mark>   [Create JWT token](#business-v1-auth)

{% openapi src="/files/4oCk75nmswflQbV3VZRH" path="/business/v1/auth" method="post" %}
[swagger-business.json](https://2093545926-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3zb7cV9cfl5Gboof9fgA%2Fuploads%2FHWyPy65zoM8khgjBWXf6%2Fswagger-business.json?alt=media\&token=e0976cfc-eb2b-41b2-886b-7bcea292c232)
{% endopenapi %}


# Community

The Community endpoint provides access to all registered users on the mio.ID platform, including individuals and businesses. This allows your application to interact with users by sending or receiving activities such as identity verification requests, compliance checks, or other transactions.

<mark style="color:blue;">GET</mark>  [List All Members](#business-v1-community)\
Retrieves a comprehensive list of registered users.

<mark style="color:blue;">GET</mark>   [Search Member by Phone number](#business-v1-community-phone-phone)\
Locates a specific individual or business by their associated phone number.<br>

{% openapi src="/files/4oCk75nmswflQbV3VZRH" path="/business/v1/community" method="get" %}
[swagger-business.json](https://2093545926-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3zb7cV9cfl5Gboof9fgA%2Fuploads%2FHWyPy65zoM8khgjBWXf6%2Fswagger-business.json?alt=media\&token=e0976cfc-eb2b-41b2-886b-7bcea292c232)
{% endopenapi %}

{% openapi src="/files/4oCk75nmswflQbV3VZRH" path="/business/v1/community/phone/{phone}" method="get" %}
[swagger-business.json](https://2093545926-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3zb7cV9cfl5Gboof9fgA%2Fuploads%2FHWyPy65zoM8khgjBWXf6%2Fswagger-business.json?alt=media\&token=e0976cfc-eb2b-41b2-886b-7bcea292c232)
{% endopenapi %}


# Activities

The Activities endpoints represents the core interactions within the mio.ID platform. These interactions, such as requests, sharings, or exchanges, enable members from the mio.ID Community to securely share their data with one another.

<mark style="color:blue;">GET</mark>   [List of activities](#business-v1-activities)\
Fetches a list of all activities related to your business account, including both sent and received interactions.

<mark style="color:blue;">GET</mark>   [Activity details](#business-v1-activities-activity)\
Retrieves detailed information about a specific activity using its unique identifier.

{% openapi src="/files/4oCk75nmswflQbV3VZRH" path="/business/v1/activities" method="get" %}
[swagger-business.json](https://2093545926-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3zb7cV9cfl5Gboof9fgA%2Fuploads%2FHWyPy65zoM8khgjBWXf6%2Fswagger-business.json?alt=media\&token=e0976cfc-eb2b-41b2-886b-7bcea292c232)
{% endopenapi %}

{% openapi src="/files/4oCk75nmswflQbV3VZRH" path="/business/v1/activities/{activity}" method="get" %}
[swagger-business.json](https://2093545926-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3zb7cV9cfl5Gboof9fgA%2Fuploads%2FHWyPy65zoM8khgjBWXf6%2Fswagger-business.json?alt=media\&token=e0976cfc-eb2b-41b2-886b-7bcea292c232)
{% endopenapi %}


# Requests

{% openapi src="/files/4oCk75nmswflQbV3VZRH" path="/business/v1/activities/requests" method="post" %}
[swagger-business.json](https://2093545926-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3zb7cV9cfl5Gboof9fgA%2Fuploads%2FHWyPy65zoM8khgjBWXf6%2Fswagger-business.json?alt=media\&token=e0976cfc-eb2b-41b2-886b-7bcea292c232)
{% endopenapi %}


# Authorizations

{% openapi src="/files/4oCk75nmswflQbV3VZRH" path="/business/v1/activities/authorizations" method="post" %}
[swagger-business.json](https://2093545926-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3zb7cV9cfl5Gboof9fgA%2Fuploads%2FHWyPy65zoM8khgjBWXf6%2Fswagger-business.json?alt=media\&token=e0976cfc-eb2b-41b2-886b-7bcea292c232)
{% endopenapi %}


# Webhooks

The Webhooks feature allows you to configure endpoints on your server to receive real-time event notifications from our system. By setting up a webhook, you can automate workflows, track updates, or respond to specific events programmatically.

<mark style="color:blue;">GET</mark>   [List of webhooks](#business-v1-settings-webhooks)

<mark style="color:yellow;">PUT</mark>   [Create/Update webhook](#business-v1-settings-webhooks-1)

<mark style="color:red;">DELETE</mark>   [Delete your webhook](#business-v1-settings-webhooks-id)

{% openapi src="/files/4oCk75nmswflQbV3VZRH" path="/business/v1/settings/webhooks" method="get" %}
[swagger-business.json](https://2093545926-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3zb7cV9cfl5Gboof9fgA%2Fuploads%2FHWyPy65zoM8khgjBWXf6%2Fswagger-business.json?alt=media\&token=e0976cfc-eb2b-41b2-886b-7bcea292c232)
{% endopenapi %}

{% openapi src="/files/4oCk75nmswflQbV3VZRH" path="/business/v1/settings/webhooks" method="put" %}
[swagger-business.json](https://2093545926-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3zb7cV9cfl5Gboof9fgA%2Fuploads%2FHWyPy65zoM8khgjBWXf6%2Fswagger-business.json?alt=media\&token=e0976cfc-eb2b-41b2-886b-7bcea292c232)
{% endopenapi %}

{% openapi src="/files/4oCk75nmswflQbV3VZRH" path="/business/v1/settings/webhooks/{id}" method="delete" %}
[swagger-business.json](https://2093545926-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3zb7cV9cfl5Gboof9fgA%2Fuploads%2FHWyPy65zoM8khgjBWXf6%2Fswagger-business.json?alt=media\&token=e0976cfc-eb2b-41b2-886b-7bcea292c232)
{% endopenapi %}


# Registration

### Registering your Webhook Service <a href="#id-1.-webhook-configuration" id="id-1.-webhook-configuration"></a>

To properly set up and receive incoming webhooks, your server must expose an endpoint capable of handling the following:

Webhooks are delivered as POST requests. The payload format depends on the configuration.

**Encrypted Payload:** If a secret key is set, the payload will be delivered in raw text/plain.\
**Unencrypted Payload:** If no secret key is configured, the payload will be in standard application/json format.

### Testing Webhooks

Before deploying, you can test your webhook configuration using tools like <https://webhook.site/>. These services allow you to capture and inspect the incoming requests to ensure your server is correctly processing them.

### Steps to Register you Webhook

Configure your endpoint:\
\- Listen for POST requests.\
\- Handle both text/plain and application/json payloads.\
\- Verify and authenticate requests if using a secret.

Test your endpoint:

Use your developer dashboard to send test events or utilize external tools to verify the behavior of your webhook service.

User our Webhoos API:

To officially register your webhook service with the platform:

Refer to the [Webhooks API](/api-reference/api-endpoints/webhooks) documentation for detailed guidance on setting up and managing your webhook configurations.

Provide the required details such as endpoint URL, subscribed events, and optional secret key for validation.&#x20;

By following these steps, you can ensure a seamless integration and reliable handling of event notifications from the mio.ID platform.


# Security

Webhooks play a critical role in ensuring the seamless functionality of your integration. However, they can become targets for malicious actors attempting to exploit or disrupt the service. To safeguard your application, you must configure your webhook with a 32-byte secret. This secret is essential for encrypting the request body, adding a layer of security to the data transmission.

### Enabling Encryption

When encryption is enabled in your webhook configuration:

**Payload Format:** The webhook event payload is sent as text/plain containing encrypted data. \
\
**Initialization Vector (IV):** A 16-byte cipher initialization vector (IV) is included in the response headers as metadata. This IV is necessary to decrypt the webhook request body securely.

Below you find an example process for decrypting an incoming webhook request:

{% tabs %}
{% tab title="TypeScript" %}

```typescript
import * as crypto from 'crypto';

export class Decipher {
  decipherAES_256_CBC(request: any) {
    const CIPHER_KEY = 'YOUR-PLAIN-KEY';
    const BASE64_PLAIN_IV = request.headers['x-pvt-cipher-iv'];
    const BASE64_CIPHERED_MESSAGE = request.body;

    const BUFFER_KEY = Buffer.from(CIPHER_KEY);
    const BUFFER_IV = Buffer.from(BASE64_PLAIN_IV, 'base64');
    const BUFFER_CIPHERED_MESSAGE = Buffer.from(BASE64_CIPHERED_MESSAGE, 'base64');

    const DECIPHER = crypto.createDecipheriv('aes-256-cbc', BUFFER_KEY, BUFFER_IV);
    DECIPHER.setAutoPadding(true);

    let deciphered_message = DECIPHER.update(BUFFER_CIPHERED_MESSAGE, 'hex', 'utf8');

    deciphered_message += DECIPHER.final('utf-8');

    return deciphered_message.toString();
  }
}
```

{% endtab %}
{% endtabs %}


