{"openapi":"3.1.0","info":{"title":"GARD API","version":"1.0.0","summary":"Evaluate a transaction before money moves: ALLOW, REVIEW or BLOCK.","description":"GARD is a transaction protection layer for autonomous money. Send a proposed transaction, get a structured decision and the reasons behind it. GARD evaluates and enforces policy; it is not insurance and does not guarantee that any transaction is safe or reversible.\n\n**Environments.** `gard_test_` keys work only against the testnet deployment (Arc Testnet). `gard_live_` keys work only against mainnet. A key never crosses environments.\n\n**Money** is always a decimal string at the HTTP boundary and integer micro-units internally.\n\n**Access modes.** API key (`Authorization: Bearer`), keyless instant (testnet, tightly rate limited), and pay-per-use via x402 (`X-PAYMENT`) where enabled.","license":{"name":"Proprietary"}},"servers":[{"url":"https://gard.cc","description":"Arc Testnet (current deployment)"}],"security":[{"bearerAuth":[]},{}],"tags":[{"name":"Evaluation"},{"name":"History"},{"name":"Policy"}],"paths":{"/v1/evaluate":{"post":{"tags":["Evaluation"],"operationId":"evaluate","summary":"Evaluate a proposed transaction","description":"Authenticates the caller, loads policy and context, runs the evaluator and persists the result. Idempotent per `requestId`. Set `simulate` to true for a dry run. Nothing is stored, debited, settled, webhooked, or executed, and the id cannot be fetched or executed. A keyless or unpaid dry run uses the rules engine only (`jevSkipped: true`) and does not call Jev. An API key or dashboard session reserves monthly quota the same way a live evaluation does and may call Jev. The Jev cost and margin are recorded with `simulated: true` and do not count toward included allowance or overage.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluateRequest"},"examples":{"basic":{"value":{"requestId":"req-1f3a9c2e","recipient":"0x3e88a1f04c7d59b2e6a0d418f9c73b5e2d10a6f7","asset":"USDC","amount":"500.000000","purpose":"Purchase GPU compute"}}}}}},"responses":{"200":{"description":"Replay of an earlier request with the same requestId (`replayed: true`), or a dry run (`simulated: true`) that was not stored or billed.","headers":{"ratelimit-limit":{"$ref":"#/components/schemas/RateLimitLimit"},"ratelimit-remaining":{"$ref":"#/components/schemas/RateLimitRemaining"},"ratelimit-reset":{"$ref":"#/components/schemas/RateLimitReset"},"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluateResponse"}}}},"201":{"description":"New evaluation","headers":{"location":{"schema":{"type":"string"}},"ratelimit-limit":{"$ref":"#/components/schemas/RateLimitLimit"},"ratelimit-remaining":{"$ref":"#/components/schemas/RateLimitRemaining"},"ratelimit-reset":{"$ref":"#/components/schemas/RateLimitReset"},"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluateResponse"}}}},"400":{"description":"validation_error, invalid_json, invalid_asset, chain_mismatch","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"invalid_api_key or authentication_required","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required (x402). Body carries `x402Version` and `accepts`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"403":{"description":"insufficient_scope","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"idempotency_conflict: requestId reused with a different body","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited or quota_exceeded","headers":{"retry-after":{"$ref":"#/components/schemas/RetryAfter"},"ratelimit-limit":{"$ref":"#/components/schemas/RateLimitLimit"},"ratelimit-remaining":{"$ref":"#/components/schemas/RateLimitRemaining"},"ratelimit-reset":{"$ref":"#/components/schemas/RateLimitReset"},"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"internal_error or jev_caller_required","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"storage_unavailable or rate_limiter_unavailable","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/evaluations/{id}":{"get":{"tags":["History"],"operationId":"getEvaluation","summary":"Get a stored evaluation","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9A-HJKMNP-TV-Z]{26}$"}}],"responses":{"200":{"description":"The evaluation","headers":{"ratelimit-limit":{"$ref":"#/components/schemas/RateLimitLimit"},"ratelimit-remaining":{"$ref":"#/components/schemas/RateLimitRemaining"},"ratelimit-reset":{"$ref":"#/components/schemas/RateLimitReset"},"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evaluation"}}}},"400":{"description":"validation_error, invalid_json, invalid_asset, chain_mismatch","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"invalid_api_key or authentication_required","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"insufficient_scope","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited or quota_exceeded","headers":{"retry-after":{"$ref":"#/components/schemas/RetryAfter"},"ratelimit-limit":{"$ref":"#/components/schemas/RateLimitLimit"},"ratelimit-remaining":{"$ref":"#/components/schemas/RateLimitRemaining"},"ratelimit-reset":{"$ref":"#/components/schemas/RateLimitReset"},"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"internal_error or jev_caller_required","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"storage_unavailable or rate_limiter_unavailable","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/decisions":{"get":{"tags":["History"],"operationId":"listDecisions","summary":"List decisions, newest first","security":[{"bearerAuth":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"pageSize","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":25}},{"name":"decision","in":"query","schema":{"type":"string","enum":["ALLOW","REVIEW","BLOCK"]}}],"responses":{"200":{"description":"A page of decisions","headers":{"ratelimit-limit":{"$ref":"#/components/schemas/RateLimitLimit"},"ratelimit-remaining":{"$ref":"#/components/schemas/RateLimitRemaining"},"ratelimit-reset":{"$ref":"#/components/schemas/RateLimitReset"},"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionList"}}}},"400":{"description":"validation_error, invalid_json, invalid_asset, chain_mismatch","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"invalid_api_key or authentication_required","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"insufficient_scope","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited or quota_exceeded","headers":{"retry-after":{"$ref":"#/components/schemas/RetryAfter"},"ratelimit-limit":{"$ref":"#/components/schemas/RateLimitLimit"},"ratelimit-remaining":{"$ref":"#/components/schemas/RateLimitRemaining"},"ratelimit-reset":{"$ref":"#/components/schemas/RateLimitReset"},"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"internal_error or jev_caller_required","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"storage_unavailable or rate_limiter_unavailable","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/policy":{"get":{"tags":["Policy"],"operationId":"getPolicy","summary":"Get the policy evaluations are checked against","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"The active policy (or the default)","headers":{"ratelimit-limit":{"$ref":"#/components/schemas/RateLimitLimit"},"ratelimit-remaining":{"$ref":"#/components/schemas/RateLimitRemaining"},"ratelimit-reset":{"$ref":"#/components/schemas/RateLimitReset"},"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Policy"}}}},"400":{"description":"validation_error, invalid_json, invalid_asset, chain_mismatch","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"invalid_api_key or authentication_required","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"insufficient_scope","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited or quota_exceeded","headers":{"retry-after":{"$ref":"#/components/schemas/RetryAfter"},"ratelimit-limit":{"$ref":"#/components/schemas/RateLimitLimit"},"ratelimit-remaining":{"$ref":"#/components/schemas/RateLimitRemaining"},"ratelimit-reset":{"$ref":"#/components/schemas/RateLimitReset"},"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"internal_error or jev_caller_required","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"storage_unavailable or rate_limiter_unavailable","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/limits":{"get":{"tags":["Policy"],"operationId":"getLimits","summary":"Spending remaining today","description":"Counts CONFIRMED executions only, the same figure the daily-limit rule uses.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Today's limits","headers":{"ratelimit-limit":{"$ref":"#/components/schemas/RateLimitLimit"},"ratelimit-remaining":{"$ref":"#/components/schemas/RateLimitRemaining"},"ratelimit-reset":{"$ref":"#/components/schemas/RateLimitReset"},"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Limits"}}}},"400":{"description":"validation_error, invalid_json, invalid_asset, chain_mismatch","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"invalid_api_key or authentication_required","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"insufficient_scope","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"rate_limited or quota_exceeded","headers":{"retry-after":{"$ref":"#/components/schemas/RetryAfter"},"ratelimit-limit":{"$ref":"#/components/schemas/RateLimitLimit"},"ratelimit-remaining":{"$ref":"#/components/schemas/RateLimitRemaining"},"ratelimit-reset":{"$ref":"#/components/schemas/RateLimitReset"},"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"internal_error or jev_caller_required","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"storage_unavailable or rate_limiter_unavailable","headers":{"x-request-id":{"$ref":"#/components/schemas/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"gard_test_… | gard_live_…","description":"API key created in the dashboard. Shown once; only its SHA-256 is stored."}},"headers":{},"schemas":{"XRequestId":{"type":"string"},"RateLimitLimit":{"type":"integer"},"RateLimitRemaining":{"type":"integer"},"RateLimitReset":{"type":"integer","description":"Seconds until the window resets"},"RetryAfter":{"type":"integer","description":"Seconds to wait before retrying"},"Decision":{"type":"string","enum":["ALLOW","REVIEW","BLOCK"]},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["validation_error","invalid_json","unsupported_media_type","payload_too_large","invalid_api_key","authentication_required","insufficient_scope","rate_limited","quota_exceeded","payment_required","invalid_payment","settlement_failed","not_found","idempotency_conflict","chain_mismatch","invalid_asset","jev_caller_required","storage_unavailable","internal_error"]},"message":{"type":"string"},"details":{}}}}},"PaymentRequired":{"type":"object","required":["x402Version","accepts"],"properties":{"x402Version":{"type":"integer","const":1},"error":{"type":"string"},"accepts":{"type":"array","items":{"type":"object","required":["scheme","network","maxAmountRequired","payTo","asset"],"properties":{"scheme":{"const":"exact"},"network":{"type":"string"},"maxAmountRequired":{"type":"string"},"resource":{"type":"string"},"payTo":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"asset":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"maxTimeoutSeconds":{"type":"integer"}}}},"gard":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"PolicyInput":{"type":"object","additionalProperties":false,"required":["maxTransaction","dailyLimit","humanReviewThreshold","allowedAssets","unknownRecipient","unknownContract"],"properties":{"maxTransaction":{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,6})?$","examples":["500.00"],"description":"Decimal string with at most 6 decimal places. Never a JSON number."},"dailyLimit":{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,6})?$","examples":["500.00"],"description":"Decimal string with at most 6 decimal places. Never a JSON number."},"humanReviewThreshold":{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,6})?$","examples":["500.00"],"description":"Decimal string with at most 6 decimal places. Never a JSON number."},"allowedAssets":{"type":"array","items":{"type":"string","enum":["USDC","EURC","USDT"]},"minItems":1},"allowedRecipients":{"type":"array","items":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"maxItems":100},"blockedRecipients":{"type":"array","items":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"maxItems":100},"unknownRecipient":{"type":"string","enum":["allow","review","block"]},"unknownContract":{"type":"string","enum":["allow","review","block"]}}},"EvaluateRequest":{"type":"object","additionalProperties":false,"required":["recipient","asset","amount"],"properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9-]{8,64}$","description":"Idempotency key"},"recipient":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"asset":{"oneOf":[{"type":"string","enum":["USDC","EURC","USDT"]},{"type":"object","additionalProperties":false,"required":["symbol"],"properties":{"symbol":{"type":"string","enum":["USDC","EURC","USDT"]},"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}}}]},"amount":{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,6})?$","examples":["500.00"],"description":"Decimal string with at most 6 decimal places. Never a JSON number."},"purpose":{"type":"string","maxLength":280},"context":{"type":"object","additionalProperties":true,"description":"Up to 4KB of JSON. `spentToday` and `recipientSeenBefore` are server-owned and ignored."},"chain":{"type":"string","enum":["arc","arc-testnet"]},"policy":{"$ref":"#/components/schemas/PolicyInput","description":"Stateless policy for keyless and x402 callers. It may only be stricter than the default policy. Ignored when an API key or a dashboard session is used."},"simulate":{"type":"boolean","description":"Dry run. Does not persist the evaluation, debit credits, settle x402, emit webhooks, or create an execution. Keyless and unpaid callers do not call Jev. An API key reserves quota and meters Jev cost."}}},"Reason":{"type":"object","required":["code","message","severity"],"properties":{"code":{"description":"Stable policy or system code, or a Jev model note (`jev_` + snake_case). A model note cannot loosen a deterministic BLOCK.","oneOf":[{"type":"string","enum":["missing_purpose","asset_not_allowed","blocked_recipient","flagged_recipient","new_recipient","unknown_contract_recipient","chain_context_unavailable","exceeds_max_transaction","exceeds_daily_limit","human_review_threshold","within_policy","evaluator_unavailable","evaluator_unavailable_rules_only","jev_model_block_capped"]},{"type":"string","pattern":"^jev_[a-z0-9_]+$"}]},"message":{"type":"string"},"severity":{"type":"string","enum":["info","warning","critical"]}}},"Signal":{"type":"object","required":["id","label","status"],"properties":{"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["pass","flag","fail"]},"detail":{"type":"string"}}},"EvaluateResponse":{"type":"object","required":["version","evaluationId","decisionId","decision","confidenceBps","reasons","policy","evaluator","accessMode","pricingTier","replayed","simulated","mode","reasonCatalogVersion","jevSkipped"],"properties":{"version":{"const":"1"},"evaluationId":{"type":"string"},"decisionId":{"type":"string"},"decision":{"$ref":"#/components/schemas/Decision"},"confidenceBps":{"type":"integer","minimum":0,"maximum":10000},"reasons":{"type":"array","items":{"$ref":"#/components/schemas/Reason"}},"signals":{"type":"array","items":{"$ref":"#/components/schemas/Signal"}},"policy":{"type":"object","required":["id","version","source"],"properties":{"id":{"type":["string","null"]},"version":{"type":["string","null"]},"source":{"type":"string","enum":["saved","default","inline"]}}},"evaluator":{"type":"object","required":["provider","version"],"properties":{"provider":{"type":"string","examples":["jev","gard-rules"]},"version":{"type":"string"}}},"accessMode":{"type":"string","enum":["dashboard","api_key","instant","x402"]},"pricingTier":{"type":"string","enum":["INSTANT","REGISTERED","GARD_TIER_1","GARD_TIER_2","GARD_TIER_3","ENTERPRISE"]},"billing":{"type":"object","properties":{"billable":{"type":"boolean"},"unitPriceMicroUsdc":{"type":"integer"},"status":{"type":"string","enum":["included","accrued","paid","test_mode","waived"]}}},"environment":{"type":"string","enum":["testnet","mainnet"]},"chainId":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"replayed":{"type":"boolean"},"simulated":{"type":"boolean","description":"True when this response is a dry run. The evaluation was not stored, charged, executed, or counted toward included allowance or overage."},"mode":{"type":"string","enum":["simulation","live"],"description":"simulation when the caller set simulate. The verdict and reason codes are complete, and no execution, quote, or charge was created. live for a stored evaluation."},"reasonCatalogVersion":{"const":"gard-reasons/1","description":"Version of the reason-code catalog that defines every code in reasons. See docs/reason-codes.md."},"jevSkipped":{"type":"boolean","description":"True when this dry run did not call Jev. Keyless and unpaid simulations are rules-only."}}},"Evaluation":{"allOf":[{"$ref":"#/components/schemas/EvaluateResponse"},{"type":"object","properties":{"request":{"type":"object","properties":{"recipient":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"asset":{"type":"string"},"amount":{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,6})?$","examples":["500.00"],"description":"Decimal string with at most 6 decimal places. Never a JSON number."},"amountMicroUsdc":{"type":"integer"},"purpose":{"type":"string"},"requestId":{"type":"string"}}},"execution":{"type":["object","null"],"properties":{"id":{"type":"string"},"status":{"type":"string"},"txHash":{"type":["string","null"]}}}}}]},"DecisionList":{"type":"object","required":["items","total","page","pageSize","hasMore"],"properties":{"items":{"type":"array","items":{"type":"object","required":["evaluationId","status","request","createdAt"],"properties":{"evaluationId":{"type":"string"},"decisionId":{"type":["string","null"]},"decision":{"oneOf":[{"$ref":"#/components/schemas/Decision"},{"type":"null"}]},"confidenceBps":{"type":["integer","null"]},"reasons":{"type":"array","items":{"$ref":"#/components/schemas/Reason"}},"status":{"type":"string","enum":["PENDING","EVALUATED","FAILED"]},"request":{"type":"object"},"createdAt":{"type":"string","format":"date-time"}}}},"total":{"type":"integer"},"page":{"type":"integer"},"pageSize":{"type":"integer"},"hasMore":{"type":"boolean"}}},"Policy":{"type":"object","required":["source","maxTransaction","dailyLimit","humanReviewThreshold","allowedAssets","unknownRecipient","unknownContract"],"properties":{"id":{"type":["string","null"]},"name":{"type":"string"},"source":{"type":"string","enum":["saved","default"]},"version":{"type":["string","null"]},"maxTransaction":{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,6})?$","examples":["500.00"],"description":"Decimal string with at most 6 decimal places. Never a JSON number."},"dailyLimit":{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,6})?$","examples":["500.00"],"description":"Decimal string with at most 6 decimal places. Never a JSON number."},"humanReviewThreshold":{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,6})?$","examples":["500.00"],"description":"Decimal string with at most 6 decimal places. Never a JSON number."},"allowedAssets":{"type":"array","items":{"type":"string"}},"allowedRecipients":{"type":"array","items":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}},"blockedRecipients":{"type":"array","items":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}},"unknownRecipient":{"type":"string","enum":["allow","review","block"]},"unknownContract":{"type":"string","enum":["allow","review","block"]}}},"Limits":{"type":"object","required":["asset","dailyLimit","spentToday","remainingToday","maxTransaction","basis","resetsAt"],"properties":{"asset":{"type":"string"},"dailyLimit":{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,6})?$","examples":["500.00"],"description":"Decimal string with at most 6 decimal places. Never a JSON number."},"spentToday":{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,6})?$","examples":["500.00"],"description":"Decimal string with at most 6 decimal places. Never a JSON number."},"remainingToday":{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,6})?$","examples":["500.00"],"description":"Decimal string with at most 6 decimal places. Never a JSON number."},"maxTransaction":{"type":"string","pattern":"^\\d{1,9}(\\.\\d{1,6})?$","examples":["500.00"],"description":"Decimal string with at most 6 decimal places. Never a JSON number."},"basis":{"const":"confirmed_executions"},"resetsAt":{"type":"string","format":"date-time"}}}}}}