{"errors":[{"code":"AUTH_EXPIRED_KEY","status":401,"message":"The API key has expired.","hint":"Use the key that replaced it. The rotation grace period for this key has ended.","retryable":false,"causes":["The key was rotated and its grace period ended"],"fix":"Use the current key from the dashboard (API keys) and remove the old one from your configuration.","related":["AUTH_INVALID_KEY"],"docs":"https://developer.pyas.io/errors/AUTH_EXPIRED_KEY"},{"code":"AUTH_EXPIRED_SESSION","status":401,"message":"The session has expired.","hint":"Sign in again.","retryable":false,"causes":["Inactivity for longer than the session lifetime"],"fix":"Sign in again.","related":["AUTH_INVALID_SESSION"],"docs":"https://developer.pyas.io/errors/AUTH_EXPIRED_SESSION"},{"code":"AUTH_INSUFFICIENT_SCOPE","status":403,"message":"The API key or session does not have permission to make this request.","hint":"Use an API key or session that has the permission this endpoint requires.","retryable":false,"causes":["A restricted key used on an endpoint outside its scope","A team role without this permission"],"fix":"Create a key with the required scope, or ask an organization owner to grant you the permission.","related":["AUTH_INVALID_KEY"],"docs":"https://developer.pyas.io/errors/AUTH_INSUFFICIENT_SCOPE"},{"code":"AUTH_INVALID_CONNECT_SESSION","status":401,"message":"The connect session is missing, invalid, expired or already used.","hint":"Create a new connect session on your server and try again.","retryable":false,"causes":["The session is older than 10 minutes","The session was already used to connect an account","The token was copied incorrectly"],"fix":"Create a new connect session (`POST /v2/connect/sessions`) for each connection, and use it within 10 minutes.","related":["AUTH_ORIGIN_NOT_ALLOWED"],"docs":"https://developer.pyas.io/errors/AUTH_INVALID_CONNECT_SESSION"},{"code":"AUTH_INVALID_KEY","status":401,"message":"The API key is missing, unknown or revoked.","hint":"Send a valid key in the `x-api-key` header. You can manage your keys in the Pyas dashboard.","retryable":false,"causes":["A missing `x-api-key` header","A typo in the key","The key was revoked or deleted"],"fix":"Copy the key again from the dashboard (API keys) and send it as `x-api-key: <key>`, not as a bearer token.","related":["AUTH_EXPIRED_KEY","AUTH_SANDBOX_MISMATCH"],"docs":"https://developer.pyas.io/errors/AUTH_INVALID_KEY"},{"code":"AUTH_INVALID_SESSION","status":401,"message":"The session is missing, invalid or revoked.","hint":"Sign in again.","retryable":false,"causes":["The user signed out in another tab","The session was revoked","The browser blocks cookies"],"fix":"Sign in again. If this keeps happening, allow cookies for the dashboard.","related":["AUTH_EXPIRED_SESSION"],"docs":"https://developer.pyas.io/errors/AUTH_INVALID_SESSION"},{"code":"AUTH_KEY_IN_BROWSER","status":403,"message":"A live API key was sent from a web page. Live keys only work from a server.","hint":"Move this request to your server and keep the key in a server secret. Rotate the key, since anyone who opened the page could read it.","retryable":false,"causes":["The key is in front-end code, so every visitor to the page can read it","An AI app builder put the API call in the browser instead of a server function"],"fix":"Make the request from your server (an API route, or a serverless or edge function) with the key kept as a secret, then rotate the key in the dashboard. Code in the browser never needs a key: to connect accounts, your server creates a connect session and the page uses its token.","related":["AUTH_INVALID_KEY","AUTH_INVALID_CONNECT_SESSION"],"docs":"https://developer.pyas.io/errors/AUTH_KEY_IN_BROWSER"},{"code":"AUTH_ORIGIN_NOT_ALLOWED","status":403,"message":"The request's origin is not in the app's allowed origins.","hint":"Add the site's origin to the app's allowed origins in the dashboard.","retryable":false,"causes":["A new domain or port that has not been added to the app yet","A scheme or subdomain mismatch (`http` and `https`, or `www` and no `www`, are different origins)"],"fix":"Add the exact origin, including scheme, host and port, to the app's allowed origins.","related":["AUTH_INVALID_CONNECT_SESSION"],"docs":"https://developer.pyas.io/errors/AUTH_ORIGIN_NOT_ALLOWED"},{"code":"AUTH_SANDBOX_MISMATCH","status":403,"message":"A test key was used with live data, or a live key was used with sandbox data.","hint":"Use a test key for sandbox requests and a live key for real connections.","retryable":false,"causes":["API keys swapped between environments","A request that only works with real accounts was sent with a test key: an account import, or connecting without PyasConnect (`GET /v2/connect/oauth`)"],"fix":"Check which key your environment loads. Test keys start with `pyas_sk_test_`. Live keys start with `pyas_sk_` and do not include `test_`. To test connecting accounts in the sandbox, use PyasConnect with a connect session created with your test key.","related":["AUTH_INVALID_KEY"],"docs":"https://developer.pyas.io/errors/AUTH_SANDBOX_MISMATCH"},{"code":"BILLING_CONNECTION_LIMIT","status":402,"message":"The plan's connected account limit has been reached.","hint":"Upgrade the plan or delete unused connected accounts.","retryable":false,"causes":["More connected accounts than the plan includes"],"fix":"Upgrade the plan in the dashboard (Billing), or delete connected accounts you no longer need.","related":["BILLING_FEATURE_UNAVAILABLE"],"docs":"https://developer.pyas.io/errors/BILLING_CONNECTION_LIMIT"},{"code":"BILLING_FEATURE_UNAVAILABLE","status":403,"message":"This feature is not included in the current plan.","hint":"Upgrade the plan to use this feature.","retryable":false,"causes":["A feature that requires a higher plan"],"fix":"Upgrade the plan in the dashboard (Billing).","related":["BILLING_CONNECTION_LIMIT"],"docs":"https://developer.pyas.io/errors/BILLING_FEATURE_UNAVAILABLE"},{"code":"BILLING_OVERDUE","status":402,"message":"The account has an overdue payment.","hint":"Update the payment method in the dashboard.","retryable":false,"causes":["A failed card payment"],"fix":"Update the payment method in the dashboard (Billing). Service resumes once the payment succeeds.","related":["BILLING_FEATURE_UNAVAILABLE"],"docs":"https://developer.pyas.io/errors/BILLING_OVERDUE"},{"code":"BILLING_SUBSCRIPTION_REQUIRED","status":402,"message":"The organization has no active subscription.","hint":"Choose a plan in the dashboard (Billing).","retryable":false,"causes":["No plan has been chosen","The subscription was canceled or has ended"],"fix":"Choose or renew a plan in the dashboard (Billing).","related":["BILLING_OVERDUE"],"docs":"https://developer.pyas.io/errors/BILLING_SUBSCRIPTION_REQUIRED"},{"code":"CONNECTION_CONSENT_FAILED","status":422,"message":"The provider did not complete the connection.","hint":"Ask the user to connect again.","retryable":false,"causes":["The user canceled or declined consent","The authorization code expired or was already used","The provider returned no refresh token or no email address for the account"],"fix":"Start a new connect session. If it keeps failing for one user, check that their administrator allows the app.","related":["CONNECTION_PROVIDER_NOT_CONFIGURED"],"docs":"https://developer.pyas.io/errors/CONNECTION_CONSENT_FAILED"},{"code":"CONNECTION_NOT_FOUND","status":404,"message":"No connected account was found for this request.","hint":"The user may not have connected this provider yet. Start a connection with PyasConnect.","retryable":false,"causes":["The `accountId` is wrong or belongs to another app","The user never connected this provider","The connected account was deleted"],"fix":"List the app's connected accounts with `GET /v2/accounts` to find the correct `accountId`, or connect the account with PyasConnect.","related":["CONNECTION_REVOKED"],"docs":"https://developer.pyas.io/errors/CONNECTION_NOT_FOUND"},{"code":"CONNECTION_PROVIDER_NOT_CONFIGURED","status":422,"message":"The app is not configured to connect accounts from this provider.","hint":"Complete the provider's OAuth settings for the app in the dashboard.","retryable":false,"causes":["The app uses Native Auth for this provider, and its client ID, client secret or callback URL is missing","The app uses Pyas Auth for Google and asked for a feature (`manageCalendars`, `sharing`, `meetingSettings` or `rooms`) whose permissions Google has not approved for Pyas's Google app yet"],"fix":"Enter the client ID, client secret and redirect URI for Native Auth, or switch the app back to Pyas Auth. For a Google feature Pyas Auth cannot ask for yet, set up Native Auth for Google or leave the feature out.","related":["CONNECTION_CONSENT_FAILED"],"docs":"https://developer.pyas.io/errors/CONNECTION_PROVIDER_NOT_CONFIGURED"},{"code":"CONNECTION_REVOKED","status":422,"message":"The user revoked access, or the provider no longer accepts the stored credentials.","hint":"Ask the user to reconnect.","retryable":false,"causes":["The user removed the app from their Google or Microsoft account","An administrator revoked access","The user changed their password and the provider invalidated the tokens"],"fix":"Have the user reconnect through PyasConnect. Listen for the `connection.broken` webhook to detect this early.","related":["CONNECTION_SCOPE_INSUFFICIENT","CONNECTION_TOKEN_EXPIRED"],"docs":"https://developer.pyas.io/errors/CONNECTION_REVOKED"},{"code":"CONNECTION_SCOPE_INSUFFICIENT","status":422,"message":"The connected account did not grant a permission that this operation requires.","hint":"Ask the user to reconnect and approve all requested permissions.","retryable":false,"causes":["The user unchecked a permission on the consent screen","The operation requires a scope that was added after the user connected"],"fix":"Have the user reconnect through PyasConnect and accept every permission.","related":["CONNECTION_REVOKED"],"docs":"https://developer.pyas.io/errors/CONNECTION_SCOPE_INSUFFICIENT"},{"code":"CONNECTION_TOKEN_EXPIRED","status":422,"message":"The provider's access token expired and could not be refreshed.","hint":"Retry the request shortly. If it keeps failing, ask the user to reconnect their account.","retryable":true,"causes":["A temporary provider outage during refresh","The refresh token was invalidated"],"fix":"Retry with backoff. If the error persists, have the user reconnect through PyasConnect.","related":["CONNECTION_REVOKED","PROVIDER_UNAVAILABLE"],"docs":"https://developer.pyas.io/errors/CONNECTION_TOKEN_EXPIRED"},{"code":"CONNECT_CANCELLED","status":0,"message":"The user closed the widget before connecting.","hint":"No action is needed. The user can start again at any time.","retryable":true,"causes":["The user closed the dialog, pressed Escape or chose Cancel"],"fix":"No action is needed. If your page should react, listen for the `cancel` event.","related":["CONNECT_TIMEOUT"],"docs":"https://developer.pyas.io/errors/CONNECT_CANCELLED"},{"code":"CONNECT_CONSENT_DENIED","status":0,"message":"The user did not grant access at the provider.","hint":"Let the user try again, and explain why your app needs access to their calendar.","retryable":true,"causes":["The user chose Cancel or Deny on the consent screen","An administrator blocks the app for the user's organization"],"fix":"Explain how your app uses the calendar next to the connect button, then let the user try again.","related":["CONNECTION_CONSENT_FAILED"],"docs":"https://developer.pyas.io/errors/CONNECT_CONSENT_DENIED"},{"code":"CONNECT_INVALID_CONFIG","status":0,"message":"The connect widget is not configured correctly.","hint":"Pass the widget a session token from your server, or a function that fetches one.","retryable":false,"causes":["No session token, and no 1.x client ID and token name","A provider in `providers` that the widget does not support","Redirect mode used with 1.x keys"],"fix":"Create a connect session on your server (`POST /v2/connect/sessions`) and pass its token to the widget.","related":["AUTH_INVALID_CONNECT_SESSION"],"docs":"https://developer.pyas.io/errors/CONNECT_INVALID_CONFIG"},{"code":"CONNECT_NETWORK_ERROR","status":0,"message":"The browser could not connect to the Pyas API.","hint":"Let the user try again once they are back online.","retryable":true,"causes":["The user is offline or has an unstable connection","A Content Security Policy that does not allow the Pyas API in `connect-src`","An incorrect `api-url`"],"fix":"Check that the page allows `https://api.pyas.io` in `connect-src` and that `api-url` is correct. Otherwise, let the user try again.","related":["CONNECT_TIMEOUT"],"docs":"https://developer.pyas.io/errors/CONNECT_NETWORK_ERROR"},{"code":"CONNECT_POPUP_BLOCKED","status":0,"message":"The browser blocked the sign-in window.","hint":"Open the widget directly from a click handler, or use redirect mode.","retryable":true,"causes":["`open()` or the connect button was called after an `await`, outside the click handler","A strict pop-up blocker or an in-app browser"],"fix":"Call `open()` directly from the click handler. Where pop-ups don't work, such as in in-app browsers, set `mode=\"redirect\"` and use a session that has a `returnUrl`.","related":["CONNECT_TIMEOUT"],"docs":"https://developer.pyas.io/errors/CONNECT_POPUP_BLOCKED"},{"code":"CONNECT_PROVIDER_ERROR","status":0,"message":"The calendar provider could not finish the sign-in.","hint":"Let the user try again, or choose another provider.","retryable":true,"causes":["The provider responded with an error other than a refusal","The provider is experiencing issues"],"fix":"Let the user try again. If it keeps happening with one provider, check the provider's status page and your provider settings in the dashboard.","related":["CONNECT_CONSENT_DENIED","CONNECTION_CONSENT_FAILED"],"docs":"https://developer.pyas.io/errors/CONNECT_PROVIDER_ERROR"},{"code":"CONNECT_SESSION_FAILED","status":0,"message":"Your server could not create a connect session.","hint":"Check your session endpoint: the error event's message includes what it returned.","retryable":true,"causes":["The endpoint behind `getSessionToken` failed or could not be reached","It responded without a `token` (it should return `{ \"token\": \"pcs_...\" }`, as the SDK's `sessionHandler` does)","Your server has no live API key set"],"fix":"Open your session endpoint's logs, set its live API key, and make it return `{ token }`. The person can try again from the dialog.","related":["CONNECT_NETWORK_ERROR","AUTH_INVALID_CONNECT_SESSION"],"docs":"https://developer.pyas.io/errors/CONNECT_SESSION_FAILED"},{"code":"CONNECT_TIMEOUT","status":0,"message":"The sign-in timed out.","hint":"Let the user try again. If your users often need more time, increase `consentTimeoutMs`.","retryable":true,"causes":["The user left the sign-in window open without finishing","A slow two-step verification at the provider"],"fix":"Let the user try again. The widget shows a retry option on its own screen. To log the error, listen for the `error` event.","related":["CONNECT_CANCELLED","CONNECT_POPUP_BLOCKED"],"docs":"https://developer.pyas.io/errors/CONNECT_TIMEOUT"},{"code":"INTERNAL_ERROR","status":500,"message":"Something went wrong on our end.","hint":"Retry the request. If the error persists, contact support and include the trace ID.","retryable":true,"causes":["A bug or an outage in Pyas"],"fix":"Retry with backoff. Every occurrence is reported to Pyas. If the error persists, contact support and include the trace ID.","related":["PROVIDER_UNKNOWN_ERROR"],"docs":"https://developer.pyas.io/errors/INTERNAL_ERROR"},{"code":"PROVIDER_PARTIAL_SUCCESS","status":207,"message":"Some operations succeeded and some failed.","hint":"Check the result of each operation. Only the failed operations need attention.","retryable":false,"causes":["One item in a batch was rejected while the others succeeded"],"fix":"Read the result of each operation, fix the failed operations, and resend only those.","related":["VALIDATION_REJECTED_BY_PROVIDER"],"docs":"https://developer.pyas.io/errors/PROVIDER_PARTIAL_SUCCESS"},{"code":"PROVIDER_RATE_LIMITED","status":429,"message":"The calendar provider is rate limiting requests for this account.","hint":"Wait for the interval in the `Retry-After` header, then retry the request.","retryable":true,"causes":["Many requests for one account in a short time","Provider-wide throttling"],"fix":"Retry after the `Retry-After` interval, and spread bulk work over time. Use webhooks instead of polling.","related":["RATE_LIMIT_EXCEEDED"],"docs":"https://developer.pyas.io/errors/PROVIDER_RATE_LIMITED"},{"code":"PROVIDER_TIMEOUT","status":504,"message":"The calendar provider did not respond in time.","hint":"Retry the request. For large ranges, request a smaller time window.","retryable":true,"causes":["A slow provider response","A very large time window or calendar"],"fix":"Retry with backoff, and narrow the `from` and `to` window for large reads.","related":["PROVIDER_UNAVAILABLE"],"docs":"https://developer.pyas.io/errors/PROVIDER_TIMEOUT"},{"code":"PROVIDER_UNAVAILABLE","status":503,"message":"The calendar provider is not responding normally.","hint":"Retry the request with exponential backoff.","retryable":true,"causes":["A Google or Microsoft outage","Provider maintenance"],"fix":"Retry with exponential backoff. Check the provider's status page for ongoing incidents.","related":["PROVIDER_TIMEOUT"],"docs":"https://developer.pyas.io/errors/PROVIDER_UNAVAILABLE"},{"code":"PROVIDER_UNKNOWN_ERROR","status":502,"message":"The calendar provider returned an error that Pyas could not classify.","hint":"Retry the request once. If the error repeats, contact support and include the trace ID.","retryable":false,"causes":["A provider error that Pyas has not seen before"],"fix":"Contact support and include the trace ID. Pyas is notified of every occurrence, and classifies or fixes each one.","related":["PROVIDER_UNAVAILABLE"],"docs":"https://developer.pyas.io/errors/PROVIDER_UNKNOWN_ERROR"},{"code":"RATE_LIMIT_BURST","status":429,"message":"Too many requests were sent in a short period.","hint":"Wait a moment, then spread your requests out over time.","retryable":true,"causes":["Many requests in the same second"],"fix":"Add a short delay between requests, or queue them.","related":["RATE_LIMIT_EXCEEDED"],"docs":"https://developer.pyas.io/errors/RATE_LIMIT_BURST"},{"code":"RATE_LIMIT_EXCEEDED","status":429,"message":"The request rate exceeds this plan's rate limit.","hint":"Wait for the interval in the `Retry-After` header, then retry the request.","retryable":true,"causes":["Sustained traffic above the plan's rate limit"],"fix":"Wait for the `Retry-After` interval, cache reads, and use webhooks instead of polling. Higher plans have higher limits.","related":["RATE_LIMIT_BURST","PROVIDER_RATE_LIMITED"],"docs":"https://developer.pyas.io/errors/RATE_LIMIT_EXCEEDED"},{"code":"RATE_MONTHLY_QUOTA_EXCEEDED","status":429,"message":"This plan's monthly API request limit has been reached.","hint":"Upgrade the plan, or wait for the limit to reset at the start of next month.","retryable":false,"causes":["More API requests this month than the plan includes"],"fix":"Upgrade the plan in the dashboard (Billing). To make fewer requests, cache reads and use webhooks instead of polling.","related":["RATE_LIMIT_EXCEEDED","BILLING_SUBSCRIPTION_REQUIRED"],"docs":"https://developer.pyas.io/errors/RATE_MONTHLY_QUOTA_EXCEEDED"},{"code":"RESOURCE_CONFLICT","status":409,"message":"The resource was modified or already exists.","hint":"Fetch the resource again and retry with its current version.","retryable":false,"causes":["Someone else updated the event after you read it (`If-Match` did not match)","An attempt to create a resource that already exists"],"fix":"Fetch the latest version, reapply your change, and send it with the new `version` in the `If-Match` header.","related":["VALIDATION_IDEMPOTENCY_CONFLICT"],"docs":"https://developer.pyas.io/errors/RESOURCE_CONFLICT"},{"code":"RESOURCE_LIMIT_REACHED","status":409,"message":"The limit for this resource has been reached.","hint":"Delete existing items first. The error message includes the limit.","retryable":false,"causes":["The sandbox's limits on virtual accounts, calendars or events (test keys)"],"fix":"Delete items you no longer need, or reset the sandbox with `POST /v2/sandbox/reset`.","related":["RATE_MONTHLY_QUOTA_EXCEEDED"],"docs":"https://developer.pyas.io/errors/RESOURCE_LIMIT_REACHED"},{"code":"RESOURCE_NOT_FOUND","status":404,"message":"The calendar or event was not found.","hint":"Check the ID. The item may have been deleted, or it may not be visible to this account.","retryable":false,"causes":["A wrong or outdated ID","The item was deleted","The account does not have access to this calendar"],"fix":"List the calendars or events again to get their current IDs.","related":["CONNECTION_NOT_FOUND"],"docs":"https://developer.pyas.io/errors/RESOURCE_NOT_FOUND"},{"code":"RESOURCE_SYNC_TOKEN_EXPIRED","status":410,"message":"The sync token has expired.","hint":"Request the full list again without a `syncToken`, and store the new `syncToken` from the response.","retryable":false,"causes":["The token is older than the provider's change history","The calendar was reset or its sharing settings changed"],"fix":"Discard the stored `syncToken`, list the events again from the beginning, and store the `syncToken` from the last page.","related":["RESOURCE_NOT_FOUND"],"docs":"https://developer.pyas.io/errors/RESOURCE_SYNC_TOKEN_EXPIRED"},{"code":"VALIDATION_ENDPOINT_UNREACHABLE","status":422,"message":"The webhook endpoint did not accept a test delivery.","hint":"Make sure the endpoint responds with a 2xx status to a signed `POST` request, then try again.","retryable":false,"causes":["Reactivating a webhook endpoint that still fails (Pyas sends a test delivery first)","The endpoint is down, responds with a non-2xx status, doesn't respond within 10 seconds, or resolves to a private network"],"fix":"Check the error message and fix the endpoint. Then reactivate it with `PATCH /v2/webhooks/:webhookId` and the body `{ \"status\": \"active\" }`.","related":["VALIDATION_INVALID_BODY"],"docs":"https://developer.pyas.io/errors/VALIDATION_ENDPOINT_UNREACHABLE"},{"code":"VALIDATION_IDEMPOTENCY_CONFLICT","status":422,"message":"This idempotency key was already used with a different request.","hint":"Use a new idempotency key for a new request.","retryable":false,"causes":["The same key reused for different operations"],"fix":"Generate a new idempotency key for each distinct request. Reuse a key only to retry the same request.","related":["VALIDATION_INVALID_BODY"],"docs":"https://developer.pyas.io/errors/VALIDATION_IDEMPOTENCY_CONFLICT"},{"code":"VALIDATION_INVALID_BODY","status":400,"message":"The request body is not valid.","hint":"Check the fields listed in the error message against the API reference.","retryable":false,"causes":["A missing required field","A field of the wrong type","Malformed JSON"],"fix":"Correct the fields listed in the error message and send the request again.","related":["VALIDATION_INVALID_QUERY"],"docs":"https://developer.pyas.io/errors/VALIDATION_INVALID_BODY"},{"code":"VALIDATION_INVALID_QUERY","status":400,"message":"A query parameter is not valid.","hint":"Check the parameters listed in the error message against the API reference.","retryable":false,"causes":["An unknown parameter value","A date that is not in ISO 8601 format","`from` is later than `to`"],"fix":"Correct the parameters listed in the error message.","related":["VALIDATION_INVALID_BODY","VALIDATION_INVALID_TIMEZONE"],"docs":"https://developer.pyas.io/errors/VALIDATION_INVALID_QUERY"},{"code":"VALIDATION_INVALID_TIMEZONE","status":400,"message":"The time zone is not an IANA time zone name.","hint":"Use an IANA time zone name such as `America/New_York`, not an abbreviation or an offset.","retryable":false,"causes":["An abbreviation such as `EST`","A Windows time zone name such as `Eastern Standard Time`","An offset such as `-05:00`"],"fix":"Send an IANA time zone name, for example `America/New_York` or `Europe/London`.","related":["VALIDATION_INVALID_QUERY"],"docs":"https://developer.pyas.io/errors/VALIDATION_INVALID_TIMEZONE"},{"code":"VALIDATION_PAYLOAD_TOO_LARGE","status":413,"message":"The request body exceeds the size limit for this endpoint.","hint":"Send a smaller request body. The error message includes the limit.","retryable":false,"causes":["An attachment larger than the account's limit: 25 MB through Pyas, shown in its status as `capabilities.maxAttachmentBytes`","A file larger than 25 MB sent without a `Content-Length` header"],"fix":"Keep files within the limit in the error message, send a `Content-Length` header with large files, or attach a link to the file instead.","related":["VALIDATION_INVALID_BODY"],"docs":"https://developer.pyas.io/errors/VALIDATION_PAYLOAD_TOO_LARGE"},{"code":"VALIDATION_REJECTED_BY_PROVIDER","status":422,"message":"The calendar provider rejected this input.","hint":"Change the input as described in the error message. Some values are valid in Pyas but not supported by every provider.","retryable":false,"causes":["A recurrence rule the provider cannot represent","An attendee address the provider rejects","A value outside the provider's limits"],"fix":"Change the input as described in the error message. The connected account's capabilities describe what each provider supports.","related":["VALIDATION_UNSUPPORTED_OPERATION"],"docs":"https://developer.pyas.io/errors/VALIDATION_REJECTED_BY_PROVIDER"},{"code":"VALIDATION_UNSUPPORTED_OPERATION","status":422,"message":"This provider does not support this operation.","hint":"Check the connected account's capabilities before making the request.","retryable":false,"causes":["Calendar writes on a provider that does not support them","Incremental sync on a provider that does not support it"],"fix":"Check the connected account's capabilities, and skip or replace the operation for providers that do not support it.","related":["VALIDATION_REJECTED_BY_PROVIDER"],"docs":"https://developer.pyas.io/errors/VALIDATION_UNSUPPORTED_OPERATION"}]}