> ## Documentation Index
> Fetch the complete documentation index at: https://docs.frankieone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Hosted OneSDK (Low-Code)

> An alternative low-code integration for customers that want to onboard as soon as possible with as litle as possible.

<Info>
  ### Subscription Required

  Hosted OneSDK is available through a monthly subscription. Contact your
  customer success manager to get started. Our team will handle the setup
  process for you.
</Info>

## Overview

<Frame>
  <img src="https://mintcdn.com/frankieone-f5583b1b/HiJ5UPe-ifV28Hjd/images/docs/fb24230-Hosted_OneSDK.png?fit=max&auto=format&n=HiJ5UPe-ifV28Hjd&q=85&s=2c7b937a132a9035345dd953ef4fdd03" alt="Hosted OneSDK Overview" width="1920" height="1200" data-path="images/docs/fb24230-Hosted_OneSDK.png" />
</Frame>

<Columns>
  <Card title="Automatic Updates" icon="rotate">
    Stay current with automatic security and compliance updates
  </Card>

  <Card title="Low-Code Solution" icon="code">
    Minimize engineering effort and accelerate deployment
  </Card>

  <Card title="Multi-Platform" icon="desktop">
    Single API for both web and mobile applications
  </Card>

  <Card title="Managed Service" icon="gear">
    FrankieOne handles hosting and maintenance
  </Card>
</Columns>

## Key Benefits

<AccordionGroup>
  <Accordion title="Technical Benefits">
    * Unified API integration for web and mobile
    * Managed hosting and maintenance
    * Automatic feature updates
    * Flexible deployment options (iFrame/WebView)
  </Accordion>

  <Accordion title="Business Benefits">
    * Faster time to market
    * Reduced development costs
    * Enhanced security compliance
    * Improved user onboarding experience
  </Accordion>
</AccordionGroup>

## Implementation Guide

<Steps>
  <Step title="Generate Onboarding URL">
    Use the [Hosted Onboarding API](/api-reference/provide-onboarding-url-for-hosted-onesdk) to create your URL.

    <Accordion title="Available Flow Types">
      | Flow ID                 | Purpose                                     |
      | :---------------------- | :------------------------------------------ |
      | `doc_upload`            | Document attachment for business entities   |
      | `idv`                   | Complete IDV flow with OCR and Biometrics   |
      | `idv_review`            | IDV flow with user review/edit capability   |
      | `individual_doc_upload` | Document attachment for individual entities |
      | `manual_kyc`            | eKYC-only flow                              |
      | `ocr_only`              | Document OCR without biometrics             |
    </Accordion>

    <Tabs>
      <Tab title="New Customer">
        ```json theme={null}
        {
          "applicationRef": "UNIQUE_APPLICATION_REF",
          "customerRef": "UNIQUE_REFERENCE",
          "consent": true,
          "flowId": "idv",
          "phoneNumber": "04xxxxxxxx",
          "phoneCode": "+61",
          "recipientName": "TEST",
          "sendSMS": true
        }
        ```
      </Tab>

      <Tab title="Existing Entity">
        ```json theme={null}
        {
          "consent": true,
          "phoneNumber": "04xxxxxxxx",
          "phoneCode": "+61",
          "flowId": "idv",
          "sendSMS": true,
          "entity": {
            "entityId": "",
            "addresses": [
              {
                "country": "AUS"
              }
            ],
            "extraData": [
              {
                "kvpKey": "application_reference",
                "kvpType": "id.external",
                "kvpValue": "<UNIQUE_APPLICATION_REF>"
              },
              {
                "kvpKey": "customer_reference",
                "kvpType": "id.external",
                "kvpValue": "<UNIQUE_REFERENCE>"
              }
            ],
            "name": {
              "displayName": "",
              "familyName": "Test",
              "givenName": "Test"
            }
          }
        }
        ```
      </Tab>
    </Tabs>

    <Callout icon="star" color="#3DD892" iconType="regular">
      ##### SMS Delivery

      Enable automatic SMS delivery by setting `sendSMS: true` and providing a
      `phoneNumber`. Contact Technical Support to customize SMS content and URL
      expiry.
    </Callout>
  </Step>

  <Step title="Configure Entity Profile (Optional)">
    Update the entity profile to specify verification requirements:

    ```json theme={null}
    {
      "entityId": "your_entity_id",
      "entityProfile": "your_recipe_name"
    }
    ```
  </Step>

  <Step title="Implement URL Handling">
    <Tabs>
      <Tab title="Android (Java)">
        ```java theme={null}
        webAppInterface = WebAppInterface(requireContext())
        binding.webView.apply {
            webViewClient = MyWebViewClient()
            webChromeClient = MyWebChromeClient()
            addJavascriptInterface(webAppInterface, "Android")
            loadUrl("https://verify.uat.frankie.one?t=dFLfq4pbfMfnWUZ4SR8W5i")
        }
        ```
      </Tab>

      <Tab title="React Native">
        ```javascript theme={null}
        import { useState } from "react";
        import { Button, View } from "react-native";
        import * as WebBrowser from "expo-web-browser";

        export default function App() {
          const [result, setResult] = useState(null);

          const handlePressButtonAsync = async () => {
            const result = await WebBrowser.openBrowserAsync(
              "https://verify.uat.frankie.one?t=dFLfq4pbfMfnWUZ4SR8W5i"
            );
            setResult(result);
          };

          return (
            <View style={styles.container}>
              <Button title="Start Verification" onPress={handlePressButtonAsync} />
            </View>
          );
        }
        ```
      </Tab>
    </Tabs>
  </Step>
</Steps>

## Portal Integration

<Info>
  The Portal provides additional capabilities for managing onboarding URLs and
  document collection.
</Info>

### Sending Onboarding URLs

<Steps>
  <Step title="Access Entity Profile">
    Navigate to the entity profile page or create a new profile
  </Step>

  <Step title="Generate QR Code">
    <Frame caption="Mobile Access QR Code">
      <img src="https://mintcdn.com/frankieone-f5583b1b/DeCFYTh7H_iJ49UP/images/docs/203dc7b-image.png?fit=max&auto=format&n=DeCFYTh7H_iJ49UP&q=85&s=4c2446fb418bfe859240430633b9f175" alt="QR Code Example" width="400px" data-path="images/docs/203dc7b-image.png" />
    </Frame>
  </Step>

  <Step title="Track Progress">
    Monitor profile updates as users complete onboarding
  </Step>
</Steps>

## Document Collection

<AccordionGroup>
  <Accordion title="API Configuration">
    **Production Endpoint:**

    ```
    POST https://api.frankie.one/idv/v2/idvalidate/onboarding-url
    ```

    **UAT Endpoint:**

    ```
    POST https://api.uat.frankie.one/idv/v2/idvalidate/onboarding-url
    ```

    **Headers:**

    ```
    X-Frankie-Customerid: YOUR_CUSTOMER_ID
    X-Frankie-CustomerChildID: YOUR_CUSTOMER_CHILD_ID
    api_key: YOUR_API_KEY
    ```
  </Accordion>

  <Accordion title="Document Request for Individual Entities">
    Individual Document Upload flow has 3 different document types:

    * Required documents `requestedDocuments`
    * Partial documents `partialDocuments`, which can consists of multiple groups with configurable title and minimum required document per groups
    * Optional documents `optionalDocuments`

    ```json theme={null}
    {
      "flowId": "individual_doc_upload",
      "senderName": "OneSDK-Testing-Sender-Name",
      "requestedDocuments": [
      {
            "documentType": "BIRTH_CERT"
          },
          {
            "documentType": "CITIZENSHIP"
          }
    ],
      "partialDocuments": [
          {
            "title": "Additional Documents",
            "minimumRequirement": 2,
            "documents": [
              {
                "documentType": "VISA"
              },
              {
                "documentType": "UTILITY_BILL"
              },
              {
                "documentType": "VEHICLE_REGISTRATION"
              }
            ]
          }
      ],
      "optionalDocuments": [
          {
            "documentType": "NAME_CHANGE"
          },
          {
            "documentType": "MARRIAGE_CERT"
          }
      ],
      "entity": {
        "entityId": "bc335f79-c167-36f6-3c70-d3c0a2d8c8b8"
      }
    }
    ```
  </Accordion>

  <Accordion title="Document Request for Business Entities">
    ```json theme={null}
    {
      "flowId": "doc_upload",
      "senderName": "OneSDK-Testing-Sender-Name",
      "requestedDocuments": [
        {
          "documentType": "BANK_STATEMENT"
        },
        {
          "documentType": "TRUST_DEED"
        }
      ],
      "entity": {
        "entityId": "bc335f79-c167-36f6-3c70-d3c0a2d8c8b8"
      }
    }
    ```
  </Accordion>
</AccordionGroup>

<Callout icon="check" color="#3DD892" iconType="regular">
  Documents will appear in the "Supporting Documents" tab of the business
  entity's Portal profile once uploaded.
</Callout>
