Add template samples and compliance API documentation
- Add template-samples.md with ready-to-use bot examples and sample conversations for CRM, FAQ, calendar, HR, sales, IT helpdesk, compliance, broadcast, and analytics templates - Add compliance-api.md with full REST API reference for data subject requests, consent management, scanning
This commit is contained in:
parent
ab98cfd82e
commit
fd764709fc
2 changed files with 1391 additions and 0 deletions
700
docs/src/chapter-02/template-samples.md
Normal file
700
docs/src/chapter-02/template-samples.md
Normal file
|
|
@ -0,0 +1,700 @@
|
|||
# Template Samples & Conversations
|
||||
|
||||
> **Ready-to-use bots for common business needs**
|
||||
>
|
||||
> *See real conversations and learn how each template works*
|
||||
|
||||
---
|
||||
|
||||
## How to Use Templates
|
||||
|
||||
1. Go to **Sources** app
|
||||
2. Click **+ New Bot**
|
||||
3. Select **From Template**
|
||||
4. Choose the template you want
|
||||
5. Click **Create**
|
||||
|
||||
Your bot is ready to use immediately!
|
||||
|
||||
---
|
||||
|
||||
## Customer Support (CRM Template)
|
||||
|
||||
**Best for:** Handling customer inquiries, tracking issues, managing contacts
|
||||
|
||||
### Sample Conversation
|
||||
|
||||
```
|
||||
User: I need help with my order
|
||||
|
||||
Bot: I'd be happy to help with your order!
|
||||
What's your order number?
|
||||
|
||||
User: ORD-12345
|
||||
|
||||
Bot: Found it! Order #ORD-12345
|
||||
|
||||
📦 Status: Shipped
|
||||
📅 Shipped: May 14, 2025
|
||||
🚚 Carrier: FedEx
|
||||
📍 Tracking: 7891234567890
|
||||
|
||||
Expected delivery: May 17, 2025
|
||||
|
||||
Is there something specific about this order?
|
||||
|
||||
User: I want to return it
|
||||
|
||||
Bot: I can help you start a return for Order #ORD-12345.
|
||||
|
||||
📋 Return Policy:
|
||||
• Returns accepted within 30 days
|
||||
• Item must be unused
|
||||
• Original packaging required
|
||||
|
||||
Would you like me to create a return request?
|
||||
|
||||
User: Yes
|
||||
|
||||
Bot: ✅ Return Request Created!
|
||||
|
||||
Return #: RET-5678
|
||||
|
||||
Next steps:
|
||||
1. Print the return label (sent to your email)
|
||||
2. Pack the item securely
|
||||
3. Drop off at any FedEx location
|
||||
|
||||
Refund will process within 5-7 business days
|
||||
after we receive the item.
|
||||
|
||||
Anything else I can help with?
|
||||
```
|
||||
|
||||
### What It Can Do
|
||||
|
||||
- Look up orders by number or customer email
|
||||
- Check shipping status
|
||||
- Create return requests
|
||||
- Log customer interactions
|
||||
- Track support tickets
|
||||
|
||||
---
|
||||
|
||||
## FAQ Bot (AI Search Template)
|
||||
|
||||
**Best for:** Answering common questions from your documents
|
||||
|
||||
### Sample Conversation
|
||||
|
||||
```
|
||||
User: What's your refund policy?
|
||||
|
||||
Bot: Based on our policies:
|
||||
|
||||
**Refund Policy**
|
||||
|
||||
• Full refund within 30 days of purchase
|
||||
• Items must be unused and in original packaging
|
||||
• Refunds processed to original payment method
|
||||
• Processing time: 5-7 business days
|
||||
|
||||
For items over 30 days old, store credit is available.
|
||||
|
||||
📄 Source: Company Policies Handbook, Page 12
|
||||
|
||||
User: How do I contact support?
|
||||
|
||||
Bot: You can reach our support team through:
|
||||
|
||||
📧 Email: support@company.com
|
||||
📞 Phone: 1-800-555-0123 (Mon-Fri, 9am-5pm)
|
||||
💬 Chat: You're using it right now!
|
||||
|
||||
Average response time:
|
||||
• Chat: Immediate
|
||||
• Email: Within 24 hours
|
||||
• Phone: Under 5 minutes wait
|
||||
|
||||
📄 Source: Contact Information Page
|
||||
|
||||
User: Do you ship internationally?
|
||||
|
||||
Bot: Yes! We ship to over 50 countries.
|
||||
|
||||
**International Shipping:**
|
||||
• Standard: 10-15 business days ($15)
|
||||
• Express: 5-7 business days ($35)
|
||||
|
||||
**Note:** Import duties and taxes may apply
|
||||
depending on your country.
|
||||
|
||||
Countries we ship to include: Canada, UK,
|
||||
Australia, Germany, France, Japan, and more.
|
||||
|
||||
📄 Source: Shipping FAQ Document
|
||||
```
|
||||
|
||||
### Setup Tips
|
||||
|
||||
1. Upload your FAQ documents to the knowledge base
|
||||
2. Include policy documents, product guides, help articles
|
||||
3. The bot automatically learns from your files
|
||||
|
||||
---
|
||||
|
||||
## Appointment Booking (Calendar Template)
|
||||
|
||||
**Best for:** Scheduling meetings, consultations, appointments
|
||||
|
||||
### Sample Conversation
|
||||
|
||||
```
|
||||
User: I want to book an appointment
|
||||
|
||||
Bot: I'll help you schedule an appointment!
|
||||
|
||||
What type of appointment do you need?
|
||||
|
||||
1. 📋 Consultation (30 min)
|
||||
2. 🔧 Service Visit (1 hour)
|
||||
3. 📞 Phone Call (15 min)
|
||||
|
||||
User: Consultation
|
||||
|
||||
Bot: Great! A 30-minute consultation.
|
||||
|
||||
Here are available times this week:
|
||||
|
||||
📅 Tuesday, May 20
|
||||
• 10:00 AM
|
||||
• 2:00 PM
|
||||
• 4:00 PM
|
||||
|
||||
📅 Wednesday, May 21
|
||||
• 9:00 AM
|
||||
• 11:00 AM
|
||||
• 3:00 PM
|
||||
|
||||
Which works best for you?
|
||||
|
||||
User: Tuesday at 2pm
|
||||
|
||||
Bot: Perfect! Let me confirm your details.
|
||||
|
||||
What's your name?
|
||||
|
||||
User: John Smith
|
||||
|
||||
Bot: And your email address?
|
||||
|
||||
User: john@email.com
|
||||
|
||||
Bot: ✅ Appointment Confirmed!
|
||||
|
||||
📋 Consultation
|
||||
👤 John Smith
|
||||
📅 Tuesday, May 20, 2025
|
||||
🕐 2:00 PM (30 minutes)
|
||||
|
||||
A confirmation email has been sent to
|
||||
john@email.com with calendar invite.
|
||||
|
||||
Need to reschedule? Just ask!
|
||||
```
|
||||
|
||||
### What It Can Do
|
||||
|
||||
- Show available time slots
|
||||
- Book appointments
|
||||
- Send confirmation emails
|
||||
- Send reminders before appointments
|
||||
- Allow rescheduling and cancellation
|
||||
|
||||
---
|
||||
|
||||
## HR Assistant (Employee Template)
|
||||
|
||||
**Best for:** Employee self-service, HR questions, leave requests
|
||||
|
||||
### Sample Conversation
|
||||
|
||||
```
|
||||
User: How many vacation days do I have?
|
||||
|
||||
Bot: Let me check your balance, John.
|
||||
|
||||
📊 Your Time Off Balance:
|
||||
|
||||
Vacation Days
|
||||
├── Available: 12 days
|
||||
├── Used: 3 days
|
||||
└── Pending: 0 days
|
||||
|
||||
Sick Days
|
||||
├── Available: 8 days
|
||||
└── Used: 2 days
|
||||
|
||||
Your vacation resets on January 1, 2026.
|
||||
|
||||
Would you like to request time off?
|
||||
|
||||
User: Yes, I need next Friday off
|
||||
|
||||
Bot: I'll create a time off request for you.
|
||||
|
||||
📅 Requesting: Friday, May 23, 2025
|
||||
📋 Type: Vacation (1 day)
|
||||
|
||||
Reason for time off? (optional)
|
||||
|
||||
User: Personal appointment
|
||||
|
||||
Bot: ✅ Time Off Request Submitted!
|
||||
|
||||
📋 Request #PTO-2025-0142
|
||||
📅 Date: May 23, 2025 (1 day)
|
||||
📝 Reason: Personal appointment
|
||||
👤 Approver: Sarah Johnson (your manager)
|
||||
|
||||
You'll receive an email when it's approved.
|
||||
|
||||
Current status: ⏳ Pending Approval
|
||||
|
||||
User: What holidays do we have this year?
|
||||
|
||||
Bot: 📅 Company Holidays 2025:
|
||||
|
||||
✓ New Year's Day - Jan 1 (past)
|
||||
✓ Memorial Day - May 26
|
||||
✓ Independence Day - July 4
|
||||
✓ Labor Day - Sep 1
|
||||
✓ Thanksgiving - Nov 27-28
|
||||
✓ Christmas - Dec 25-26
|
||||
|
||||
Total: 8 paid holidays
|
||||
|
||||
Note: If a holiday falls on a weekend,
|
||||
it's observed on the nearest weekday.
|
||||
```
|
||||
|
||||
### What It Can Do
|
||||
|
||||
- Check PTO balances
|
||||
- Submit time off requests
|
||||
- Look up company holidays
|
||||
- Answer HR policy questions
|
||||
- Find employee directory info
|
||||
|
||||
---
|
||||
|
||||
## Sales Lead Capture
|
||||
|
||||
**Best for:** Qualifying leads, collecting contact info, scheduling demos
|
||||
|
||||
### Sample Conversation
|
||||
|
||||
```
|
||||
User: I'm interested in your product
|
||||
|
||||
Bot: Great! I'd love to learn more about what you're
|
||||
looking for.
|
||||
|
||||
What's your name?
|
||||
|
||||
User: Maria Garcia
|
||||
|
||||
Bot: Nice to meet you, Maria!
|
||||
|
||||
What company are you with?
|
||||
|
||||
User: Acme Corp
|
||||
|
||||
Bot: Acme Corp - got it!
|
||||
|
||||
What's your role there?
|
||||
|
||||
User: Marketing Director
|
||||
|
||||
Bot: Perfect! And what's the best email to reach you?
|
||||
|
||||
User: maria@acmecorp.com
|
||||
|
||||
Bot: Thanks Maria! One last question:
|
||||
|
||||
What's your biggest challenge right now?
|
||||
|
||||
1. 📈 Growing leads
|
||||
2. ⏱️ Saving time on manual tasks
|
||||
3. 📊 Better reporting
|
||||
4. 🔗 Integrating tools
|
||||
5. Other
|
||||
|
||||
User: Saving time
|
||||
|
||||
Bot: That's exactly what we help with!
|
||||
|
||||
✅ I've saved your information:
|
||||
|
||||
👤 Maria Garcia
|
||||
🏢 Acme Corp (Marketing Director)
|
||||
📧 maria@acmecorp.com
|
||||
🎯 Interest: Time savings
|
||||
|
||||
Would you like to:
|
||||
|
||||
1. 📅 Schedule a demo (15 min)
|
||||
2. 📄 Get a product overview PDF
|
||||
3. 💬 Ask questions now
|
||||
|
||||
User: Schedule a demo
|
||||
|
||||
Bot: I can schedule you with our team!
|
||||
|
||||
Available demo times:
|
||||
|
||||
📅 Tomorrow (May 16)
|
||||
• 10:00 AM
|
||||
• 3:00 PM
|
||||
|
||||
📅 Monday (May 19)
|
||||
• 11:00 AM
|
||||
• 2:00 PM
|
||||
|
||||
Which works for you?
|
||||
|
||||
User: Tomorrow at 3pm
|
||||
|
||||
Bot: ✅ Demo Scheduled!
|
||||
|
||||
📅 Friday, May 16 at 3:00 PM
|
||||
👤 With: Alex from our Sales team
|
||||
📧 Calendar invite sent to maria@acmecorp.com
|
||||
|
||||
Alex will show you how companies like Acme
|
||||
save 10+ hours per week with our platform.
|
||||
|
||||
See you tomorrow, Maria!
|
||||
```
|
||||
|
||||
### What It Can Do
|
||||
|
||||
- Qualify leads with questions
|
||||
- Capture contact information
|
||||
- Score leads automatically
|
||||
- Schedule demo calls
|
||||
- Send follow-up emails
|
||||
|
||||
---
|
||||
|
||||
## IT Helpdesk
|
||||
|
||||
**Best for:** IT support tickets, troubleshooting, password resets
|
||||
|
||||
### Sample Conversation
|
||||
|
||||
```
|
||||
User: I can't access my email
|
||||
|
||||
Bot: I'll help you troubleshoot your email access.
|
||||
|
||||
What error are you seeing?
|
||||
|
||||
1. 🔐 Password incorrect
|
||||
2. 📧 Can't connect to server
|
||||
3. 🔄 Email not syncing
|
||||
4. ❓ Something else
|
||||
|
||||
User: Password incorrect
|
||||
|
||||
Bot: Let's fix your password issue.
|
||||
|
||||
Have you tried resetting your password in the
|
||||
last 24 hours?
|
||||
|
||||
User: No
|
||||
|
||||
Bot: I can send a password reset link to your
|
||||
backup email address.
|
||||
|
||||
For security, please confirm your employee ID:
|
||||
|
||||
User: EMP-4521
|
||||
|
||||
Bot: ✅ Verified!
|
||||
|
||||
I've sent a password reset link to your backup
|
||||
email (j***@gmail.com).
|
||||
|
||||
📧 Check your email and click the reset link
|
||||
⏱️ Link expires in 15 minutes
|
||||
|
||||
After resetting:
|
||||
1. Use the new password for email
|
||||
2. Update password on your phone too
|
||||
3. It may take 5 minutes to sync
|
||||
|
||||
Still having issues after resetting?
|
||||
|
||||
User: It worked, thanks!
|
||||
|
||||
Bot: Glad it's working! 🎉
|
||||
|
||||
Quick security tips:
|
||||
• Use a strong, unique password
|
||||
• Enable two-factor authentication
|
||||
• Never share your password
|
||||
|
||||
Anything else I can help with?
|
||||
|
||||
User: No that's all
|
||||
|
||||
Bot: ✅ Ticket #IT-2025-0891 closed as resolved.
|
||||
|
||||
Have a great day! Remember, I'm here 24/7
|
||||
if you need IT help.
|
||||
```
|
||||
|
||||
### What It Can Do
|
||||
|
||||
- Create support tickets
|
||||
- Reset passwords
|
||||
- Troubleshoot common issues
|
||||
- Check system status
|
||||
- Escalate to human agents
|
||||
|
||||
---
|
||||
|
||||
## Compliance & Privacy (LGPD/GDPR)
|
||||
|
||||
**Best for:** Handling data privacy requests
|
||||
|
||||
### Sample Conversation
|
||||
|
||||
```
|
||||
User: I want to see what data you have about me
|
||||
|
||||
Bot: I can help you with a Data Access Request.
|
||||
|
||||
Under privacy regulations (LGPD, GDPR, CCPA),
|
||||
you have the right to receive a copy of your
|
||||
personal data.
|
||||
|
||||
To process your request, I need to verify your
|
||||
identity. What's your email address?
|
||||
|
||||
User: john.doe@email.com
|
||||
|
||||
Bot: I've sent a verification code to john.doe@email.com
|
||||
|
||||
Please enter the 6-digit code:
|
||||
|
||||
User: 847291
|
||||
|
||||
Bot: ✅ Identity verified!
|
||||
|
||||
What would you like to do?
|
||||
|
||||
1. 📥 Get a copy of my data
|
||||
2. ✏️ Correct my information
|
||||
3. 🗑️ Delete my data
|
||||
4. ❓ Ask about data usage
|
||||
|
||||
User: Get a copy of my data
|
||||
|
||||
Bot: ✅ Data Access Request Submitted
|
||||
|
||||
📋 Request #DSR-2025-0142
|
||||
📧 john.doe@email.com
|
||||
📅 Submitted: May 15, 2025
|
||||
⏱️ Due: May 30, 2025 (15 days)
|
||||
|
||||
We will compile all your personal data and
|
||||
send it to your email in a secure format.
|
||||
|
||||
You'll receive:
|
||||
• Profile information
|
||||
• Communication history
|
||||
• Preferences and settings
|
||||
• Activity logs
|
||||
|
||||
Is there anything specific you're looking for?
|
||||
|
||||
User: No, that's all
|
||||
|
||||
Bot: Your request is being processed.
|
||||
|
||||
You'll receive an email within 15 days with
|
||||
a secure link to download your data.
|
||||
|
||||
Questions? Reply to the confirmation email
|
||||
or come back here anytime.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Broadcast & Announcements
|
||||
|
||||
**Best for:** Sending company-wide messages, news updates
|
||||
|
||||
### Sample Conversation (Admin)
|
||||
|
||||
```
|
||||
Admin: Send an announcement
|
||||
|
||||
Bot: I'll help you create an announcement.
|
||||
|
||||
What's the title?
|
||||
|
||||
Admin: Office Closure Tomorrow
|
||||
|
||||
Bot: Got it! Now the message content:
|
||||
|
||||
Admin: Due to the holiday, our office will be closed
|
||||
tomorrow May 16. We'll reopen Monday at 9am.
|
||||
|
||||
Bot: Who should receive this?
|
||||
|
||||
1. 👥 All employees
|
||||
2. 🏢 Specific department
|
||||
3. 📍 Specific location
|
||||
4. 📋 Custom list
|
||||
|
||||
Admin: All employees
|
||||
|
||||
Bot: How should I send it?
|
||||
|
||||
☑️ Email
|
||||
☑️ Chat notification
|
||||
☐ SMS
|
||||
|
||||
(Select all that apply)
|
||||
|
||||
Admin: Email and chat
|
||||
|
||||
Bot: 📢 Announcement Preview:
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
OFFICE CLOSURE TOMORROW
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
Due to the holiday, our office will be
|
||||
closed tomorrow May 16. We'll reopen
|
||||
Monday at 9am.
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
Recipients: 247 employees
|
||||
Channels: Email, Chat
|
||||
|
||||
Send now or schedule?
|
||||
|
||||
Admin: Send now
|
||||
|
||||
Bot: ✅ Announcement Sent!
|
||||
|
||||
📧 247 emails delivered
|
||||
💬 247 chat notifications sent
|
||||
|
||||
Delivery report saved. View in Analytics.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Talk to Data (Analytics)
|
||||
|
||||
**Best for:** Asking questions about your business data in plain English
|
||||
|
||||
### Sample Conversation
|
||||
|
||||
```
|
||||
User: How many sales did we make last month?
|
||||
|
||||
Bot: 📊 Sales Summary - April 2025
|
||||
|
||||
Total Sales: 1,247
|
||||
Revenue: $156,340
|
||||
Average Order: $125.35
|
||||
|
||||
Compared to March:
|
||||
• Sales: ▲ 12% (+134)
|
||||
• Revenue: ▲ 8% (+$11,520)
|
||||
|
||||
User: Which product sold the most?
|
||||
|
||||
Bot: 🏆 Top 5 Products - April 2025
|
||||
|
||||
1. Widget Pro - 342 units ($42,750)
|
||||
2. Basic Package - 289 units ($28,900)
|
||||
3. Premium Bundle - 201 units ($40,200)
|
||||
4. Starter Kit - 187 units ($18,700)
|
||||
5. Add-on Pack - 156 units ($15,600)
|
||||
|
||||
Widget Pro has been #1 for 3 months in a row!
|
||||
|
||||
User: Show me sales by region
|
||||
|
||||
Bot: 🗺️ Sales by Region - April 2025
|
||||
|
||||
North America ████████████░░ $68,500 (44%)
|
||||
Europe ███████░░░░░░░ $42,300 (27%)
|
||||
Asia Pacific █████░░░░░░░░░ $31,200 (20%)
|
||||
Latin America ██░░░░░░░░░░░░ $14,340 (9%)
|
||||
|
||||
Fastest growing: Asia Pacific (▲ 23%)
|
||||
|
||||
User: Who are our top customers?
|
||||
|
||||
Bot: 👥 Top 5 Customers - April 2025
|
||||
|
||||
1. Acme Corp $12,450 (8 orders)
|
||||
2. TechStart Inc $9,800 (12 orders)
|
||||
3. Global Services $8,200 (5 orders)
|
||||
4. Smith & Co $7,650 (6 orders)
|
||||
5. DataFlow Ltd $6,900 (4 orders)
|
||||
|
||||
Want me to show purchase history for any of these?
|
||||
```
|
||||
|
||||
### What It Can Do
|
||||
|
||||
- Answer business questions in plain English
|
||||
- Show sales, revenue, customer data
|
||||
- Compare time periods
|
||||
- Create simple reports
|
||||
- Export data to spreadsheets
|
||||
|
||||
---
|
||||
|
||||
## Quick Template Selection Guide
|
||||
|
||||
| I need to... | Use this template |
|
||||
|--------------|-------------------|
|
||||
| Answer customer questions | AI Search (FAQ) |
|
||||
| Handle support tickets | CRM / IT Helpdesk |
|
||||
| Book appointments | Calendar |
|
||||
| Capture sales leads | CRM (Sales) |
|
||||
| Help employees with HR | HR Assistant |
|
||||
| Send announcements | Broadcast |
|
||||
| Query business data | Talk to Data |
|
||||
| Handle privacy requests | Compliance |
|
||||
|
||||
---
|
||||
|
||||
## Need Something Custom?
|
||||
|
||||
If these templates don't fit your needs:
|
||||
|
||||
1. **Start with the closest template** - Modify it
|
||||
2. **Use the Default template** - Build from scratch
|
||||
3. **Combine templates** - Use features from multiple templates
|
||||
4. **Ask for help** - Our community can guide you
|
||||
|
||||
---
|
||||
|
||||
## See Also
|
||||
|
||||
- [Templates Reference](./templates.md) - Full template list
|
||||
- [How To: Create Your First Bot](../chapter-04-gbui/how-to/create-first-bot.md)
|
||||
- [Sources App](../chapter-04-gbui/apps/sources.md) - Managing templates
|
||||
- [Write Your First Dialog](../chapter-04-gbui/how-to/write-first-dialog.md)
|
||||
691
docs/src/chapter-04-gbui/apps/compliance-api.md
Normal file
691
docs/src/chapter-04-gbui/apps/compliance-api.md
Normal file
|
|
@ -0,0 +1,691 @@
|
|||
# Compliance API Reference
|
||||
|
||||
> **Programmatic access to privacy and compliance features**
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
The Compliance API allows you to programmatically manage data subject requests, consent records, and compliance scanning. Use this API to integrate privacy features into your applications or automate compliance workflows.
|
||||
|
||||
**Base URL:** `https://your-server.com/api/compliance`
|
||||
|
||||
---
|
||||
|
||||
## Authentication
|
||||
|
||||
All API requests require authentication using a Bearer token:
|
||||
|
||||
```
|
||||
Authorization: Bearer your-api-key
|
||||
```
|
||||
|
||||
Get your API key from **Settings** → **API Keys** → **Create New Key** with `compliance` scope.
|
||||
|
||||
---
|
||||
|
||||
## Endpoints
|
||||
|
||||
### Data Subject Requests (DSR)
|
||||
|
||||
#### List All Requests
|
||||
|
||||
```
|
||||
GET /api/compliance/dsr
|
||||
```
|
||||
|
||||
**Query Parameters:**
|
||||
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `status` | string | Filter by status: `pending`, `processing`, `completed`, `rejected` |
|
||||
| `type` | string | Filter by type: `access`, `deletion`, `rectification`, `portability`, `objection` |
|
||||
| `from` | date | Start date (YYYY-MM-DD) |
|
||||
| `to` | date | End date (YYYY-MM-DD) |
|
||||
| `limit` | number | Results per page (default: 20, max: 100) |
|
||||
| `offset` | number | Pagination offset |
|
||||
|
||||
**Example Request:**
|
||||
|
||||
```
|
||||
GET /api/compliance/dsr?status=pending&limit=10
|
||||
```
|
||||
|
||||
**Example Response:**
|
||||
|
||||
```
|
||||
{
|
||||
"total": 7,
|
||||
"limit": 10,
|
||||
"offset": 0,
|
||||
"requests": [
|
||||
{
|
||||
"id": "DSR-2025-0142",
|
||||
"type": "access",
|
||||
"status": "pending",
|
||||
"userId": "usr_abc123",
|
||||
"email": "john.doe@email.com",
|
||||
"submittedAt": "2025-05-13T10:30:00Z",
|
||||
"dueDate": "2025-05-28T10:30:00Z",
|
||||
"assignee": null
|
||||
},
|
||||
{
|
||||
"id": "DSR-2025-0141",
|
||||
"type": "deletion",
|
||||
"status": "processing",
|
||||
"userId": "usr_def456",
|
||||
"email": "sarah@company.com",
|
||||
"submittedAt": "2025-05-10T14:15:00Z",
|
||||
"dueDate": "2025-05-25T14:15:00Z",
|
||||
"assignee": "admin@company.com"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Get Single Request
|
||||
|
||||
```
|
||||
GET /api/compliance/dsr/{id}
|
||||
```
|
||||
|
||||
**Example Response:**
|
||||
|
||||
```
|
||||
{
|
||||
"id": "DSR-2025-0142",
|
||||
"type": "access",
|
||||
"status": "pending",
|
||||
"userId": "usr_abc123",
|
||||
"email": "john.doe@email.com",
|
||||
"name": "John Doe",
|
||||
"submittedAt": "2025-05-13T10:30:00Z",
|
||||
"dueDate": "2025-05-28T10:30:00Z",
|
||||
"assignee": null,
|
||||
"message": "I would like a copy of all my data",
|
||||
"verifiedAt": "2025-05-13T10:35:00Z",
|
||||
"dataFound": {
|
||||
"profile": true,
|
||||
"conversations": true,
|
||||
"consents": true,
|
||||
"activityLogs": true
|
||||
},
|
||||
"history": [
|
||||
{
|
||||
"action": "created",
|
||||
"timestamp": "2025-05-13T10:30:00Z",
|
||||
"actor": "system"
|
||||
},
|
||||
{
|
||||
"action": "verified",
|
||||
"timestamp": "2025-05-13T10:35:00Z",
|
||||
"actor": "system"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Create Request
|
||||
|
||||
```
|
||||
POST /api/compliance/dsr
|
||||
```
|
||||
|
||||
**Request Body:**
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| `type` | string | Yes | `access`, `deletion`, `rectification`, `portability`, `objection` |
|
||||
| `email` | string | Yes | User's email address |
|
||||
| `userId` | string | No | User ID if known |
|
||||
| `message` | string | No | User's message/reason |
|
||||
| `skipVerification` | boolean | No | Skip email verification (default: false) |
|
||||
|
||||
**Example Request:**
|
||||
|
||||
```
|
||||
POST /api/compliance/dsr
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"type": "access",
|
||||
"email": "john.doe@email.com",
|
||||
"message": "Please provide all my personal data"
|
||||
}
|
||||
```
|
||||
|
||||
**Example Response:**
|
||||
|
||||
```
|
||||
{
|
||||
"id": "DSR-2025-0143",
|
||||
"type": "access",
|
||||
"status": "pending_verification",
|
||||
"email": "john.doe@email.com",
|
||||
"submittedAt": "2025-05-15T14:00:00Z",
|
||||
"dueDate": "2025-05-30T14:00:00Z",
|
||||
"verificationSent": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Update Request Status
|
||||
|
||||
```
|
||||
PATCH /api/compliance/dsr/{id}
|
||||
```
|
||||
|
||||
**Request Body:**
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| `status` | string | `processing`, `completed`, `rejected` |
|
||||
| `assignee` | string | Email of person handling request |
|
||||
| `notes` | string | Internal notes |
|
||||
| `rejectionReason` | string | Required if status is `rejected` |
|
||||
|
||||
**Example Request:**
|
||||
|
||||
```
|
||||
PATCH /api/compliance/dsr/DSR-2025-0142
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"status": "processing",
|
||||
"assignee": "admin@company.com"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Complete Request (with data package)
|
||||
|
||||
```
|
||||
POST /api/compliance/dsr/{id}/complete
|
||||
```
|
||||
|
||||
**Request Body:**
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| `notifyUser` | boolean | Send completion email (default: true) |
|
||||
| `dataPackageUrl` | string | URL to downloadable data (for access/portability) |
|
||||
| `expiresAt` | datetime | When download link expires |
|
||||
|
||||
**Example Request:**
|
||||
|
||||
```
|
||||
POST /api/compliance/dsr/DSR-2025-0142/complete
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"notifyUser": true,
|
||||
"dataPackageUrl": "https://secure.company.com/data/abc123.zip",
|
||||
"expiresAt": "2025-06-15T00:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Consent Management
|
||||
|
||||
#### Get User Consent
|
||||
|
||||
```
|
||||
GET /api/compliance/consent/{userId}
|
||||
```
|
||||
|
||||
**Example Response:**
|
||||
|
||||
```
|
||||
{
|
||||
"userId": "usr_abc123",
|
||||
"email": "john.doe@email.com",
|
||||
"consents": [
|
||||
{
|
||||
"type": "terms_of_service",
|
||||
"status": "given",
|
||||
"version": "2.3",
|
||||
"timestamp": "2025-01-15T10:32:00Z",
|
||||
"method": "web_form",
|
||||
"ip": "192.168.1.100"
|
||||
},
|
||||
{
|
||||
"type": "marketing",
|
||||
"status": "given",
|
||||
"timestamp": "2025-01-15T10:32:00Z",
|
||||
"method": "web_form"
|
||||
},
|
||||
{
|
||||
"type": "analytics",
|
||||
"status": "withdrawn",
|
||||
"timestamp": "2025-03-22T15:15:00Z",
|
||||
"method": "preference_center"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Record Consent
|
||||
|
||||
```
|
||||
POST /api/compliance/consent
|
||||
```
|
||||
|
||||
**Request Body:**
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| `userId` | string | Yes | User identifier |
|
||||
| `email` | string | Yes | User's email |
|
||||
| `type` | string | Yes | Consent type (e.g., `marketing`, `analytics`) |
|
||||
| `status` | string | Yes | `given` or `withdrawn` |
|
||||
| `method` | string | No | How consent was collected |
|
||||
| `ip` | string | No | User's IP address |
|
||||
| `userAgent` | string | No | User's browser |
|
||||
|
||||
**Example Request:**
|
||||
|
||||
```
|
||||
POST /api/compliance/consent
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"userId": "usr_abc123",
|
||||
"email": "john.doe@email.com",
|
||||
"type": "marketing",
|
||||
"status": "given",
|
||||
"method": "chatbot",
|
||||
"ip": "192.168.1.100"
|
||||
}
|
||||
```
|
||||
|
||||
**Example Response:**
|
||||
|
||||
```
|
||||
{
|
||||
"success": true,
|
||||
"consentId": "con_xyz789",
|
||||
"userId": "usr_abc123",
|
||||
"type": "marketing",
|
||||
"status": "given",
|
||||
"timestamp": "2025-05-15T14:30:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Withdraw Consent
|
||||
|
||||
```
|
||||
DELETE /api/compliance/consent/{userId}/{type}
|
||||
```
|
||||
|
||||
**Example Request:**
|
||||
|
||||
```
|
||||
DELETE /api/compliance/consent/usr_abc123/marketing
|
||||
```
|
||||
|
||||
**Example Response:**
|
||||
|
||||
```
|
||||
{
|
||||
"success": true,
|
||||
"userId": "usr_abc123",
|
||||
"type": "marketing",
|
||||
"status": "withdrawn",
|
||||
"timestamp": "2025-05-15T14:35:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### List Consent Types
|
||||
|
||||
```
|
||||
GET /api/compliance/consent-types
|
||||
```
|
||||
|
||||
**Example Response:**
|
||||
|
||||
```
|
||||
{
|
||||
"consentTypes": [
|
||||
{
|
||||
"id": "terms_of_service",
|
||||
"name": "Terms of Service",
|
||||
"required": true,
|
||||
"description": "Agreement to terms and conditions",
|
||||
"currentVersion": "2.3"
|
||||
},
|
||||
{
|
||||
"id": "marketing",
|
||||
"name": "Marketing Communications",
|
||||
"required": false,
|
||||
"description": "Receive promotional emails and offers"
|
||||
},
|
||||
{
|
||||
"id": "analytics",
|
||||
"name": "Analytics & Improvement",
|
||||
"required": false,
|
||||
"description": "Help us improve by analyzing usage patterns"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Compliance Scanning
|
||||
|
||||
#### Start a Scan
|
||||
|
||||
```
|
||||
POST /api/compliance/scan
|
||||
```
|
||||
|
||||
**Request Body:**
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| `type` | string | `quick`, `full`, or `custom` |
|
||||
| `targets` | array | For custom: `["bots", "kb", "users", "logs"]` |
|
||||
| `botId` | string | Scan specific bot only |
|
||||
|
||||
**Example Request:**
|
||||
|
||||
```
|
||||
POST /api/compliance/scan
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"type": "full",
|
||||
"targets": ["bots", "kb", "users", "logs"]
|
||||
}
|
||||
```
|
||||
|
||||
**Example Response:**
|
||||
|
||||
```
|
||||
{
|
||||
"scanId": "scan_20250515_001",
|
||||
"status": "running",
|
||||
"type": "full",
|
||||
"startedAt": "2025-05-15T14:45:00Z",
|
||||
"estimatedDuration": "30 minutes"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Get Scan Status
|
||||
|
||||
```
|
||||
GET /api/compliance/scan/{scanId}
|
||||
```
|
||||
|
||||
**Example Response (In Progress):**
|
||||
|
||||
```
|
||||
{
|
||||
"scanId": "scan_20250515_001",
|
||||
"status": "running",
|
||||
"progress": 45,
|
||||
"currentStep": "Scanning conversation logs",
|
||||
"startedAt": "2025-05-15T14:45:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
**Example Response (Complete):**
|
||||
|
||||
```
|
||||
{
|
||||
"scanId": "scan_20250515_001",
|
||||
"status": "completed",
|
||||
"progress": 100,
|
||||
"startedAt": "2025-05-15T14:45:00Z",
|
||||
"completedAt": "2025-05-15T15:12:00Z",
|
||||
"summary": {
|
||||
"totalChecks": 148,
|
||||
"passed": 145,
|
||||
"warnings": 2,
|
||||
"critical": 1
|
||||
},
|
||||
"issues": [
|
||||
{
|
||||
"severity": "critical",
|
||||
"type": "unencrypted_pii",
|
||||
"description": "Unencrypted PII found in conversation logs",
|
||||
"location": "support-bot/logs/2025-05-10",
|
||||
"affectedRecords": 23,
|
||||
"recommendation": "Enable automatic PII redaction"
|
||||
},
|
||||
{
|
||||
"severity": "warning",
|
||||
"type": "consent_expiring",
|
||||
"description": "Consent records older than 2 years",
|
||||
"affectedUsers": 12,
|
||||
"recommendation": "Send consent renewal requests"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Get Latest Scan Results
|
||||
|
||||
```
|
||||
GET /api/compliance/scan/latest
|
||||
```
|
||||
|
||||
Returns the most recent completed scan results.
|
||||
|
||||
---
|
||||
|
||||
### Reports
|
||||
|
||||
#### Generate Compliance Report
|
||||
|
||||
```
|
||||
POST /api/compliance/report
|
||||
```
|
||||
|
||||
**Request Body:**
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| `type` | string | `summary`, `detailed`, `audit` |
|
||||
| `period` | string | `last_30_days`, `last_90_days`, `year`, `custom` |
|
||||
| `from` | date | Start date for custom period |
|
||||
| `to` | date | End date for custom period |
|
||||
| `format` | string | `json`, `pdf`, `csv` |
|
||||
|
||||
**Example Request:**
|
||||
|
||||
```
|
||||
POST /api/compliance/report
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"type": "summary",
|
||||
"period": "last_30_days",
|
||||
"format": "json"
|
||||
}
|
||||
```
|
||||
|
||||
**Example Response:**
|
||||
|
||||
```
|
||||
{
|
||||
"reportId": "rpt_20250515_001",
|
||||
"generatedAt": "2025-05-15T15:00:00Z",
|
||||
"period": {
|
||||
"from": "2025-04-15",
|
||||
"to": "2025-05-15"
|
||||
},
|
||||
"summary": {
|
||||
"overallScore": 92,
|
||||
"dsrRequests": {
|
||||
"received": 15,
|
||||
"completed": 12,
|
||||
"pending": 3,
|
||||
"averageResponseDays": 8.5
|
||||
},
|
||||
"consentRate": 94.2,
|
||||
"dataBreaches": 0,
|
||||
"scansPerformed": 4,
|
||||
"issuesFound": 7,
|
||||
"issuesResolved": 5
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Download Report
|
||||
|
||||
```
|
||||
GET /api/compliance/report/{reportId}/download
|
||||
```
|
||||
|
||||
Returns the report file in the requested format.
|
||||
|
||||
---
|
||||
|
||||
### Data Deletion
|
||||
|
||||
#### Delete User Data
|
||||
|
||||
```
|
||||
DELETE /api/compliance/user/{userId}/data
|
||||
```
|
||||
|
||||
**Query Parameters:**
|
||||
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `scope` | string | `all`, `conversations`, `profile`, `analytics` |
|
||||
| `confirm` | boolean | Must be `true` to execute |
|
||||
|
||||
**Example Request:**
|
||||
|
||||
```
|
||||
DELETE /api/compliance/user/usr_abc123/data?scope=all&confirm=true
|
||||
```
|
||||
|
||||
**Example Response:**
|
||||
|
||||
```
|
||||
{
|
||||
"success": true,
|
||||
"userId": "usr_abc123",
|
||||
"deletedAt": "2025-05-15T15:30:00Z",
|
||||
"scope": "all",
|
||||
"itemsDeleted": {
|
||||
"profile": 1,
|
||||
"conversations": 45,
|
||||
"consents": 3,
|
||||
"activityLogs": 234
|
||||
},
|
||||
"retainedForLegal": {
|
||||
"auditLogs": 15
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Error Responses
|
||||
|
||||
All errors follow this format:
|
||||
|
||||
```
|
||||
{
|
||||
"error": {
|
||||
"code": "ERROR_CODE",
|
||||
"message": "Human readable message",
|
||||
"details": {}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Common Error Codes:**
|
||||
|
||||
| Code | HTTP Status | Description |
|
||||
|------|-------------|-------------|
|
||||
| `UNAUTHORIZED` | 401 | Invalid or missing API key |
|
||||
| `FORBIDDEN` | 403 | API key lacks required scope |
|
||||
| `NOT_FOUND` | 404 | Resource not found |
|
||||
| `VALIDATION_ERROR` | 400 | Invalid request parameters |
|
||||
| `RATE_LIMITED` | 429 | Too many requests |
|
||||
| `INTERNAL_ERROR` | 500 | Server error |
|
||||
|
||||
---
|
||||
|
||||
## Rate Limits
|
||||
|
||||
| Endpoint | Limit |
|
||||
|----------|-------|
|
||||
| All endpoints | 100 requests/minute |
|
||||
| Scan endpoints | 5 requests/hour |
|
||||
| Report generation | 10 requests/hour |
|
||||
|
||||
Rate limit headers are included in responses:
|
||||
|
||||
```
|
||||
X-RateLimit-Limit: 100
|
||||
X-RateLimit-Remaining: 95
|
||||
X-RateLimit-Reset: 1621234567
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Webhooks
|
||||
|
||||
Configure webhooks to receive real-time notifications.
|
||||
|
||||
**Available Events:**
|
||||
|
||||
| Event | Description |
|
||||
|-------|-------------|
|
||||
| `dsr.created` | New DSR submitted |
|
||||
| `dsr.completed` | DSR marked complete |
|
||||
| `dsr.due_soon` | DSR due within 3 days |
|
||||
| `consent.changed` | User consent updated |
|
||||
| `scan.completed` | Compliance scan finished |
|
||||
| `issue.critical` | Critical issue detected |
|
||||
|
||||
**Webhook Payload Example:**
|
||||
|
||||
```
|
||||
POST https://your-server.com/webhook
|
||||
Content-Type: application/json
|
||||
X-Signature: sha256=...
|
||||
|
||||
{
|
||||
"event": "dsr.created",
|
||||
"timestamp": "2025-05-15T14:00:00Z",
|
||||
"data": {
|
||||
"id": "DSR-2025-0143",
|
||||
"type": "access",
|
||||
"email": "user@example.com"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## See Also
|
||||
|
||||
- [Compliance App](./compliance.md) - User interface guide
|
||||
- [How To: Configure Compliance](../how-to/configure-compliance.md)
|
||||
- [BASIC Compliance Keywords](../../chapter-06-gbdialog/keywords-reference.md)
|
||||
Loading…
Add table
Reference in a new issue