Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
src
README.md
composer.json

README.md

##Overview
fetchdocs.io - Fetch API can be used for the API-Based integration of document fetching as well as for the UI Plug&Play Integration.
All Access to the APIs are restricted by an API Key. Request your access on https://www.fetchdocs.io by submitting the contact form.


##Fetchdocs PHP SDK Client
The fetch php sdk client enables you to work with fetchdocs API you can check API documentation following this link


##Installation

  1. Run composer require fetchdocs/fetchdocs-api-php.
  2. Include require_once '/path/to/your-project/vendor/autoload.php'; to your index file

Examples

####1.Get Document

require '../vendor/autoload.php';

//Client using stage server
$clientStage = \Fetchdocs\SDKClient\Client::make('Your API KEY', 'Your Hash Key', true);

//Create Environment
$environment = $clientStage->createEnvironment([
    'name' => 'Environment Name',
    'default_environment' => true,
    'push_notification_url' => 'Your Push Notification Url',
    'push_input_request_url' => 'Your Push Input Request Url'
]);

//Create a customer
$customer = $clientStage->createCustomer([
    'environment_prim_uid' => $environment->prim_uid
]);


//Supplier
$supplier = getSupplierByName($clientStage, 'Test Portal');

//Create Customer Supplier
$customerSupplier = $clientStage->createCustomerSupplier([
    'customer_prim_uid' => $customer->prim_uid,
    'supplier_prim_uid' => $supplier->prim_uid,
    'active' => true,
    'username' => 'Customer Supplier Username',
    'password' => 'PASSWORD'
], 'Your Encryption Key');

//Push document to document queue
$doc = $clientStage->testQueueDocument([
    'prim_uid' => $customer->prim_uid,
    'customer_supplier_uid' => $customerSupplier->customer_supplier_prim_uid
]);

//Get Documents
$documents = $clientStage->getDocumentsQueue([
    'environment_prim_uid' => $environment->prim_uid
]);

while ($documents->count <= 0) {
    $documents = $clientStage->getDocumentsQueue([
        'environment_prim_uid' => $environment->data->prim_uid
    ]);
}

//Get document
$document = $clientStage->getDocument([
    'prim_uid' => $documents->documents[0]->prim_uid,
    'customer_secret' => $customer->customer_secret
]);

##SDK API

  • Please check API documentation for more information about request parameters and expected response following this link
  • Please note that each client method returns a STD Object mapping the API response #####1. Use Production Server
$client = \Fetchdocs\SDKClient\Client::make('Your API Key', 'Your Hash Key');

#####2. Use Stage Server

$client = \Fetchdocs\SDKClient\Client::make('Your Stage API Key', 'Your Stage Hash Key', true);

#####3. List Environments

$client->environments();
[
    {
        "prim_uid": "10361",
        "name": "Default",
        "push_document_url": "",
        "push_notification_url": "https://push.domain.tld/notifications/",
        "push_input_request_url": "https://push.domain.tld/input_request/",
        "ui_redirect_url": "",
        "default_environment": true
    },
    {
        "prim_uid": "10362",
        "name": "Env",
        "push_document_url": "",
        "push_notification_url": "https://push.domain.tld/notifications/",
        "push_input_request_url": "https://push.domain.tld/input_request/",
        "ui_redirect_url": "",
        "default_environment": false
    }
]

#####4.List Timezones

$client->timezones();
[
    "Africa/Abidjan",
    "Africa/Accra"
]

#####5.Date Formats

$client->dateFormats();
[
    "d.m.Y",
    "m/d/Y",
    "d/m/Y"
]

#####6.Create Environment

$client->createEnvironment([
    'name' => 'Environment Name',
    'default_environment' => true,
    'push_notification_url' => 'https://push.domain.tld/notifications/',
    'push_input_request_url' => 'https://push.domain.tld/input_request/'
]);
{
    "prim_uid": 10432
}

#####7.Update Environment

$client->updateEnvironment([
    'prim_uid' => $environment->prim_uid,
    'name' => 'New Name'
])
{
    "success": true
}

#####8.Delete Environment

$client->deleteEnvironment([
   'prim_uid' => $environment->prim_uid,
])
{
    "success": true
}

#####9.List Customers Accounts

$client->listCustomerAccounts([
    'environment_prim_uid' => 10361
])
[
    {
        "prim_uid": 1, 
        "language": "en",
        "timezone": "Europe/Berlin",
        "date_format": "m/d/Y",
        "environment": 144 
    }
]

#####10.Create Customer

$client->createCustomer([
   'environment_prim_uid' => $environment->prim_uid
]);
{
    "prim_uid": 6684,
    "customer_secret": "b3cjpcy8",
    "access_token": "o1zhz0yzrbx3i5v65j20a751rrg6tyji"
}

#####11.Update Customer

$client->updateCustomer([
   'prim_uid' => '10500',
   'customer_secret' => 'Customer Secret',
   'language' => 'de'
])
{
    "success": true
}

#####12.Delete Customer

$client->deleteCustomer([
   'prim_uid' => '10500',
   'customer_secret' => 'Customer Secret',
])
{
    "success": true
}

#####12.Deactivate Customer

$client->deactivateCustomer([
   'prim_uid' => '10500',
   'customer_secret' => 'Customer Secret',
])
{
    "success": true
}

#####12.Activate Customer

$client->activateCustomer([
   'prim_uid' => '10500',
   'customer_secret' => 'Customer Secret',
])
{
    "success": true
}

#####13.Get Customer Account Overview

$client->->getCustomerAccountOverview([
 'prim_uid' => '10500',
])
{
    "customer_data": {
        "prim_uid": 1, 
        "language": "en", 
        "timezone": "Europe/Berlin", 
        "date_format": "m/d/Y" 
    },
    "customer_suppliers": [
        { 
            "prim_uid": 307,
            "name": "1&1.de"
        }
    ]
}

#####14.Get Customer Session

$client->getCustomerSession([
   'prim_uid' => $customer->prim_uid,
   'customer_secret' => $customer->customer_secret
])
{
    "prim_uid": 6690,
    "access_token": "Access Token"
}

#####15.Destroy Customer Session

$client->destroyCustomerSession([
    'access_token => "Access Token"
])
{
    "success": true
}

#####16.List Suppliers

$client->->listSuppliers()
[
    {
        "prim_uid": 2568,
        "name": "1&1 - Versatel (Business-Kunden)",
        "created": "2018-02-12 12:52:38",
        "supplier_login_url": "https://online-rechnung.versatel.de/tb/telcobill.faces",
        "supplier_logo_url": "https://portal-ui-images.s3.eu-central-1.amazonaws.com/logo/120x120/25206.jpg",
        "document_type": "invoice",
        "quick_feedback_supported": false
    }
]

#####17.Create Customer Supplier

$client->createCustomerSupplier([
    'customer_prim_uid' => 10050,
    'supplier_prim_uid' => 2568,
    'active' => true,
    'username' => 'CustomerSupplier',
    'password' => 'PASSWORD'
], 'Encryption-Key');
{
    "success": true,
    "customer_supplier_prim_uid": 13
}

If quick_feedback parameter is set as true

{
    "success": true,
    "quick_feedback_started": true,
    "feedback_process_uid": 12
}

#####18.Delete Customer Supplier

$client->deleteCustomerSupplier([
    'prim_uid' => '15000'
])
{
    "success": true
}

#####19.List Customer Suppliers

$client->listCustomerSuppliers([
    'prim_uid' => '10500' //customer uid
])
[
    {
        "prim_uid": 2355,
        "supplier_name": "1&1.de",
        "supplier_prim_uid": 307,
        "supplier_logo": "",
        "supplier_logo_url": "", 
        "active": true,
        "input_request_prim_uid": 585, 
        "download_start_date": "2013-07-18", 
        "last_started": "2013-07-18 08:17:13", 
        "next_planned_run": "2013-07-18 10:00:00", 
        "last_status_key": "PENDING", 
        "username": "admin", 
        "document_type": "invoice" 
    }
]

#####20.Update Customer Supplier

$client->updateCustomerSupplier([
    'customer_prim_uid' => 10050,
    'supplier_prim_uid' => 2568,
    'active' => true,
    'username' => 'CustomerSupplier',
    'password' => 'PASSWORD'
], 'Encryption-Key');
{
    "success": true
}

#####21.Get Supplier Fields

$client->getSuppliersFields([
    'prim_uid' => '2568'
])
[
    {
        "field_key": "USERNAME",
        "label": "Username",
        "help_text": "Here can be any string that can be shown as a help text for the field",
        "mandatory": true,
        "type": "text",
        "dependency": ""
    }, 
    {
        "field_key": "PASSWORD",
        "label": "Password",
        "help_text": "Here can be any string that can be shown as a help text for the field",
        "mandatory": true,
        "type": "password",
        "dependency": "USERNAME" 
    }, 
    {
        "field_key": "LANG",
        "label": "Language",
        "help_text": "",
        "mandatory": false,
        "type": "dropdown",
        "dependency": "",
        "options": "{\"de_de\":\"Deutsch\",\"en_us\":\"English\"}"
    }
]

#####22.Get Document Queue

$client->getDocumentQueue([
    'environment_prim_uid' => '15'
]);
{
    "count": 100,
    "total": 2345,
    "documents": [
        {
            "prim_uid": 173, 
            "customer_prim_uid": 1, 
            "customer_supplier_prim_uid": 13, 
            "supplier_prim_uid": 307, 
            "filename": "receipt-1708171523.pdf",
            "file_size": 136.75, // File size is always in KB
            "file_content_checksum": "", // md5 hash of file content (raw content, not base64 encoded content)
            "document_type": "invoice" // currently "invoice" and "bank_statement" are supported
        }
    ]
}

#####23.Get Document

$client->getDocument([
   'prim_uid' => '102',
   'customer_secret' => 'Customer Secret'
]);
{
    "prim_uid": 102,
    "customer_prim_uid": 1, 
    "customer_supplier_prim_uid": 13, 
    "supplier_prim_uid": 307, 
    "filename": "receipt-1708171523.pdf",
    "file_size": "136.75", 
    "file_content_checksum": "", 
    "file_content": "", 
    "document_type": "invoice" 
}

#####24. Remove Document From Queue

$client->removeDocumentFromQueue([
    'prim_uid' => $document->prim_uid,
    'customer_secret' => $customer->customer_secret
]);
{
    "success": true
}
You can’t perform that action at this time.