{"_id":"@dqc.ai/fiori-sdk","name":"@dqc.ai/fiori-sdk","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@dqc.ai/fiori-sdk","version":"0.1.0","description":"DQC Validation SDK for SAP Fiori — real-time data quality validation in UI5 apps","main":"index.js","types":"index.d.ts","keywords":["dqc","data-quality","sap","fiori","ui5","sapui5","openui5","validation","sap-btp"],"author":{"name":"dqc.ai","email":"code@dqc.ai","url":"https://dqc.ai"},"license":"SEE LICENSE IN LICENSE","homepage":"https://docs.dqc.ai/fiori-sdk","repository":{"type":"git","url":"git+https://github.com/dataqcompany/fiori-sdk.git"},"bugs":{"url":"https://github.com/dataqcompany/fiori-sdk/issues"},"engines":{"node":">=16.0.0"},"_id":"@dqc.ai/fiori-sdk@0.1.0","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-bAB0v3sLbu3IsZzK+O45IUdaBdx6keN+ebSuZWzmkJE+nuCK73asz0IXJup1MTR0ZnyAMwl7IXAUC8Fibjvcbw==","shasum":"d5d9068d982ff12009bbc9efccc65ae382699fb8","tarball":"https://registry.npmjs.org/@dqc.ai/fiori-sdk/-/fiori-sdk-0.1.0.tgz","fileCount":5,"unpackedSize":9808,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCIN3iIKTBvMmOeCXzs2GMvEshWe6qwELxCUQxW8ReOLwIgCFEA/lsM1n5PL3kfL7UK5eN0AVLMioGycIHMbGMQ1Z4="}]},"_npmUser":{"name":"dqc-data-q-company","email":"code@dqc.ai"},"directories":{},"maintainers":[{"name":"dqc-data-q-company","email":"code@dqc.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fiori-sdk_0.1.0_1771574074429_0.5883999512831797"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-20T07:54:34.324Z","0.1.0":"2026-02-20T07:54:34.588Z","modified":"2026-02-20T07:54:34.839Z"},"maintainers":[{"name":"dqc-data-q-company","email":"code@dqc.ai"}],"description":"DQC Validation SDK for SAP Fiori — real-time data quality validation in UI5 apps","homepage":"https://docs.dqc.ai/fiori-sdk","keywords":["dqc","data-quality","sap","fiori","ui5","sapui5","openui5","validation","sap-btp"],"repository":{"type":"git","url":"git+https://github.com/dataqcompany/fiori-sdk.git"},"author":{"name":"dqc.ai","email":"code@dqc.ai","url":"https://dqc.ai"},"bugs":{"url":"https://github.com/dataqcompany/fiori-sdk/issues"},"license":"SEE LICENSE IN LICENSE","readme":"# @dqc.ai/fiori-sdk\n\n> Real-time data quality validation for SAP Fiori applications — powered by [DQC](https://dqc.ai).\n\n## Overview\n\nThe **DQC Fiori SDK** is a UI5 library that integrates DQC's Validation API directly into SAP Fiori apps. It enables **inline, real-time validation** of form data against centrally managed DQC rulesets — before the data is saved to SAP.\n\n- ✅ **Catch data quality issues at the point of entry** — not days later in a batch run\n- ✅ **Central rule management** — rules are maintained in DQC, not hard-coded in Fiori apps\n- ✅ **No ABAP changes required** — the SDK calls the DQC Validation API over HTTPS\n- ✅ **Works with any Fiori app** — Freestyle, Fiori Elements, or custom UI5 apps\n\n## Installation\n\n**Please reach out to the DQC team to get access.**\n\nAdd the DQC Fiori SDK to your UI5 project:\n\n```json\n{\n  \"dependencies\": {\n    \"@dqc.ai/fiori-sdk\": \"^0.1.0\"\n  }\n}\n```\n\nOr load directly in `manifest.json`:\n\n```json\n{\n  \"sap.ui5\": {\n    \"resourceRoots\": {\n      \"dqc.validation\": \"https://cdn.dqc.ai/<customer-id>/fiori-sdk/1.0/\"\n    }\n  }\n}\n```\n\n## Quick Start\n\n```javascript\n// Component.js\nsap.ui.define([\n  \"sap/ui/core/UIComponent\",\n  \"dqc/validation/DQCClient\"\n], function(UIComponent, DQCClient) {\n  \"use strict\";\n\n  return UIComponent.extend(\"my.app.Component\", {\n    init: function() {\n      UIComponent.prototype.init.apply(this, arguments);\n\n      // Initialize DQC Client\n      this._dqcClient = new DQCClient({\n        baseUrl: \"https://your-dqc-instance.dqc.ai\",\n        tenantId: \"your-tenant-uuid\",\n        apiKey: \"your-api-key\",\n        rulesetId: \"your-ruleset-uuid\"\n      });\n    }\n  });\n});\n```\n\n### Validate Form Data\n\n```javascript\n// In your controller\nonValidatePress: async function() {\n  var oModel = this.getView().getModel();\n  var oData = oModel.getProperty(\"/materialData\");\n\n  try {\n    var oResult = await this._dqcClient.validate({\n      data: [\n        {\n          \"MaterialNumber\":  { type: \"string\",  value: oData.MaterialNumber },\n          \"Description\":     { type: \"string\",  value: oData.Description },\n          \"Weight\":          { type: \"number\",  value: oData.Weight },\n          \"CreatedDate\":     { type: \"date\",    value: oData.CreatedDate, date_format: \"YYYY-MM-DD\" }\n        }\n      ]\n    });\n\n    if (oResult.passed) {\n      MessageToast.show(\"Alle Prüfungen bestanden ✓\");\n    } else {\n      this._dqcClient.applyIssues(this.getView(), oResult);\n    }\n  } catch (oError) {\n    MessageBox.error(\"Validierung fehlgeschlagen: \" + oError.message);\n  }\n}\n```\n\n## API Reference\n\n### `DQCClient(config)`\n\n```javascript\nnew DQCClient({\n  baseUrl: string,           // DQC platform URL\n  tenantId: string,          // Tenant UUID\n  apiKey?: string,           // API key authentication\n  destination?: string,      // SAP BTP Destination name (alternative to baseUrl + apiKey)\n  rulesetId?: string,        // Default ruleset (can override per call)\n  timeout?: number           // Request timeout in ms (default: 30000)\n})\n```\n\n### `validate(payload, options?)`\n\nValidates data against a DQC ruleset.\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `payload.data` | `Array<Object>` | Row objects. Each field: `{ type, value, date_format? }` |\n| `payload.rules_to_apply` | `string[]` | *(Optional)* Specific rule IDs. Empty = all rules |\n| `options.rulesetId` | `string` | *(Optional)* Override default ruleset |\n| `options.detailed` | `boolean` | *(Optional)* Detailed results (default: `true`) |\n\n**Returns:** `Promise<ValidationResponse>`\n\n```javascript\n{\n  request_id: \"req-123\",\n  passed: false,\n  total_rows_validated: 1,\n  total_issues: 2,\n  rule_results: [{\n    rule_id: \"uuid\",\n    rule_name: \"Material Number Format\",\n    rule_description: \"Must match pattern MAT-XXXXXX\",\n    total_issues: 1,\n    passed: false,\n    issues: [{\n      row_index: 0,\n      column_name: \"MaterialNumber\",\n      value: \"12345\",\n      expected_pattern: \"MAT-\\\\d{6}\",\n      error_message: \"Material number does not match required format\"\n    }]\n  }]\n}\n```\n\n### `applyIssues(view, validationResponse)`\n\nSets `ValueState.Error` and `ValueStateText` on matching UI5 input controls automatically.\n\n### `clearIssues(view)`\n\nResets all `ValueState` on controls previously marked by `applyIssues`.\n\n### `validateField(fieldName, value, type)`\n\nValidates a single field. Returns only issues for that field. Useful for `liveChange` handlers.\n\n## Authentication\n\n### API Key\n\n```javascript\nnew DQCClient({\n  baseUrl: \"https://your-instance.dqc.ai\",\n  tenantId: \"...\",\n  apiKey: \"dqc_ak_xxxxxxxxxxxx\"\n});\n```\n\n⚠️ API keys in frontend code are visible to users. Use only for internal/intranet Fiori apps or combine with SAP BTP Destination Service.\n\n### SAP BTP Destination (Recommended for Production)\n\nRoute requests through SAP BTP Destination Service — keeps credentials server-side.\n\n1. Create a Destination in SAP BTP Cockpit (`DQC_VALIDATION`, OAuth2ClientCredentials)\n2. Use in SDK:\n\n```javascript\nnew DQCClient({\n  destination: \"DQC_VALIDATION\",\n  rulesetId: \"your-ruleset-uuid\"\n});\n```\n\n## Supported Environments\n\n| Environment | Support |\n|-------------|---------|\n| SAP Fiori Launchpad (on-premise) | ✅ |\n| SAP BTP / Fiori Launchpad (cloud) | ✅ |\n| SAP Work Zone | ✅ |\n| Standalone UI5 app | ✅ |\n| SAP Mobile Start | ✅ (via BTP Destination) |\n| SAPUI5 1.96+ / OpenUI5 | ✅ |\n\n## Documentation\n\nFull documentation: **[docs.dqc.ai/fiori-sdk](https://docs.dqc.ai/fiori-sdk)**\n\n## Status\n\n🚧 **Early Access** — This package is under active development. Contact [support@dqc.ai](mailto:support@dqc.ai) for early access and integration support.\n\n## License\n\nProprietary — see [LICENSE](./LICENSE) for details.\n","readmeFilename":"README.md","_rev":"1-aba7e2d4170cf40511d253dee416dcad"}