davila7--claude-code-templates
3.3 KiB
3.3 KiB
Protocols.io Authentication
Overview
The protocols.io API supports two types of access tokens for authentication, enabling access to both public and private content.
Access Token Types
1. CLIENT_ACCESS_TOKEN
- Purpose: Enables access to public content and the private content of the client user
- Use case: When accessing your own protocols and public protocols
- Scope: Limited to the token owner's private content plus all public content
2. OAUTH_ACCESS_TOKEN
- Purpose: Grants access to specific users' private content plus all public content
- Use case: When building applications that need to access other users' content with their permission
- Scope: Full access to authorized user's private content plus all public content
Authentication Header
All API requests must include an Authorization header:
Authorization: Bearer [ACCESS_TOKEN]
OAuth Flow
Step 1: Generate Authorization Link
Direct users to the authorization URL to grant access:
GET https://protocols.io/api/v3/oauth/authorize
Parameters:
client_id(required): Your application's client IDredirect_uri(required): URL to redirect users after authorizationresponse_type(required): Set to "code"state(optional but recommended): Random string to prevent CSRF attacks
Example:
https://protocols.io/api/v3/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code&state=RANDOM_STRING
Step 2: Exchange Authorization Code for Token
After user authorization, protocols.io redirects to your redirect_uri with an authorization code. Exchange this code for an access token:
POST https://protocols.io/api/v3/oauth/token
Parameters:
grant_type: Set to "authorization_code"code: The authorization code receivedclient_id: Your application's client IDclient_secret: Your application's client secretredirect_uri: Must match the redirect_uri used in Step 1
Response includes:
access_token: The OAuth access token to use for API requeststoken_type: "Bearer"expires_in: Token lifetime in seconds (typically 1 year)refresh_token: Token for refreshing the access token
Step 3: Refresh Access Token
Before the access token expires (typically 1 year), use the refresh token to obtain a new access token:
POST https://protocols.io/api/v3/oauth/token
Parameters:
grant_type: Set to "refresh_token"refresh_token: The refresh token received in Step 2client_id: Your application's client IDclient_secret: Your application's client secret
Rate Limits
Be aware of rate limiting when making API requests:
- Standard endpoints: 100 requests per minute per user
- PDF endpoint (
/view/[protocol-uri].pdf):- Signed-in users: 5 requests per minute
- Unsigned users: 3 requests per minute
Best Practices
- Store tokens securely: Never expose access tokens in client-side code or version control
- Handle token expiration: Implement automatic token refresh before expiration
- Respect rate limits: Implement exponential backoff for rate limit errors
- Use state parameter: Always include a state parameter in OAuth flow for security
- Validate redirect_uri: Ensure redirect URIs match exactly between authorization and token requests