{"id":36978570,"url":"https://github.com/oxygensuite/digital-client-list","last_synced_at":"2026-01-13T22:48:04.700Z","repository":{"id":301951794,"uuid":"985742119","full_name":"oxygensuite/digital-client-list","owner":"oxygensuite","description":"A comprehensive package for seamlessly interacting with Greece's Digital Client List (DCL) system by AADE(IARP), enabling automated submissions.","archived":false,"fork":false,"pushed_at":"2025-08-08T11:15:16.000Z","size":80,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-11T23:28:41.690Z","etag":null,"topics":["aade","dcl","digital-client-list","mydata"],"latest_commit_sha":null,"homepage":"https://www.oxygen.gr","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oxygensuite.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-18T12:39:14.000Z","updated_at":"2025-10-10T17:03:30.000Z","dependencies_parsed_at":"2025-06-29T19:38:08.399Z","dependency_job_id":"04c51dfd-d3ea-4245-9af4-9654283de306","html_url":"https://github.com/oxygensuite/digital-client-list","commit_stats":null,"previous_names":["oxygensuite/digital-client-list"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/oxygensuite/digital-client-list","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxygensuite%2Fdigital-client-list","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxygensuite%2Fdigital-client-list/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxygensuite%2Fdigital-client-list/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxygensuite%2Fdigital-client-list/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oxygensuite","download_url":"https://codeload.github.com/oxygensuite/digital-client-list/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxygensuite%2Fdigital-client-list/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28403707,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aade","dcl","digital-client-list","mydata"],"created_at":"2026-01-13T22:48:04.517Z","updated_at":"2026-01-13T22:48:04.685Z","avatar_url":"https://github.com/oxygensuite.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Digital Client List (DCL) Package\n\nA comprehensive package for seamlessly interacting with Greece's Digital Client List (DCL) system, enabling automated submissions.\n\n## Description\n\nThis PHP package provides a simple and efficient way to interact with the Digital Client List (DCL) system in Greece. It allows you to create, update, correlate, and cancel digital clients in compliance with the AADE (Independent Authority for Public Revenue) requirements.\n\n## Documentation\n\n- myDATA webpage: [AADE myDATA](https://www.aade.gr/mydata)\n- DCL documentation (PDF): [AADE DCL REST API v1.1](https://www.aade.gr/sites/default/files/2025-06/DCL%20API%20Documentation%20v1.1_official_erp.pdf)\n\n## Requirements\n\nTo use this package, you will need first a `aade id` and a `Subscription key`. You can get these credentials by signing up to myDATA rest api.\n\n- Development: [Sign up to myDATA development api](https://mydata-dev-register.azurewebsites.net/)\n- Production: [Sign up to myDATA production api](https://www.aade.gr/mydata)\n- PHP 8.1 or higher\n- ext-dom extension\n- GuzzleHttp 7.9 or higher\n\n\n| Version | PHP | myDATA | Support |\n|---------|-----|--------|---------|\n| ^v2.x   | 8.1 | v1.1.0 | Active  |\n| ^v1.x   | 8.1 | v1.0.0 | Ended   |\n\n\n## Installation\n\nYou can install the package via composer:\n\n```bash\ncomposer require oxygensuite/digital-client-list\n```\n\n## Usage\n\n### Initialization\n\nBefore using any functionality, you need to initialize the DCL client with your credentials:\n\n```php\nuse OxygenSuite\\DigitalClient\\Http\\DCLRequest;\n\n// Initialize with your credentials\n$env = 'dev'; // 'production' for production environment\n$userId = 'your-user-id';\n$subscriptionKey = 'your-subscription-key';\n\nDCLRequest::init($userId, $subscriptionKey, $env);\n```\n\n### Create a Digital Client\n\nTo create a new digital client:\n\n```php\nuse OxygenSuite\\DigitalClient\\Enums\\ClientServiceType;\nuse OxygenSuite\\DigitalClient\\Http\\SendClient;\nuse OxygenSuite\\DigitalClient\\Models\\DigitalClient;\nuse OxygenSuite\\DigitalClient\\Models\\Workshop;\n\n// Create a new digital client\n$dcl = DigitalClient::create()\n    -\u003esetClientServiceType(ClientServiceType::WORKSHOP)\n    -\u003esetBranch(1)\n    -\u003esetComments('Your comments here')\n    -\u003esetUseCase(\n        (new Workshop())\n            -\u003esetVehicleRegistrationNumber('REGISTRATION_NUMBER')\n            -\u003esetVehicleCategory('CATEGORY')\n            -\u003esetVehicleFactory('FACTORY'),\n    );\n\n// Send the client to DCL\n$request = new SendClient();\ntry {\n    $responses = $request-\u003ehandle($dcl);\n\n    foreach ($responses as $response) {\n        if ($response-\u003eisSuccessful()) {\n            // Get the new client DCL ID\n            $dclId = $response-\u003egetNewClientDclID();\n            // Process successful response\n        } else {\n            // Handle errors\n            foreach ($response-\u003egetErrors() as $error) {\n                // Process error\n            }\n        }\n    }\n} catch (DCLException $e) {\n    // Handle communication error\n    echo \"Communication error: \" . $e-\u003egetMessage();\n}\n```\n\n### Update a Digital Client\n\nTo update an existing digital client:\n\n```php\nuse OxygenSuite\\DigitalClient\\Enums\\ClientServiceType;\nuse OxygenSuite\\DigitalClient\\Enums\\InvoiceType;\nuse OxygenSuite\\DigitalClient\\Enums\\ProvidedCategoryServiceType;\nuse OxygenSuite\\DigitalClient\\Http\\UpdateClient;\nuse OxygenSuite\\DigitalClient\\Models\\DigitalClient;\n\n// Update an existing digital client\n$updateClient = DigitalClient::update()\n    -\u003esetInitialDclId('your-dcl-id')\n    -\u003esetClientServiceType(ClientServiceType::WORKSHOP)\n    -\u003esetEntryCompletion(true)\n    -\u003esetAmount(150.25)\n    -\u003esetIsDiffVehReturnLocation(false)\n    -\u003esetProvidedServiceCategory(ProvidedCategoryServiceType::WORK_WITH_PARTS)\n    -\u003esetInvoiceKind(InvoiceType::RETAIL)\n    -\u003esetComments('Update comments');\n\n// Send the update request\n$request = new UpdateClient();\ntry {\n    $responses = $request-\u003ehandle($updateClient);\n\n    foreach ($responses as $response) {\n        if ($response-\u003eisSuccessful()) {\n            // Get the updated client DCL ID\n            $updatedDclId = $response-\u003egetUpdatedClientDclID();\n            // Process successful response\n        } else {\n            // Handle errors\n            foreach ($response-\u003egetErrors() as $error) {\n                // Process error\n            }\n        }\n    }\n} catch (DCLException $e) {\n    // Handle communication error\n    echo \"Communication error: \" . $e-\u003egetMessage();\n}\n```\n\n### Correlate a Digital Client with an invoice\n\nTo correlate a digital client with another entity:\n\n```php\nuse OxygenSuite\\DigitalClient\\Http\\ClientCorrelations;\nuse OxygenSuite\\DigitalClient\\Models\\ClientCorrelation;\n\n// Create a correlation\n$correlateClient = (new ClientCorrelation())\n    -\u003esetMark('your-mark-number')\n    -\u003eaddCorrelatedDCLid('your-dcl-id');\n\n// Send the correlation request\n$request = new ClientCorrelations();\ntry {\n    $responses = $request-\u003ehandle($correlateClient);\n\n    if ($responses-\u003eisSuccessful()) {\n        // Process successful response\n        $correlateId = $response-\u003egetClientCorrelationId();\n    } else {\n        // Handle errors\n    }\n} catch (DCLException $e) {\n    // Handle communication error\n    echo \"Communication error: \" . $e-\u003egetMessage();\n}\n```\n\n### Cancel a Digital Client\n\nTo cancel a digital client:\n\n```php\nuse OxygenSuite\\DigitalClient\\Http\\CancelClient;\n\n// Create a cancel request\n$request = new CancelClient();\ntry {\n    $responses = $request-\u003ehandle('your-dcl-id');\n    $response = $responses-\u003efirst(); //There is only one response\n\n    if ($response-\u003eisSuccessful()) {\n        // Get the cancellation ID\n        $cancellationId = $response-\u003egetCancellationID();\n        // Process successful response\n    } else {\n        // Handle errors\n        foreach ($response-\u003egetErrors() as $error) {\n            // Process error\n        }\n    }\n} catch (DCLException $e) {\n    // Handle communication error\n    echo \"Communication error: \" . $e-\u003egetMessage();\n}\n```\n\n### Retrieve Digital Clients\n\nTo retrieve sent data:\n\n```php\nuse OxygenSuite\\DigitalClient\\Http\\RequestClients;\n\n$request = new RequestClients();\n\ntry {\n    $response = $request-\u003ehandle(100000000028013);\n\n    print_r($response-\u003etoArray());\n} catch (DCLException $e) {\n    echo $e-\u003egetMessage();\n}\n```\n\n\n## Available methods\n\n| Method                                                                                     | Availability       |\n|--------------------------------------------------------------------------------------------|--------------------|\n| **SendClient** - New Digital Client List registration                                      | :white_check_mark: |\n| **UpdateClient** - Change a Digital Client List Registration                               | :white_check_mark: |\n| **CancelClient** - Cancel a Digital Client List registration                               | :white_check_mark: |\n| **ClientCorrelations** - Correlate a Digital Client List Registration(s) with Tax Document | :white_check_mark: |\n| **RequestClients** - Retrieve transmitted  registrations                                   | :white_check_mark: |\n\n## Upgrading\n\nWhen upgrading from v1.x to v2.x, please be aware of breaking changes. The most significant change is in the `ClientServiceType` enum, where `LEASING` has been renamed to `RENTAL`.\n\nFor detailed upgrade instructions, please refer to the [UPGRADE.md](UPGRADE.md) file.\n\n## Special Thanks\n\nThis package was inspired by the excellent work done in the [firebed/aade-mydata](https://github.com/firebed/aade-mydata) package. I would like to express my gratitude to the developers of that project, as some of the core code and concepts from their implementation have been adapted and utilized in this package.\n\n## License\n\nThis package is open-sourced software licensed under the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxygensuite%2Fdigital-client-list","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxygensuite%2Fdigital-client-list","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxygensuite%2Fdigital-client-list/lists"}