-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
feat(partners)add-enablement-docs #14095
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,215 @@ | ||
Sentry platform--- | ||
title: "Account Provisioning API" | ||
description: "Learn how to automatically provision Sentry organizations for your customers using our provisioning API." | ||
sidebar_order: 1 | ||
--- | ||
|
||
# Account Provisioning API | ||
|
||
The Sentry Provisioning API allows partner platforms to automatically create Sentry organizations for their customers. This enables seamless onboarding of your users to Sentry's error monitoring and performance insights. | ||
|
||
## Overview | ||
|
||
When you call the Sentry provisioning API on behalf of your customer for the first time, the customer receives: | ||
|
||
- **A Sentry Organization** with the same name as their organization on your platform | ||
- **A Default Team** for collaboration within the organization | ||
- **Organization Ownership** assigned to the provided email address | ||
- **Subscription Plan** based on your partnership agreement | ||
- **Pre-configured Projects** (optional) that you specify | ||
- **Integration Token** (optional) for managing the organization programmatically | ||
|
||
## API Endpoint | ||
|
||
``` | ||
POST https://sentry.io/remote/channel-provision/account/ | ||
``` | ||
|
||
## Authentication | ||
|
||
The API requires a custom `X-Request-Signature` header with a SHA256 HMAC signature. The signature is built using your `API_SECRET_KEY` and the request body. | ||
|
||
### Signature Generation | ||
|
||
```python | ||
import hmac | ||
import hashlib | ||
import json | ||
|
||
def generate_signature(data, secret_key): | ||
secret_key_bytes = secret_key.encode("utf-8") | ||
json_data = json.dumps(data) | ||
data_bytes = json_data.encode("utf-8") | ||
signature = hmac.new( | ||
key=secret_key_bytes, | ||
msg=data_bytes, | ||
digestmod=hashlib.sha256 | ||
).hexdigest() | ||
return signature | ||
``` | ||
|
||
## Request Parameters | ||
|
||
| Parameter | Type | Required | Description | | ||
|-----------|------|----------|-------------| | ||
| `channel` | string | Yes | Your partner name (case insensitive) | | ||
| `email` | string | Yes | Customer's email address (becomes org owner) | | ||
| `organizationName` | string | Yes | Customer's organization name (max 50 chars) | | ||
| `organizationID` | string | Yes | Unique ID for customer's organization on your platform | | ||
| `hasAgreedTerms` | boolean | Yes | Customer's agreement to Sentry terms | | ||
| `timestamp` | integer | Yes | Current timestamp for request expiration | | ||
| `url` | string | Yes | Must be `https://sentry.io/remote/channel-provision/account/` | | ||
| `projects` | array | No | List of projects to create | | ||
| `region` | string | No | Data residency (`us` or `de`, default: `us`) | | ||
| `isTest` | boolean | No | Set to `true` for testing (default: `false`) | | ||
|
||
### Project Object Structure | ||
|
||
```json | ||
{ | ||
"name": "project-name", | ||
"platform": "java" | ||
} | ||
``` | ||
|
||
### Supported Platforms | ||
|
||
The `platform` field supports all [Sentry platform identifiers](/platforms/), including: | ||
- `javascript`, `python`, `java`, `csharp`, `php`, `ruby`, `go`, `rust`, `swift`, `kotlin`, `dart`, and more | ||
|
||
## Example Request | ||
|
||
```python | ||
import requests | ||
import json | ||
import time | ||
|
||
URL = "https://sentry.io/remote/channel-provision/account/" | ||
API_SECRET_KEY = "your-partner-specific-secret-key" | ||
|
||
DATA = { | ||
"channel": "Your Platform Name", | ||
"organizationName": "Customer Corp", | ||
"organizationID": "unique-customer-id", | ||
"email": "[email protected]", | ||
"projects": [ | ||
{"name": "web-app", "platform": "javascript"}, | ||
{"name": "api-service", "platform": "python"} | ||
], | ||
"hasAgreedTerms": True, | ||
"timestamp": int(time.time()), | ||
"url": URL, | ||
"isTest": False | ||
} | ||
|
||
# Generate signature | ||
signature = generate_signature(DATA, API_SECRET_KEY) | ||
|
||
# Make request | ||
response = requests.post( | ||
URL, | ||
data=json.dumps(DATA), | ||
headers={"X-Request-Signature": signature} | ||
) | ||
|
||
print(response.json()) | ||
``` | ||
|
||
## Response | ||
|
||
### Success (200) | ||
|
||
```json | ||
{ | ||
"email": "[email protected]", | ||
"organization": { | ||
"id": "123", | ||
"slug": "customer-corp", | ||
"name": "Customer Corp" | ||
}, | ||
"projects": [ | ||
{ | ||
"dsn": "https://[email protected]/123", | ||
"project": { | ||
"id": "456", | ||
"slug": "web-app", | ||
"name": "web-app", | ||
"platform": "javascript" | ||
} | ||
} | ||
], | ||
"integration_api_token": "your-integration-token" | ||
} | ||
``` | ||
|
||
### Error Responses | ||
|
||
- **400 Bad Request**: Invalid parameters (check response body for details) | ||
- **401 Unauthorized**: Invalid signature (check your API_SECRET_KEY) | ||
- **500 Server Error**: Internal server error (check response body for details) | ||
|
||
## Additional Operations | ||
|
||
### Adding Projects | ||
|
||
Call the API again with new projects to add them to an existing organization: | ||
|
||
```python | ||
DATA = { | ||
# ... existing parameters ... | ||
"projects": [ | ||
{"name": "new-service", "platform": "go"} | ||
] | ||
} | ||
``` | ||
|
||
### Adding Managers | ||
|
||
Add additional users as managers to the organization: | ||
|
||
```python | ||
DATA = { | ||
# ... existing parameters ... | ||
"email": "[email protected]" # New manager email | ||
} | ||
``` | ||
|
||
## Customer Experience | ||
|
||
### Welcome Email | ||
|
||
When you provision an organization, the customer receives: | ||
- A welcome email with organization details | ||
- Instructions for managing their Sentry organization | ||
- Information about your partnership integration | ||
- Support contact information | ||
|
||
### Partner-Specific Features | ||
|
||
Based on your partnership agreement, you can enable: | ||
|
||
- **Partner Presence**: Show your platform as an organization member | ||
- **Persistent Plan**: Allow customers to upgrade plans independently | ||
- **Quota Visibility**: Control visibility of usage quotas | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Billing is always the biggest question, I think high level at this point we can add we have the option for them to sponsor their customers. |
||
|
||
## Integration Token | ||
|
||
The response includes an `integration_api_token` that allows you to: | ||
- Create and manage projects | ||
- Manage organization members | ||
- Access Sentry APIs on behalf of the customer | ||
|
||
Token permissions are defined in your partnership agreement. | ||
|
||
## Best Practices | ||
smeubank marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
1. **Store organization mappings**: Keep track of the relationship between your customer IDs and Sentry organization IDs | ||
2. **Handle errors gracefully**: Implement proper error handling for failed provisioning | ||
3. **Use test mode**: Set `isTest: true` during development and testing | ||
4. **Respect rate limits**: Implement appropriate delays between requests | ||
5. **Secure your secret key**: Store your API_SECRET_KEY securely and never expose it in client-side code | ||
|
||
## Support | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I wonder if we should take a more marketing approach here. Like get people excited to reach out or just leave it as a reference. |
||
|
||
For questions about the provisioning API or partnership integration, contact: | ||
**Email:** [email protected] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
--- | ||
title: "Partnership Platform" | ||
description: "Learn how to integrate Sentry into your platform and provide error monitoring and performance insights to your customers." | ||
sidebar_order: 35 | ||
--- | ||
|
||
# Partnership Platform | ||
|
||
Sentry offers powerful partnership capabilities that allow you to integrate error monitoring and performance insights directly into your platform. Whether you're a developer platform, hosting provider, or SaaS application, you can leverage Sentry's monitoring capabilities to enhance your customer experience. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we add some who are doing this already? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. specific partner examples? That get's into a topic of we just have to check with legal which logos we are allowed to mention in such a doc we could address a lot of content topics, and merge, then figure that out later, for a smaller addition to the doc then |
||
|
||
## What's Available | ||
|
||
Sentry provides two main integration paths for partners: | ||
|
||
### 1. [Account Provisioning API](/product/partnership-platform/account-provisioning-api/) | ||
|
||
Automatically create Sentry organizations for your customers with our provisioning API. This allows you to: | ||
|
||
- **Seamlessly onboard customers** to Sentry monitoring | ||
- **Create pre-configured organizations** with projects and teams | ||
- **Manage customer access** through integration tokens | ||
- **Support multiple regions** (US and EU data residency) | ||
|
||
### 2. [OAuth Integration](/product/partnership-platform/oauth-integration/) | ||
|
||
Enable existing Sentry customers to connect their accounts to your platform through OAuth: | ||
|
||
- **Account linking** between your platform and Sentry organizations | ||
- **Permission-based access** with configurable scopes | ||
- **User-controlled permissions** with easy revocation | ||
- **Seamless authentication flow** for your users | ||
|
||
## Benefits for Your Platform | ||
|
||
Integrating with Sentry's partnership platform provides several advantages: | ||
|
||
- **Enhanced developer experience** with built-in error monitoring | ||
- **Reduced support burden** by helping customers debug issues faster | ||
- **Competitive differentiation** with enterprise-grade monitoring | ||
smeubank marked this conversation as resolved.
Show resolved
Hide resolved
|
||
- **Revenue opportunities** through monitoring capabilities | ||
- **Improved customer retention** with better application reliability | ||
|
||
## Getting Started | ||
|
||
If you're interested in integrating Sentry into your platform, our partnership team can help you get started. We'll work with you to: | ||
|
||
- Determine the best integration approach for your use case | ||
- Set up the necessary API credentials and configurations | ||
- Provide technical guidance and implementation support | ||
- Establish the partnership agreement and terms | ||
|
||
## Contact Us | ||
|
||
Ready to explore partnership opportunities with Sentry? Reach out to our partnership platform team: | ||
|
||
**Email:** [email protected] | ||
smeubank marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Our team will guide you through the integration process and help you leverage Sentry's monitoring capabilities to enhance your platform. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The customer would need all but integration token is basically only useful for the partner.