@marcohefti/request-network-api-contracts 0.6.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -25
- package/docs/OPENAPI-0.31.0-AUDIT.md +91 -0
- package/docs/OVERVIEW.md +8 -11
- package/docs/PUBLISHING.md +7 -8
- package/docs/UPDATE-WORKFLOW.md +13 -16
- package/docs/UPDATES.md +8 -0
- package/fixtures/webhooks/client-id-linked.json +13 -0
- package/fixtures/webhooks/kyt-screening-completed.json +13 -0
- package/fixtures/webhooks/payment-confirmed.json +10 -5
- package/fixtures/webhooks/payment-failed.json +5 -11
- package/fixtures/webhooks/secure-payment-access-rejected.json +8 -0
- package/fixtures/webhooks/secure-payment-user-event.json +20 -0
- package/package.json +4 -1
- package/scripts/sync-openapi.mjs +266 -0
- package/scripts/sync-webhooks.mjs +128 -0
- package/scripts/verify.js +119 -0
- package/specs/README.md +11 -7
- package/specs/openapi/manifest.json +46 -0
- package/specs/openapi/request-network-auth-openapi.json +1 -0
- package/specs/openapi/request-network-auth-openapi.meta.json +13 -0
- package/specs/openapi/request-network-openapi.json +1 -1
- package/specs/openapi/request-network-openapi.meta.json +11 -2
- package/specs/webhooks/manifest.json +48 -0
- package/specs/webhooks/request-network-webhooks.json +486 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"openapi":"3.0.0","paths":{"/v1/health":{"get":{"operationId":"HealthController_check_v1","parameters":[],"responses":{"200":{"description":""}},"tags":["Health"]}},"/v1/auth/register":{"post":{"description":"Register a new user with an email and password\n\nOptional session_token cookie. Works without authentication but may provide additional features when authenticated.","operationId":"AuthController_register_v1","parameters":[{"name":"Cookie","in":"header","description":"Optional session cookie","required":false,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Platform email"},"password":{"type":"string","minLength":8,"maxLength":100,"description":"Platform password"}},"required":["email","password"]}}}},"responses":{"201":{"description":"Successfully registered"},"400":{"description":"Bad request - validation failed or already logged in"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Register a new user (Optional Session)","tags":["Authentication"]}},"/v1/auth/login":{"post":{"description":"Login with email and password\n\nOptional session_token cookie. Works without authentication but may provide additional features when authenticated.","operationId":"AuthController_login_v1","parameters":[{"name":"Cookie","in":"header","description":"Optional session cookie","required":false,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Platform email"},"password":{"type":"string","minLength":8,"maxLength":100,"description":"Platform password"}},"required":["email","password"]}}}},"responses":{"200":{"description":"Successfully logged in"},"400":{"description":"Bad request - validation failed or already logged in"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Login user (Optional Session)","tags":["Authentication"]}},"/v1/auth/wallet/challenge":{"post":{"description":"Creates a one-time auth challenge for wallet signature verification. Accepts both EVM (0x...) and Tron (T...) wallet addresses; the wallet type is auto-detected from the address format.\n\nOptional session_token cookie. Works without authentication but may provide additional features when authenticated.","operationId":"AuthController_walletChallenge_v1","parameters":[{"name":"Cookie","in":"header","description":"Optional session cookie","required":false,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"EVM (0x...) or Tron (T...) wallet address"},"chainId":{"type":"integer","exclusiveMinimum":0,"description":"EIP-155 chain ID the wallet is currently connected to. Wallets reject the signature request when it disagrees with their active chain. Ignored for Tron; defaults to 1 when omitted."}},"required":["address"]}}}},"responses":{"201":{"description":"Challenge created","content":{"application/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","description":"Unique challenge identifier for wallet verification"},"nonce":{"type":"string","description":"Nonce that must be included in the signed challenge"},"message":{"type":"string","description":"Exact message payload that the wallet should sign"},"expiresAt":{"type":"string","description":"ISO timestamp when the challenge expires"}},"required":["challengeId","nonce","message","expiresAt"]},"examples":{"evm":{"summary":"EVM wallet challenge","value":{"challengeId":"01HZYXW8A0BCDEFGH123456789","nonce":"0a1b2c3d4e5f67890abc123def456789","message":"localhost:3000 wants you to sign in with your Ethereum account:\n0x742d35Cc6634C0532925a3b844Bc454e4438f44e\n\nSign in to Request Network.\n\nURI: http://localhost:3000\nVersion: 1\nChain ID: 1\nNonce: 0a1b2c3d4e5f67890abc123def456789\nIssued At: 2026-02-23T12:00:00.000Z\nExpiration Time: 2026-02-23T12:05:00.000Z","expiresAt":"2026-02-23T12:05:00.000Z"}},"tron":{"summary":"Tron wallet challenge","value":{"challengeId":"01HZYXW8A0BCDEFGH123456789","nonce":"0a1b2c3d4e5f67890abc123def456789","message":"localhost:3000 wants you to sign in with your Tron account:\nTJCnKsPa7y5okkXvQAidZBzqx3QyQ6sxMW\n\nSign in to Request Network.\n\nURI: http://localhost:3000\nVersion: 1\nNonce: 0a1b2c3d4e5f67890abc123def456789\nIssued At: 2026-02-23T12:00:00.000Z\nExpiration Time: 2026-02-23T12:05:00.000Z","expiresAt":"2026-02-23T12:05:00.000Z"}}}}}},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Create a wallet auth challenge (Optional Session)","tags":["Authentication"]}},"/v1/auth/wallet/verify":{"post":{"description":"Verifies a wallet signature and sets a session cookie. Supports both EVM and Tron signatures; the verification method is determined automatically from the challenge.\n\nOptional session_token cookie. Works without authentication but may provide additional features when authenticated.","operationId":"AuthController_walletVerify_v1","parameters":[{"name":"Cookie","in":"header","description":"Optional session cookie","required":false,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","minLength":1,"description":"Challenge identifier to verify"},"nonce":{"type":"string","minLength":1,"description":"Challenge nonce returned by challenge API"},"message":{"type":"string","minLength":1,"description":"Exact challenge message that was signed by the wallet"},"signature":{"type":"string","pattern":"^(0x)?[0-9a-fA-F]{130}$","description":"Hex signature produced by wallet for challenge message"}},"required":["challengeId","nonce","message","signature"]}}}},"responses":{"200":{"description":"Wallet authenticated","content":{"application/json":{"examples":{"success":{"summary":"Authentication success (cookie set)","value":{}}}}}},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Verify wallet signature and create session (Optional Session)","tags":["Authentication"]}},"/v1/auth/logout":{"post":{"description":"Logout and clear session\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"AuthController_logout_v1","parameters":[{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"200":{"description":"Successfully logged out"},"401":{"description":"Unauthorized - Invalid or expired session"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Logout user (Requires Session)","tags":["Authentication"]}},"/v1/webhook":{"post":{"description":"Create a new webhook endpoint for receiving notifications. When using client ID auth, the webhook is automatically scoped to that client ID. When using session auth, a clientId must be provided in the body.\n\nOptional session_token cookie. Works without authentication but may provide additional features when authenticated.","operationId":"WebhookManagementController_createWebhook_v1","parameters":[{"name":"Cookie","in":"header","description":"Optional session cookie","required":false,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Webhook URL"},"clientId":{"type":"string","description":"Client ID to associate the webhook with (required when using session auth)"}},"required":["url"],"example":{"url":"https://example.com/webhook"}}}}},"responses":{"201":{"description":"Webhook created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Webhook ID","example":"01JMMA4WWFT0VAPBAS0GYH70GQ"},"secret":{"type":"string","description":"[Webhook signing secret](https://docs.request.network/request-network-api/api-portal-manage-api-keys-and-webhooks#webhook-management)","example":"9f8688812f6abb01ee7a36934ab10cabab4498a24d2dc080f900ced57617713c"}}}}}},"400":{"description":"Webhook already exists, or a platform-level webhook with this URL already exists"},"429":{"description":"Too Many Requests"}},"security":[{"client_id":[]},{"session_token":[]}],"summary":"Create webhook (Optional Session)","tags":["Webhooks"]},"get":{"description":"Get all webhooks. When using client ID auth, returns only webhooks for that client ID plus platform-level webhooks.\n\nOptional session_token cookie. Works without authentication but may provide additional features when authenticated.","operationId":"WebhookManagementController_getWebhooks_v1","parameters":[{"name":"Cookie","in":"header","description":"Optional session cookie","required":false,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"200":{"description":"List of webhooks","content":{"application/json":{"schema":{"type":"array","description":"List of webhooks","items":{"type":"object","properties":{"id":{"type":"string","description":"Webhook ID","example":"01JMMA4WWFT0VAPBAS0GYH70GQ"},"url":{"type":"string","description":"Webhook URL","example":"https://example.com/webhook"},"secret":{"type":"string","description":"[Webhook signing secret](https://docs.request.network/request-network-api/api-portal-manage-api-keys-and-webhooks#webhook-management)","example":"9f8688812f6abb01ee7a36934ab10cabab4498a24d2dc080f900ced57617713c"},"isActive":{"type":"boolean","default":true},"createdAt":{"type":"string","format":"date-time","example":"2025-02-17T10:50:19.497Z"}}}}}}},"429":{"description":"Too Many Requests"}},"security":[{"client_id":[]},{"session_token":[]}],"summary":"List webhooks (Optional Session)","tags":["Webhooks"]}},"/v1/webhook/{webhookId}":{"put":{"description":"Enable or disable a webhook\n\nOptional session_token cookie. Works without authentication but may provide additional features when authenticated.","operationId":"WebhookManagementController_toggleWebhook_v1","parameters":[{"name":"webhookId","required":true,"in":"path","description":"Webhook ID","schema":{"example":"01JMMA4WWFT0VAPBAS0GYH70GQ","type":"string"}},{"name":"Cookie","in":"header","description":"Optional session cookie","required":false,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"200":{"description":"Webhook toggled successfully"},"404":{"description":"Webhook not found"},"429":{"description":"Too Many Requests"}},"security":[{"client_id":[]},{"session_token":[]}],"summary":"Toggle webhook (Optional Session)","tags":["Webhooks"]},"delete":{"description":"Permanently delete a webhook\n\nOptional session_token cookie. Works without authentication but may provide additional features when authenticated.","operationId":"WebhookManagementController_deleteWebhook_v1","parameters":[{"name":"webhookId","required":true,"in":"path","description":"Webhook ID","schema":{"example":"01JMMA4WWFT0VAPBAS0GYH70GQ","type":"string"}},{"name":"Cookie","in":"header","description":"Optional session cookie","required":false,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"200":{"description":"Webhook deleted successfully"},"404":{"description":"Webhook not found"},"429":{"description":"Too Many Requests"}},"security":[{"client_id":[]},{"session_token":[]}],"summary":"Delete webhook (Optional Session)","tags":["Webhooks"]}},"/v1/webhook/test":{"post":{"description":"Send a test webhook event to all active webhook endpoints. When using client ID auth, the test is automatically scoped to that client ID. When using session auth, pass clientId in the body to scope the test to a specific client (otherwise only platform-wide webhooks without a clientId will be targeted).\n\nOptional session_token cookie. Works without authentication but may provide additional features when authenticated.","operationId":"WebhookManagementController_testWebhook_v1","parameters":[{"name":"Cookie","in":"header","description":"Optional session cookie","required":false,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventType":{"type":"string","enum":["payment.processing","payment.failed","payment.refunded","payment.confirmed","payment.partial","request.recurring","payment_detail.updated","compliance.updated","client_id.linked","secure_payment.access_rejected","kyt.screening.completed","secure_payment.user_event"],"description":"Type of webhook event to test"},"clientId":{"type":"string","description":"Client ID to scope the test to when using session auth (omitting it will only target platform-wide webhooks with no client scope)"}},"required":["eventType"],"example":{"eventType":"payment.confirmed"}}}}},"responses":{"201":{"description":"Test webhook sent successfully","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid event type","content":{"application/json":{"examples":{"invalidEventType":{"summary":"Invalid event type","value":{"statusCode":400,"message":[{"code":"invalid_enum_value","options":["payment.processing","payment.failed","payment.refunded","payment.confirmed","payment.partial","request.recurring","payment_detail.updated","compliance.updated","client_id.linked","secure_payment.access_rejected","kyt.screening.completed","secure_payment.user_event"],"path":["eventType"],"message":"Invalid enum value. Expected 'payment.processing' | 'payment.failed' | 'payment.refunded' | 'payment.confirmed' | 'payment.partial' | 'request.recurring' | 'payment_detail.updated' | 'compliance.updated' | 'client_id.linked' | 'secure_payment.access_rejected' | 'kyt.screening.completed' | 'secure_payment.user_event', received 'invalid.event'"}],"error":"Bad Request"}}}}}},"404":{"description":"No active webhooks found"},"429":{"description":"Too Many Requests"}},"security":[{"client_id":[]},{"session_token":[]}],"summary":"Test webhook (Optional Session)","tags":["Webhooks"]}},"/v1/client-ids":{"post":{"description":"Create a new client ID for frontend applications with domain restrictions\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"ClientIdController_create_v1","parameters":[{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100},"allowedDomains":{"type":"array","items":{"type":"string"},"minItems":0,"maxItems":10,"description":"List of allowed domain origins (normalized)"},"feePercentage":{"type":"string","minLength":1,"description":"Fee percentage (e.g., '1' = 1%, '2.5' = 2.5%). If set to '0', allows API request fees to take precedence. If set to any other value, overrides any fee passed via API."},"feeAddress":{"type":"string","description":"Wallet address to receive fees. Required if feePercentage is set."},"operatorWalletAddress":{"type":"string","description":"Wallet address that will act as operator for commerce payments. The API operator wallet will execute transactions on behalf of this address. Can be a smart wallet that has granted permissions to the API operator."},"defaultPreApprovalExpiry":{"type":"integer","exclusiveMinimum":0,"description":"Default pre-approval expiry duration in seconds for commerce transactions. If set, overrides the value passed in /v2/commerce-payments/authorize/calldata endpoint."},"defaultAuthorizationExpiry":{"type":"integer","exclusiveMinimum":0,"description":"Default authorization expiry duration in seconds for commerce transactions. If set, overrides the value passed in /v2/commerce-payments/authorize/calldata endpoint."},"payeeDestinationId":{"type":"string","minLength":1,"description":"Destination ID to bind this client ID to. When set, secure payments created with this client ID can only target this destination. Format: ERC-7828 payee address + token address."}},"required":["label","allowedDomains"],"example":{"label":"My Client ID","allowedDomains":["https://example.com"]}}}}},"responses":{"201":{"description":"Client ID created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"clientId":{"type":"string"},"label":{"type":"string"},"allowedDomains":{"type":"array","items":{"type":"string"}},"feePercentage":{"type":"string","nullable":true},"feeAddress":{"type":"string","nullable":true},"operatorWalletAddress":{"type":"string","nullable":true},"status":{"type":"string"},"createdAt":{"type":"string"}}}}}},"400":{"description":"Bad request - validation failed"},"401":{"description":"Unauthorized - Invalid or expired session"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Create a new client ID (Requires Session)","tags":["Client IDs"]},"get":{"description":"Get all client IDs for the authenticated platform\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"ClientIdController_findAll_v1","parameters":[{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"200":{"description":"List of client IDs","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"clientId":{"type":"string"},"label":{"type":"string"},"allowedDomains":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"createdAt":{"type":"string"},"lastUsedAt":{"type":"string","nullable":true}}}}}}},"401":{"description":"Unauthorized - Invalid or expired session"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"List all client IDs (Requires Session)","tags":["Client IDs"]}},"/v1/client-ids/{id}":{"get":{"description":"Get details of a specific client ID\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"ClientIdController_findOne_v1","parameters":[{"name":"id","required":true,"in":"path","description":"Client ID internal identifier","schema":{"example":"123","type":"string"}},{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"200":{"description":"Client ID details","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"clientId":{"type":"string"},"label":{"type":"string"},"allowedDomains":{"type":"array","items":{"type":"string"}},"feePercentage":{"type":"string","nullable":true},"feeAddress":{"type":"string","nullable":true},"operatorWalletAddress":{"type":"string","nullable":true},"status":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"lastUsedAt":{"type":"string","nullable":true}}}}}},"401":{"description":"Unauthorized - Invalid or expired session"},"404":{"description":"Client ID not found"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Get a specific client ID (Requires Session)","tags":["Client IDs"]},"put":{"description":"Update client ID settings including domains and rate limits\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"ClientIdController_update_v1","parameters":[{"name":"id","required":true,"in":"path","description":"Client ID internal identifier","schema":{"example":"123","type":"string"}},{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100},"allowedDomains":{"type":"array","items":{"type":"string"},"minItems":0,"maxItems":10,"description":"List of allowed domain origins (normalized)"},"feePercentage":{"type":"string","minLength":1,"description":"Fee percentage (e.g., '1' = 1%, '2.5' = 2.5%). If set to '0', allows API request fees to take precedence. If set to any other value, overrides any fee passed via API. Set to null to unset.","nullable":true},"feeAddress":{"type":"string","description":"Wallet address to receive fees. Required if feePercentage is set. Set to null to unset.","nullable":true},"operatorWalletAddress":{"type":"string","description":"Wallet address that will act as operator for commerce payments. The API operator wallet will execute transactions on behalf of this address. Can be a smart wallet that has granted permissions to the API operator. Set to null to unset. Note: Changing this will only affect new payments; existing payments will continue using their original operator address.","nullable":true},"defaultPreApprovalExpiry":{"type":"integer","exclusiveMinimum":0,"description":"Default pre-approval expiry duration in seconds for commerce transactions. If set, overrides the value passed in /v2/commerce-payments/authorize/calldata endpoint. Set to null to unset.","nullable":true},"defaultAuthorizationExpiry":{"type":"integer","exclusiveMinimum":0,"description":"Default authorization expiry duration in seconds for commerce transactions. If set, overrides the value passed in /v2/commerce-payments/authorize/calldata endpoint. Set to null to unset.","nullable":true},"payeeDestinationId":{"type":"string","minLength":1,"description":"Destination ID to bind this client ID to. Set to null to unset.","nullable":true},"status":{"type":"string","enum":["active","inactive","revoked"]}},"example":{"label":"My Client ID","allowedDomains":["https://example.com"]}}}}},"responses":{"200":{"description":"Client ID updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"clientId":{"type":"string"},"label":{"type":"string"},"allowedDomains":{"type":"array","items":{"type":"string"}},"feePercentage":{"type":"string","nullable":true},"feeAddress":{"type":"string","nullable":true},"operatorWalletAddress":{"type":"string","nullable":true},"status":{"type":"string"},"updatedAt":{"type":"string"}}}}}},"400":{"description":"Bad request - validation failed or cannot reactivate revoked ID"},"401":{"description":"Unauthorized - Invalid or expired session"},"404":{"description":"Client ID not found"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Update a client ID (Requires Session)","tags":["Client IDs"]},"delete":{"description":"Revoke a client ID (cannot be reactivated)\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"ClientIdController_delete_v1","parameters":[{"name":"id","required":true,"in":"path","description":"Client ID internal identifier","schema":{"example":"123","type":"string"}},{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"200":{"description":"Client ID revoked successfully"},"401":{"description":"Unauthorized - Invalid or expired session"},"404":{"description":"Client ID not found"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Revoke a client ID (Requires Session)","tags":["Client IDs"]}},"/v1/payee-destination":{"post":{"description":"Create or reactivate a payee destination for the authenticated wallet\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"PayeeDestinationController_createPayeeDestination_v1","parameters":[{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"walletAddress":{"type":"string","description":"Recipient wallet address. Defaults to the authenticated session EOA when omitted."},"tokenAddress":{"type":"string","description":"The token address for the payee destination (ERC20 or TRC20)"},"chainId":{"type":"integer","description":"The chain ID where the token is deployed"},"accessPolicy":{"type":"object","properties":{"mode":{"type":"string","enum":["off","kyt_all_wallets"]},"screeningProvider":{"type":"string","enum":["hypernative","merklescience"],"nullable":true},"hideUntilApproved":{"type":"boolean"},"hidePayeeAddress":{"type":"boolean"}},"required":["mode","hideUntilApproved","hidePayeeAddress"]}},"required":["tokenAddress","chainId"]}}}},"responses":{"201":{"description":"Payee destination created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"destinationId":{"type":"string"},"walletAddress":{"type":"string"},"walletType":{"type":"string","enum":["eoa","safe"]},"tokenAddress":{"type":"string"},"chainId":{"type":"number"},"accessPolicy":{"type":"object","nullable":true,"properties":{"mode":{"type":"string","enum":["off","kyt_all_wallets"]},"screeningProvider":{"type":"string","enum":["hypernative","merklescience"],"nullable":true},"hideUntilApproved":{"type":"boolean"},"hidePayeeAddress":{"type":"boolean"}},"required":["mode","hideUntilApproved","hidePayeeAddress"]},"pendingWalletChange":{"type":"object","nullable":true,"properties":{"changeRequestId":{"type":"string"},"status":{"type":"string","enum":["pending_signatures"]},"payeeIdentityAddress":{"type":"string"},"nonce":{"type":"string"},"currentChainId":{"type":"number"},"targetChainId":{"type":"number"},"currentWalletAddress":{"type":"string"},"newWalletAddress":{"type":"string"},"currentTokenAddress":{"type":"string"},"targetTokenAddress":{"type":"string"},"safeMessageHash":{"type":"string"},"message":{"type":"string","description":"Deterministic signing payload derived from the stored change parameters"},"createdAt":{"type":"string","format":"date-time"}},"required":["changeRequestId","status","payeeIdentityAddress","nonce","currentChainId","targetChainId","currentWalletAddress","newWalletAddress","currentTokenAddress","targetTokenAddress","safeMessageHash","message","createdAt"]},"binaryInteropAddress":{"type":"string"},"humanReadableInteropAddress":{"type":"string"},"claimed":{"type":"boolean"},"active":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","destinationId","walletAddress","walletType","tokenAddress","chainId","binaryInteropAddress","humanReadableInteropAddress","claimed","active","createdAt"]},"examples":{"success":{"summary":"Created destination","value":{"id":"01JQXYZ1234567890ABCDEFGH","destinationId":"0x742d35cc6634c0532925a3b844bc454e4438f44e@eip155:1#4CA88C9C:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","walletAddress":"0x742d35cc6634c0532925a3b844bc454e4438f44e","walletType":"eoa","tokenAddress":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","chainId":1,"accessPolicy":{"mode":"kyt_all_wallets","screeningProvider":"hypernative","hideUntilApproved":true,"hidePayeeAddress":true},"binaryInteropAddress":"0x00010000010114742d35cc6634c0532925a3b844bc454e4438f44e","humanReadableInteropAddress":"0x742d35cc6634c0532925a3b844bc454e4438f44e@eip155:1#4CA88C9C","claimed":true,"active":true,"createdAt":"2026-02-24T12:00:00.000Z"}}}}}},"400":{"description":"Bad request - validation failed"},"401":{"description":"Unauthorized - Invalid or expired session"},"403":{"description":"Forbidden - wallet session required"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Create payee destination (Requires Session)","tags":["Payee Destination"]},"put":{"description":"Update the active payee destination in place for the authenticated wallet. Client IDs linked via foreign key are unaffected.\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"PayeeDestinationController_updatePayeeDestination_v1","parameters":[{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"walletAddress":{"type":"string","description":"Recipient wallet address. When omitted, the current destination wallet is kept."},"tokenAddress":{"type":"string","description":"The new token address for the payee destination"},"chainId":{"type":"integer","description":"The new chain ID where the token is deployed"},"accessPolicy":{"type":"object","properties":{"mode":{"type":"string","enum":["off","kyt_all_wallets"]},"screeningProvider":{"type":"string","enum":["hypernative","merklescience"],"nullable":true},"hideUntilApproved":{"type":"boolean"},"hidePayeeAddress":{"type":"boolean"}},"required":["mode","hideUntilApproved","hidePayeeAddress"]}},"required":["tokenAddress","chainId"]}}}},"responses":{"200":{"description":"Payee destination updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"destinationId":{"type":"string"},"walletAddress":{"type":"string"},"walletType":{"type":"string","enum":["eoa","safe"]},"tokenAddress":{"type":"string"},"chainId":{"type":"number"},"accessPolicy":{"type":"object","nullable":true,"properties":{"mode":{"type":"string","enum":["off","kyt_all_wallets"]},"screeningProvider":{"type":"string","enum":["hypernative","merklescience"],"nullable":true},"hideUntilApproved":{"type":"boolean"},"hidePayeeAddress":{"type":"boolean"}},"required":["mode","hideUntilApproved","hidePayeeAddress"]},"pendingWalletChange":{"type":"object","nullable":true,"properties":{"changeRequestId":{"type":"string"},"status":{"type":"string","enum":["pending_signatures"]},"payeeIdentityAddress":{"type":"string"},"nonce":{"type":"string"},"currentChainId":{"type":"number"},"targetChainId":{"type":"number"},"currentWalletAddress":{"type":"string"},"newWalletAddress":{"type":"string"},"currentTokenAddress":{"type":"string"},"targetTokenAddress":{"type":"string"},"safeMessageHash":{"type":"string"},"message":{"type":"string","description":"Deterministic signing payload derived from the stored change parameters"},"createdAt":{"type":"string","format":"date-time"}},"required":["changeRequestId","status","payeeIdentityAddress","nonce","currentChainId","targetChainId","currentWalletAddress","newWalletAddress","currentTokenAddress","targetTokenAddress","safeMessageHash","message","createdAt"]},"binaryInteropAddress":{"type":"string"},"humanReadableInteropAddress":{"type":"string"},"claimed":{"type":"boolean"},"active":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","destinationId","walletAddress","walletType","tokenAddress","chainId","binaryInteropAddress","humanReadableInteropAddress","claimed","active","createdAt"]},"examples":{"success":{"summary":"Updated destination","value":{"id":"01JQXYZ1234567890ABCDEFGH","destinationId":"0x742d35cc6634c0532925a3b844bc454e4438f44e@eip155:1#4CA88C9C:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","walletAddress":"0x742d35cc6634c0532925a3b844bc454e4438f44e","walletType":"eoa","tokenAddress":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","chainId":1,"accessPolicy":{"mode":"kyt_all_wallets","screeningProvider":"hypernative","hideUntilApproved":true,"hidePayeeAddress":true},"binaryInteropAddress":"0x00010000010114742d35cc6634c0532925a3b844bc454e4438f44e","humanReadableInteropAddress":"0x742d35cc6634c0532925a3b844bc454e4438f44e@eip155:1#4CA88C9C","claimed":true,"active":true,"createdAt":"2026-02-24T12:00:00.000Z"}}}}}},"400":{"description":"Bad request - validation failed"},"401":{"description":"Unauthorized - Invalid or expired session"},"403":{"description":"Forbidden - wallet session required"},"404":{"description":"No active payee destination found"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Update payee destination (Requires Session)","tags":["Payee Destination"]},"get":{"description":"Retrieve the active payee destination for the authenticated wallet\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"PayeeDestinationController_getMyActivePayeeDestination_v1","parameters":[{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"200":{"description":"Active payee destination retrieved successfully","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"destinationId":{"type":"string"},"walletAddress":{"type":"string"},"walletType":{"type":"string","enum":["eoa","safe"]},"tokenAddress":{"type":"string"},"chainId":{"type":"number"},"accessPolicy":{"type":"object","nullable":true,"properties":{"mode":{"type":"string","enum":["off","kyt_all_wallets"]},"screeningProvider":{"type":"string","enum":["hypernative","merklescience"],"nullable":true},"hideUntilApproved":{"type":"boolean"},"hidePayeeAddress":{"type":"boolean"}},"required":["mode","hideUntilApproved","hidePayeeAddress"]},"pendingWalletChange":{"type":"object","nullable":true,"properties":{"changeRequestId":{"type":"string"},"status":{"type":"string","enum":["pending_signatures"]},"payeeIdentityAddress":{"type":"string"},"nonce":{"type":"string"},"currentChainId":{"type":"number"},"targetChainId":{"type":"number"},"currentWalletAddress":{"type":"string"},"newWalletAddress":{"type":"string"},"currentTokenAddress":{"type":"string"},"targetTokenAddress":{"type":"string"},"safeMessageHash":{"type":"string"},"message":{"type":"string","description":"Deterministic signing payload derived from the stored change parameters"},"createdAt":{"type":"string","format":"date-time"}},"required":["changeRequestId","status","payeeIdentityAddress","nonce","currentChainId","targetChainId","currentWalletAddress","newWalletAddress","currentTokenAddress","targetTokenAddress","safeMessageHash","message","createdAt"]},"binaryInteropAddress":{"type":"string"},"humanReadableInteropAddress":{"type":"string"},"claimed":{"type":"boolean"},"active":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","destinationId","walletAddress","walletType","tokenAddress","chainId","binaryInteropAddress","humanReadableInteropAddress","claimed","active","createdAt"]},{"type":"null"}]},"examples":{"hasActiveDestination":{"summary":"Active destination exists","value":{"id":"01JQXYZ1234567890ABCDEFGH","destinationId":"0x742d35cc6634c0532925a3b844bc454e4438f44e@eip155:1#4CA88C9C:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","walletAddress":"0x742d35cc6634c0532925a3b844bc454e4438f44e","walletType":"eoa","tokenAddress":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","chainId":1,"accessPolicy":{"mode":"kyt_all_wallets","screeningProvider":"hypernative","hideUntilApproved":true,"hidePayeeAddress":true},"binaryInteropAddress":"0x00010000010114742d35cc6634c0532925a3b844bc454e4438f44e","humanReadableInteropAddress":"0x742d35cc6634c0532925a3b844bc454e4438f44e@eip155:1#4CA88C9C","claimed":true,"active":true,"createdAt":"2026-02-24T12:00:00.000Z"}},"noActiveDestination":{"summary":"No active destination","value":null}}}}},"401":{"description":"Unauthorized - Invalid or expired session"},"403":{"description":"Forbidden - wallet session required"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Get active payee destination (Requires Session)","tags":["Payee Destination"]}},"/v1/payee-destination/payout-lookup":{"get":{"description":"Retrieve the active destination preference for a payout recipient wallet. Returns only the routing fields needed to prefill payout creation.\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"PayeeDestinationController_lookupPayoutDestination_v1","parameters":[{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"200":{"description":"Recipient payout destination lookup completed","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"destinationId":{"type":"string"},"walletAddress":{"type":"string"},"tokenAddress":{"type":"string"},"chainId":{"type":"number"},"claimed":{"type":"boolean"}},"required":["destinationId","walletAddress","tokenAddress","chainId","claimed"]},{"type":"null"}]},"examples":{"hasActiveDestination":{"summary":"Recipient has an active destination","value":{"destinationId":"0x742d35cc6634c0532925a3b844bc454e4438f44e@eip155:1#4CA88C9C:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","walletAddress":"0x742d35cc6634c0532925a3b844bc454e4438f44e","tokenAddress":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","chainId":1,"claimed":true}},"noActiveDestination":{"summary":"Recipient has no active destination","value":null}}}}},"400":{"description":"Bad request - invalid wallet address"},"401":{"description":"Unauthorized - Invalid or expired session"},"403":{"description":"Forbidden - wallet session required"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Lookup recipient payout destination (Requires Session)","tags":["Payee Destination"]}},"/v1/payee-destination/lookup":{"get":{"description":"Retrieve a destination owned by the authenticated wallet\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"PayeeDestinationController_getMyPayeeDestinationById_v1","parameters":[{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"200":{"description":"Payee destination retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"destinationId":{"type":"string"},"walletAddress":{"type":"string"},"walletType":{"type":"string","enum":["eoa","safe"]},"tokenAddress":{"type":"string"},"chainId":{"type":"number"},"accessPolicy":{"type":"object","nullable":true,"properties":{"mode":{"type":"string","enum":["off","kyt_all_wallets"]},"screeningProvider":{"type":"string","enum":["hypernative","merklescience"],"nullable":true},"hideUntilApproved":{"type":"boolean"},"hidePayeeAddress":{"type":"boolean"}},"required":["mode","hideUntilApproved","hidePayeeAddress"]},"pendingWalletChange":{"type":"object","nullable":true,"properties":{"changeRequestId":{"type":"string"},"status":{"type":"string","enum":["pending_signatures"]},"payeeIdentityAddress":{"type":"string"},"nonce":{"type":"string"},"currentChainId":{"type":"number"},"targetChainId":{"type":"number"},"currentWalletAddress":{"type":"string"},"newWalletAddress":{"type":"string"},"currentTokenAddress":{"type":"string"},"targetTokenAddress":{"type":"string"},"safeMessageHash":{"type":"string"},"message":{"type":"string","description":"Deterministic signing payload derived from the stored change parameters"},"createdAt":{"type":"string","format":"date-time"}},"required":["changeRequestId","status","payeeIdentityAddress","nonce","currentChainId","targetChainId","currentWalletAddress","newWalletAddress","currentTokenAddress","targetTokenAddress","safeMessageHash","message","createdAt"]},"binaryInteropAddress":{"type":"string"},"humanReadableInteropAddress":{"type":"string"},"claimed":{"type":"boolean"},"active":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","destinationId","walletAddress","walletType","tokenAddress","chainId","binaryInteropAddress","humanReadableInteropAddress","claimed","active","createdAt"]},"examples":{"success":{"summary":"Destination by ID","value":{"id":"01JQXYZ1234567890ABCDEFGH","destinationId":"0x742d35cc6634c0532925a3b844bc454e4438f44e@eip155:1#4CA88C9C:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","walletAddress":"0x742d35cc6634c0532925a3b844bc454e4438f44e","walletType":"eoa","tokenAddress":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","chainId":1,"accessPolicy":{"mode":"kyt_all_wallets","screeningProvider":"hypernative","hideUntilApproved":true,"hidePayeeAddress":true},"binaryInteropAddress":"0x00010000010114742d35cc6634c0532925a3b844bc454e4438f44e","humanReadableInteropAddress":"0x742d35cc6634c0532925a3b844bc454e4438f44e@eip155:1#4CA88C9C","claimed":true,"active":true,"createdAt":"2026-02-24T12:00:00.000Z"}}}}}},"401":{"description":"Unauthorized - Invalid or expired session"},"403":{"description":"Forbidden - wallet session required or destination not owned"},"404":{"description":"Payee destination not found"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Get payee destination by ID (Requires Session)","tags":["Payee Destination"]}},"/v1/payee-destination/deactivate":{"patch":{"description":"Deactivate a destination owned by the authenticated wallet\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"PayeeDestinationController_deactivateMyPayeeDestination_v1","parameters":[{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"destinationId":{"type":"string"}},"required":["destinationId"]}}}},"responses":{"200":{"description":"Payee destination deactivated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]},"examples":{"success":{"summary":"Deactivated","value":{"success":true,"message":"Payee destination deactivated successfully"}}}}}},"401":{"description":"Unauthorized - Invalid or expired session"},"403":{"description":"Forbidden - wallet session required or destination not owned"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Deactivate payee destination (Requires Session)","tags":["Payee Destination"]}},"/v1/payee-destination/wallet-change/cancel":{"patch":{"description":"Cancel a pending Safe wallet change owned by the authenticated wallet. No co-signer quorum is required to cancel.\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"PayeeDestinationController_cancelMyPendingWalletChange_v1","parameters":[{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"changeRequestId":{"type":"string","minLength":1,"description":"The identifier of the pending wallet change to cancel, as returned in `pendingWalletChange.changeRequestId`"}},"required":["changeRequestId"]}}}},"responses":{"200":{"description":"Pending wallet change cancelled successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}},"required":["success","message"]},"examples":{"success":{"summary":"Cancelled","value":{"success":true,"message":"Pending payee destination wallet change cancelled successfully"}}}}}},"401":{"description":"Unauthorized - Invalid or expired session"},"403":{"description":"Forbidden - wallet session required"},"404":{"description":"No pending wallet change found to cancel"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Cancel pending payee destination wallet change (Requires Session)","tags":["Payee Destination"]}},"/v1/client-id-links/intents/{token}":{"get":{"description":"Checks whether a link-intent access token exists, is unused, and is unexpired. Requires an authenticated session. Returns 200 when valid, including the intent's `clientIdName` and the orchestrator's branding when configured; otherwise throws (404 unknown token, 403 used/expired) with a `code` in the body.\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"ClientIdLinkIntentController_validate_v1","parameters":[{"name":"token","required":true,"in":"path","description":"The link-intent access token","schema":{"example":"a1b2c3d4e5f6...","type":"string"}},{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"200":{"description":"The link intent is valid ({ valid: true, clientIdName }), with the orchestrator's branding when configured ({ valid: true, clientIdName, branding })"},"401":{"description":"Unauthorized - Invalid or expired session"},"403":{"description":"Used or expired token (code: LINK_INTENT_USED | LINK_INTENT_EXPIRED)"},"404":{"description":"Unknown token (code: LINK_INTENT_NOT_FOUND)"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Validate a client ID link intent (Requires Session)","tags":["Client ID Link Intents"]},"post":{"description":"Mints a client ID owned by the authenticated wallet session under the intent's name and links it to the intent's orchestrator, then marks the token used. Intents without an orchestrator KYT plan require `kyt.provider` to be Hypernative, Merkle Science, or null for KYT off. Requires a wallet session. Throws (404 unknown token, 403 used/expired) with a `code` in the body.\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"ClientIdLinkIntentController_complete_v1","parameters":[{"name":"token","required":true,"in":"path","description":"The link-intent access token","schema":{"example":"a1b2c3d4e5f6...","type":"string"}},{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"201":{"description":"Client ID created and linked ({ ok: true, clientId, link })"},"401":{"description":"Unauthorized - Invalid or expired session"},"403":{"description":"Non-wallet session, or used/expired token"},"404":{"description":"Unknown token (code: LINK_INTENT_NOT_FOUND)"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Complete a client ID link intent (Requires Session)","tags":["Client ID Link Intents"]}},"/v1/client-id-links/{clientIdId}/kyt":{"put":{"description":"Updates a recipient-controlled client ID link to use Hypernative, Merkle Science, or KYT off. Orchestrator-controlled and legacy links cannot be changed.\n\nRequires session_token cookie. If you've logged in, this cookie is already set in your browser.","operationId":"ClientIdLinkKytController_update_v1","parameters":[{"name":"clientIdId","required":true,"in":"path","schema":{"type":"string"}},{"name":"Cookie","in":"header","description":"Active session cookie (automatically included after login)","required":true,"schema":{"type":"string","example":"session_token=<your-session-token>"}}],"responses":{"401":{"description":"Unauthorized - Invalid or expired session"},"429":{"description":"Too Many Requests"}},"security":[{"session_token":[]}],"summary":"Update recipient-controlled client ID link KYT (Requires Session)","tags":["Client ID Link KYT"]}}},"info":{"title":"Request Network Auth API","description":"Authentication layer API for Request Network","version":"0.14.0","contact":{}},"tags":[],"servers":[],"components":{"schemas":{},"securitySchemes":{"session_token":{"type":"apiKey","in":"cookie","name":"session_token"},"client_id":{"type":"apiKey","in":"header","name":"x-client-id","description":"Platform Client ID authentication verified against production webhook operations."}}},"externalDocs":{"description":"Request Network Docs","url":"https://docs.request.network/request-network-api"},"x-contract-patches":["oas30-nullable-unions","platform-webhook-client-id-auth"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"url": "https://auth.request.network/open-api/openapi.json",
|
|
3
|
+
"runtimeBaseUrl": "https://auth.request.network",
|
|
4
|
+
"fetchedAt": "2026-09-03T09:13:49.531Z",
|
|
5
|
+
"etag": null,
|
|
6
|
+
"lastModified": null,
|
|
7
|
+
"rawSha256": "9047ed549e768a44762c0d68785ebc495652d53127eaaded73452cebac1098f1",
|
|
8
|
+
"normalizedSha256": "b37039ced02dd198421280089642db409cdaeb2bbbf09a9753b6ad43043c39a1",
|
|
9
|
+
"patchStats": {
|
|
10
|
+
"nullableUnions": 8,
|
|
11
|
+
"webhookSecurityOperations": 5
|
|
12
|
+
}
|
|
13
|
+
}
|