diff --git a/.claude/settings.local.json b/.claude/settings.local.json index d769b859..3335494d 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -22,9 +22,10 @@ "Bash(npm run:*)", "Bash(git add:*)", "Bash(git commit:*)", - "Bash(git rm:*)" + "Bash(git rm:*)", + "Bash(npx docusaurus:*)" ], "deny": [], "ask": [] } -} \ No newline at end of file +} diff --git a/docs/api/configure-profile-service.api.mdx b/docs/api/configure-profile-service.api.mdx new file mode 100644 index 00000000..7ee826d2 --- /dev/null +++ b/docs/api/configure-profile-service.api.mdx @@ -0,0 +1,94 @@ +--- +id: configure-profile-service +title: "Configure Service Provider" +description: "Configure external service providers for your profile. This allows you to set up integrations with third-party services for SMS and Email messaging." +sidebar_label: "Configure Service Provider" +hide_title: true +hide_table_of_contents: true +api: eJztWt1z2zYS/1cwzEMTHakvS7alh865sa71tHF9kTyZm9jTQMRSQkMCDABaUW3/7zcLgBQpyY7Tpp08xA8ZSQB2f1js9+Y2MHShg/Hb4ELJhKcQXIcBAx0rnhsuRTAOXkqR8EWhgMBHA0rQlGhQNzwGkit5wxkoTRKpyFoWCn9CMm0yW3JNaJrKlcYVYiTRYEiREy4MLBRF8pqsuFkSs+SKRTlVZl3SdiSnr6aECkYmGeUpyUBruuBi0b4SV6LVOrmhPKXzFHYBjVst3HNHpn5lts6B3JELv4HckdPNLcndlbiLGn93ez/iN6T6Tmf6HbkjsxVPuSTIRjCL1mEETW44rZbrR6bn0wf3n2T0DyncFnsG8N7v/P4fFWflUbvgDlVLJxdnO8cm0z0nSjaTXTavZhd7DsSFNjJzqyhqlJ97grMsl8pQYYiQBpzYI/JSAQNhOE01oQqfJy4UpGuijVTASKG5WJC3M7qQZ7+SKcQKjL5+3mEy1h1DF5LLzgKM4WIRaUOVAdbRbteLNvmfLEhWaENiBdQAMUsgNM+VzBXH734nmUMiFZDY6y+ypDua0ka8ExovqxWDmhJTQaRI12RJb4BIAYTGht9szlVkrR4TagglhmeA5C61A2VAGwKC5ZILgwZwA4ona2cozfMeqxMMN4QL5MSKGFedqF/Dh4Kj9Kr7rSs0Xu6tlte46atpqzXGd7ACWkkyg4+mOhlLYSgXyMtiKU+dnVprOynMkszkexCOKOpjkyIV5OTNlEz/O/Wv5+zYEsOFuKYAzxUsuBQhoXEMWpP3sA49Evz8wvMotdiaep1VHfoO8oby/wxrT2wy3aXz5SGjOexhY3/f4eHtpvHsVyIIA5mD+3bGgnFQroP3x95/BWGg4EMB2vwg2ToY39qvqA7B2KgCQjxoQBhconme8tjS7Pyu0YnfBjpeQkbxE+p3MA7k/HeITRAGaDigDAeNq9bq921rBgXnkEuTaVxqh2SppDWq2qA5BmEAosgw+mgQbKE4C8JAg8Z/M5PvxqLZEpxf2tihkaTQKB/4SLM8tdTx7H0YJEpm+5g2aaIKgfJkKWMKtG6QE1JBnq7/7X9pxzJD6t6YPi0rrwpnpy6mbTzIRuN2ZMaooU+B7inX7cKqX9O7PC+VxQfV2UWF4gWRatswtrZPppvdDcEcHsej0dER7R93j0bQ7fa6lCYHoxFKh+b8t/ew/rN32DLrbUjl8ufiwj/Urae82qvpF9RvYz0s6rXQ+9Ua+T2m1J7C56p1vsTgJYpsDgqjyqTdOxygEDO6/dAuCoREWhI0daI+nzaF+6/ecDjs9Q8Gw8Ojv90M3KV/05z9SUXyke0kjmUhjI1w+y79kCIdDZLe0aCbjOKY9bvdLqV0MBz28N4emsEw+RfBVeH287EdHG5h6yK2v+A9HncF55/vCu690fm99lk3JUUjwcelG5oW0AhEG/Nyjr00gL1+uaGPTgyPYat8QY1JZaqeTUPhm/pe086HdWVbVR55OSuopnAwCW3I5WsG7LICm/OULvrTb7qJ/E991yq2PK52DyF7Nbv45zXtYTiT6RNkpP9GMKhmDsr59BOqhtHrs3k5fgp0LoV2DqDf7drTW/6oWZpVYRdrnsJm4kmRpuvgiyW7CnSRmr1xu/JsT0aFzsRQU9RD4VzKFKioE8RsvZTJYJ8YfqCM+FyfRORM3NCUs50U5AtJ4CmIE5pquA8D36p4XFwV3lo55bMNjCBYFmtIITawyd6CjTx6u/K4FLQwS6n4H8BqApGKZFzbetn5qa9XJvUb1O56sHvX/0g154yBsBfVRZLwmIMwJAdlbyutAX6tF8XODJPYCnJ9kw1qzGgrw2n2+Aw2Cn3bcJMu5FTRDAwobE7eBoJmyMCGCY6SyqlZ+qK4XgXvXH0PysNeQuMBG9FhPEoG3W6vT4dJMurbzGknLz87JTKxelthvEZxmKXEKJoXVq6IZhx0/JbOLWf3HV2V7q72dzcpVBqMg6UxuR53OjTn7UJH0Gtj26ttE/x9e6CIVrU919YJF4qbtSXqmwUzF7DfXtc3TFEk7sFPAQFFs62cleb8Z1jv5IcnpL6fmCU1hGtSCP6hAHxQ29dgdk+b/AgC+xjYsLH2iO0p1z6pmjWO3Hea5HQB7SAsX7UBy7/vEih6hjD4GG1ebgg2raERO+rSaAB9Fs2PD1g0jLs+3zm2xec5mJVU759+UX+APHpTv6mN1QR2hc7qfezvKxrfOyoazy22hVL1yUtiGyk8dP1TrvOUrs/drubVmuJJ2HAwoqwfHfcO4mjADg+jeXLUj4bdYxjOR8c0gQMUj9eWp4vHH/B3eEA86O0VbAYAlUJw4TZQX4Rp19nVtbs3ET2mArQ3BDoEGjHWZ9EgPjyIjkeDYTTqz4cDRgdHR31qE3t0hq83LbNJSeEfyffCp+WoX1f5ET4lm8O3SaRlz419Ed/FP7k429GcZ8+ePSOt1k9y5TsaztkzGRcZCGNNBzvX6GcbP6J66TzlBr3Iasnjpde9tSy+U0CqqtST5cJ6aJ82tQm5Eh6Wl6wmA8J4koAC24pHAx27Nm7d+2AjF8F4Y1Uyqzu50EPBcRYOCBZg3B7kzRrO7UoQgiiQQUO5kcNJqiV5L+SKUF22JtyqG25UdOsTtcpsdhk0fAIyONNu/rB1i8qB/YqTDVpNz3hSylWuBKgy3gnv0Er7bcztdkCcCJquNdcOxbjV2itI6neFdfbu8cqlknQURVfCatDU3dzuwobgpBypvLZt+ivxZgmCZPS9G/GUybOR9sRGP0P7cnZ0RPEJdA4xzmO2B0iu+0/TanbTJi+XUmo3CPLSSSTONpFjuUuTOdXAiPTyWoBcKJoveUxTT3N85Ucql4JjBjw11IAmE6oN6aHMiBPpZWkq1fRotYTSjW4yPjQTx9PLEKjGES1pkG+XVFuty9e/IJd3D6YfnXf1N50UmC+SN/AF4CERhOZofgJTI91BTH66RReSnEKeynWFBg1GL2WRMusJLAa5ElZRLl//UkWrhr65dERmlAuNgx2L1j8sMnE8MEBh3uacWa/dbXd98k1jTL5tniq1yaiNoj6W1QprXzqWQ+dt/3i7SeS/Tdm/Tdm/Tdm/Tdm/Tdn/pim7L3EMfDSdPKVcYCFk6+xbX72/DcoCPwzGfhLtCvjrMFhKbXDL7S0GtEuV3t/jzx8KUFiBX4fBDVUcvaStxxnX+Jn5/skjfv95qXAvyP5uwwPQy5JNYL3mO7ZBEAau5uAsuL++D8sSCiG5hZeOcYSOunZwp4uEXQh3Aovd3Dy6t94PubicBWEw9/9JIZMMjyi6wl4NXTmMbsDoOrD4222QUrEobHspcCTx7/9W1CUU +sidebar_class_name: "put api-method" +info_path: docs/api/tagoio-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Configure external service providers for your profile. This allows you to set up integrations with third-party services for SMS and Email messaging. + +**Available service providers:** + +| Service Type | Provider | Description | +|--------------|----------|-------------| +| `sms` | Twilio | Send SMS messages via Twilio | +| `sms` | SNS | Send SMS messages via Amazon SNS | +| `email` | SendGrid | Send emails via SendGrid API | +| `email` | SES | Send emails via Amazon SES | +| `email` | SMTP | Send emails via custom SMTP server | + +**Important notes:** +- Credentials are securely stored using [TagoIO Secrets](/docs/tagoio/getting-started/secrets). You must create the appropriate secrets before configuring a service provider. +- Each service type can only have one active provider configuration at a time +- Use the test endpoint to verify your configuration before using it in production + +**Required secrets by provider:** +- **Twilio SMS**: Create two Text secrets containing your Twilio SID and Auth Token +- **SNS SMS**: Create an AWS SQS Secret with your AWS credentials (region, access key, secret key) +- **SendGrid Email**: Create a Text secret containing your SendGrid API Key +- **SES Email**: Create an AWS SQS Secret with your AWS credentials (region, access key, secret key) +- **SMTP Email**: Create an SMTP Secret with your server configuration + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/api/send-data-using-network.api.mdx b/docs/api/send-data-using-network.api.mdx index 78442c5f..2d26f20a 100644 --- a/docs/api/send-data-using-network.api.mdx +++ b/docs/api/send-data-using-network.api.mdx @@ -5,7 +5,7 @@ description: "Send data to TagoIO using the Network instead." sidebar_label: "Send Data using Network" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: docs/api/tagoio-api custom_edit_url: null diff --git a/docs/api/sidebar/api-sidebar.ts b/docs/api/sidebar/api-sidebar.ts index fd3894f0..f2cc2199 100644 --- a/docs/api/sidebar/api-sidebar.ts +++ b/docs/api/sidebar/api-sidebar.ts @@ -652,6 +652,18 @@ const sidebar: SidebarsConfig = { label: "List Used Tags", className: "api-method get", }, + { + type: "doc", + id: "api/configure-profile-service", + label: "Configure Service Provider", + className: "api-method put", + }, + { + type: "doc", + id: "api/test-profile-service", + label: "Test Service Provider", + className: "api-method post", + }, ], }, { diff --git a/docs/api/test-profile-service.api.mdx b/docs/api/test-profile-service.api.mdx new file mode 100644 index 00000000..111a00ae --- /dev/null +++ b/docs/api/test-profile-service.api.mdx @@ -0,0 +1,81 @@ +--- +id: test-profile-service +title: "Test Service Provider" +description: "Test a configured service provider by sending a test message. This helps verify that your service provider configuration is working correctly before using it in production." +sidebar_label: "Test Service Provider" +hide_title: true +hide_table_of_contents: true +api: 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 +sidebar_class_name: "post api-method" +info_path: docs/api/tagoio-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Test a configured service provider by sending a test message. This helps verify that your service provider configuration is working correctly before using it in production. + +**Supported service types:** +- `sms` - Sends a test SMS message to the specified phone number +- `email` - Sends a test email to the specified email address + +**Important notes:** +- A service provider must be configured before testing +- Test messages will consume your provider's quota/credits +- For SMS, ensure the recipient number is in E.164 format (e.g., +15551234567) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/specs/tagoio-api.yaml b/specs/tagoio-api.yaml index 91fd0a68..0cd99752 100644 --- a/specs/tagoio-api.yaml +++ b/specs/tagoio-api.yaml @@ -9103,6 +9103,334 @@ paths: type: string example: 678abc123def456789012345 description: The ID of the backup to delete + /profile/{id}/service: + put: + tags: + - Profile + summary: Configure Service Provider + description: | + Configure external service providers for your profile. This allows you to set up integrations with third-party services for SMS and Email messaging. + + **Available service providers:** + + | Service Type | Provider | Description | + |--------------|----------|-------------| + | `sms` | Twilio | Send SMS messages via Twilio | + | `sms` | SNS | Send SMS messages via Amazon SNS | + | `email` | SendGrid | Send emails via SendGrid API | + | `email` | SES | Send emails via Amazon SES | + | `email` | SMTP | Send emails via custom SMTP server | + + **Important notes:** + - Credentials are securely stored using [TagoIO Secrets](/docs/tagoio/getting-started/secrets). You must create the appropriate secrets before configuring a service provider. + - Each service type can only have one active provider configuration at a time + - Use the test endpoint to verify your configuration before using it in production + + **Required secrets by provider:** + - **Twilio SMS**: Create two Text secrets containing your Twilio SID and Auth Token + - **SNS SMS**: Create an AWS SQS Secret with your AWS credentials (region, access key, secret key) + - **SendGrid Email**: Create a Text secret containing your SendGrid API Key + - **SES Email**: Create an AWS SQS Secret with your AWS credentials (region, access key, secret key) + - **SMTP Email**: Create an SMTP Secret with your server configuration + operationId: configureProfileService + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + email: + type: object + description: Email service configuration + properties: + provider: + type: string + enum: [sendgrid, ses, smtp] + description: The email provider to use + example: smtp + from: + type: string + description: Sender email address + example: noreply@example.com + secrets: + type: object + description: Secret IDs for provider credentials + properties: + data: + type: string + description: Secret ID containing SMTP configuration (required for SMTP provider) or AWS SQS Secret (required for SES provider) + example: 68c9977a28079e0010aaf399 + api_key: + type: string + description: Secret ID containing SendGrid API Key (required for SendGrid provider) + example: 68c9977a28079e0010aaf399 + sms: + type: object + description: SMS service configuration + properties: + provider: + type: string + enum: [twilio, sns] + description: The SMS provider to use + example: twilio + from: + type: string + description: Sender phone number in E.164 format (required for Twilio, optional for SNS) + example: '+15551234567' + secrets: + type: object + description: Secret IDs for provider credentials + properties: + twilio_sid: + type: string + description: Secret ID containing Twilio Account SID (required for Twilio provider) + example: 674f1740f9ccd2000aaa4551 + twilio_token: + type: string + description: Secret ID containing Twilio Auth Token (required for Twilio provider) + example: 674f1736f9ccd2000aaa4550 + data: + type: string + description: Secret ID containing AWS SQS Secret (required for SNS provider) + example: 68c9977a28079e0010aaf399 + examples: + Configure SMS and Email: + value: + email: + provider: smtp + from: noreply@example.com + secrets: + data: 68c9977a28079e0010aaf399 + sms: + provider: twilio + from: '+15551234567' + secrets: + twilio_sid: 674f1740f9ccd2000aaa4551 + twilio_token: 674f1736f9ccd2000aaa4550 + Configure SMS only: + value: + sms: + provider: twilio + from: '+15551234567' + secrets: + twilio_sid: 674f1740f9ccd2000aaa4551 + twilio_token: 674f1736f9ccd2000aaa4550 + Configure Email with SendGrid: + value: + email: + provider: sendgrid + from: noreply@example.com + secrets: + api_key: 68c9977a28079e0010aaf399 + Configure Email with SMTP: + value: + email: + provider: smtp + from: noreply@example.com + secrets: + data: 68c9977a28079e0010aaf399 + Configure Email with SES: + value: + email: + provider: ses + from: noreply@example.com + secrets: + data: 68c9977a28079e0010aaf399 + Configure SMS with SNS: + value: + sms: + provider: sns + secrets: + data: 68c9977a28079e0010aaf399 + responses: + '200': + description: Service provider configured successfully + content: + application/json: + schema: + type: object + properties: + result: + type: string + example: Service provider configured successfully + status: + type: boolean + example: true + '400': + description: Bad request - Invalid configuration + content: + application/json: + schema: + type: object + properties: + status: + type: boolean + example: false + message: + type: string + example: Invalid credentials format for the selected provider + '401': + description: Unauthorized - Invalid or missing token + content: + application/json: + schema: + type: object + properties: + status: + type: boolean + example: false + message: + type: string + example: Unauthorized + '403': + description: Forbidden - Insufficient permissions + content: + application/json: + schema: + type: object + properties: + status: + type: boolean + example: false + message: + type: string + example: You do not have permission to configure services for this profile + parameters: + - name: id + in: path + required: true + schema: + type: string + example: 61fac4d9a5c9f40012a5ff92 + description: The ID of the profile + /profile/{id}/service/test/{service_type}: + post: + tags: + - Profile + summary: Test Service Provider + description: | + Test a configured service provider by sending a test message. This helps verify that your service provider configuration is working correctly before using it in production. + + **Supported service types:** + - `sms` - Sends a test SMS message to the specified phone number + - `email` - Sends a test email to the specified email address + + **Important notes:** + - A service provider must be configured before testing + - Test messages will consume your provider's quota/credits + - For SMS, ensure the recipient number is in E.164 format (e.g., +15551234567) + operationId: testProfileService + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - to + properties: + to: + type: string + description: | + The recipient address for the test message. + - For SMS: Phone number in E.164 format (e.g., +15551234567) + - For Email: Email address (e.g., user@example.com) + example: '+15559876543' + message: + type: string + description: Custom test message content (optional). If not provided, a default test message will be sent. + example: This is a test message from TagoIO + subject: + type: string + description: Email subject line (only for email service type, optional) + example: Test Email from TagoIO + examples: + Test SMS: + value: + to: '+15559876543' + message: This is a test SMS from TagoIO + Test Email: + value: + to: user@example.com + subject: Test Email from TagoIO + message: This is a test email from TagoIO to verify your email service configuration. + responses: + '200': + description: Test message sent successfully + content: + application/json: + schema: + type: object + properties: + result: + type: object + properties: + message: + type: string + example: Test message sent successfully + message_id: + type: string + description: Provider's message ID for tracking (if available) + example: SM1234567890abcdef1234567890abcdef + status: + type: boolean + example: true + '400': + description: Bad request - Invalid recipient or message format + content: + application/json: + schema: + type: object + properties: + status: + type: boolean + example: false + message: + type: string + example: Invalid phone number format. Use E.164 format (e.g., +15551234567) + '404': + description: Service provider not configured + content: + application/json: + schema: + type: object + properties: + status: + type: boolean + example: false + message: + type: string + example: No service provider configured for the specified service type + '500': + description: Provider error - Failed to send test message + content: + application/json: + schema: + type: object + properties: + status: + type: boolean + example: false + message: + type: string + example: 'Failed to send test message: Invalid credentials' + parameters: + - name: id + in: path + required: true + schema: + type: string + example: 61fac4d9a5c9f40012a5ff92 + description: The ID of the profile + - name: service_type + in: path + required: true + schema: + type: string + enum: [sms, email] + example: sms + description: The type of service to test (sms or email) /dictionary: get: tags: