addPolicy
curl --request POST \
--url https://rpc.etherspot.io/paymaster/addPolicy \
--header 'Content-Type: application/json' \
--header 'apikey: <apikey>' \
--data '
{
"walletAddress": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
"name": "Sample Policy",
"isPublic": true,
"isEnabled": true,
"description": "This is a sample policy",
"isApplicableToAllNetworks": true,
"enabledChains": [
123
],
"supportedEPVersions": [
"<string>"
],
"isPerpetual": true,
"startTime": "2023-11-07T05:31:56Z",
"endTime": "2023-11-07T05:31:56Z",
"globalMaximumApplicable": true,
"globalMaximumUsd": 123,
"globalMaximumNative": 123,
"globalMaximumOpCount": 123,
"perUserMaximumApplicable": true,
"perUserMaximumUsd": 123,
"perUserMaximumNative": 123,
"perUserMaximumOpCount": 123,
"perOpMaximumApplicable": true,
"perOpMaximumUsd": 123,
"perOpMaximumNative": 123
}
'import requests
url = "https://rpc.etherspot.io/paymaster/addPolicy"
payload = {
"walletAddress": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
"name": "Sample Policy",
"isPublic": True,
"isEnabled": True,
"description": "This is a sample policy",
"isApplicableToAllNetworks": True,
"enabledChains": [123],
"supportedEPVersions": ["<string>"],
"isPerpetual": True,
"startTime": "2023-11-07T05:31:56Z",
"endTime": "2023-11-07T05:31:56Z",
"globalMaximumApplicable": True,
"globalMaximumUsd": 123,
"globalMaximumNative": 123,
"globalMaximumOpCount": 123,
"perUserMaximumApplicable": True,
"perUserMaximumUsd": 123,
"perUserMaximumNative": 123,
"perUserMaximumOpCount": 123,
"perOpMaximumApplicable": True,
"perOpMaximumUsd": 123,
"perOpMaximumNative": 123
}
headers = {
"apikey": "<apikey>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<apikey>', 'Content-Type': 'application/json'},
body: JSON.stringify({
walletAddress: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8',
name: 'Sample Policy',
isPublic: true,
isEnabled: true,
description: 'This is a sample policy',
isApplicableToAllNetworks: true,
enabledChains: [123],
supportedEPVersions: ['<string>'],
isPerpetual: true,
startTime: '2023-11-07T05:31:56Z',
endTime: '2023-11-07T05:31:56Z',
globalMaximumApplicable: true,
globalMaximumUsd: 123,
globalMaximumNative: 123,
globalMaximumOpCount: 123,
perUserMaximumApplicable: true,
perUserMaximumUsd: 123,
perUserMaximumNative: 123,
perUserMaximumOpCount: 123,
perOpMaximumApplicable: true,
perOpMaximumUsd: 123,
perOpMaximumNative: 123
})
};
fetch('https://rpc.etherspot.io/paymaster/addPolicy', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://rpc.etherspot.io/paymaster/addPolicy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'walletAddress' => '0x70997970C51812dc3A010C7d01b50e0d17dc79C8',
'name' => 'Sample Policy',
'isPublic' => true,
'isEnabled' => true,
'description' => 'This is a sample policy',
'isApplicableToAllNetworks' => true,
'enabledChains' => [
123
],
'supportedEPVersions' => [
'<string>'
],
'isPerpetual' => true,
'startTime' => '2023-11-07T05:31:56Z',
'endTime' => '2023-11-07T05:31:56Z',
'globalMaximumApplicable' => true,
'globalMaximumUsd' => 123,
'globalMaximumNative' => 123,
'globalMaximumOpCount' => 123,
'perUserMaximumApplicable' => true,
'perUserMaximumUsd' => 123,
'perUserMaximumNative' => 123,
'perUserMaximumOpCount' => 123,
'perOpMaximumApplicable' => true,
'perOpMaximumUsd' => 123,
'perOpMaximumNative' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <apikey>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://rpc.etherspot.io/paymaster/addPolicy"
payload := strings.NewReader("{\n \"walletAddress\": \"0x70997970C51812dc3A010C7d01b50e0d17dc79C8\",\n \"name\": \"Sample Policy\",\n \"isPublic\": true,\n \"isEnabled\": true,\n \"description\": \"This is a sample policy\",\n \"isApplicableToAllNetworks\": true,\n \"enabledChains\": [\n 123\n ],\n \"supportedEPVersions\": [\n \"<string>\"\n ],\n \"isPerpetual\": true,\n \"startTime\": \"2023-11-07T05:31:56Z\",\n \"endTime\": \"2023-11-07T05:31:56Z\",\n \"globalMaximumApplicable\": true,\n \"globalMaximumUsd\": 123,\n \"globalMaximumNative\": 123,\n \"globalMaximumOpCount\": 123,\n \"perUserMaximumApplicable\": true,\n \"perUserMaximumUsd\": 123,\n \"perUserMaximumNative\": 123,\n \"perUserMaximumOpCount\": 123,\n \"perOpMaximumApplicable\": true,\n \"perOpMaximumUsd\": 123,\n \"perOpMaximumNative\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<apikey>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://rpc.etherspot.io/paymaster/addPolicy")
.header("apikey", "<apikey>")
.header("Content-Type", "application/json")
.body("{\n \"walletAddress\": \"0x70997970C51812dc3A010C7d01b50e0d17dc79C8\",\n \"name\": \"Sample Policy\",\n \"isPublic\": true,\n \"isEnabled\": true,\n \"description\": \"This is a sample policy\",\n \"isApplicableToAllNetworks\": true,\n \"enabledChains\": [\n 123\n ],\n \"supportedEPVersions\": [\n \"<string>\"\n ],\n \"isPerpetual\": true,\n \"startTime\": \"2023-11-07T05:31:56Z\",\n \"endTime\": \"2023-11-07T05:31:56Z\",\n \"globalMaximumApplicable\": true,\n \"globalMaximumUsd\": 123,\n \"globalMaximumNative\": 123,\n \"globalMaximumOpCount\": 123,\n \"perUserMaximumApplicable\": true,\n \"perUserMaximumUsd\": 123,\n \"perUserMaximumNative\": 123,\n \"perUserMaximumOpCount\": 123,\n \"perOpMaximumApplicable\": true,\n \"perOpMaximumUsd\": 123,\n \"perOpMaximumNative\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://rpc.etherspot.io/paymaster/addPolicy")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<apikey>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"walletAddress\": \"0x70997970C51812dc3A010C7d01b50e0d17dc79C8\",\n \"name\": \"Sample Policy\",\n \"isPublic\": true,\n \"isEnabled\": true,\n \"description\": \"This is a sample policy\",\n \"isApplicableToAllNetworks\": true,\n \"enabledChains\": [\n 123\n ],\n \"supportedEPVersions\": [\n \"<string>\"\n ],\n \"isPerpetual\": true,\n \"startTime\": \"2023-11-07T05:31:56Z\",\n \"endTime\": \"2023-11-07T05:31:56Z\",\n \"globalMaximumApplicable\": true,\n \"globalMaximumUsd\": 123,\n \"globalMaximumNative\": 123,\n \"globalMaximumOpCount\": 123,\n \"perUserMaximumApplicable\": true,\n \"perUserMaximumUsd\": 123,\n \"perUserMaximumNative\": 123,\n \"perUserMaximumOpCount\": 123,\n \"perOpMaximumApplicable\": true,\n \"perOpMaximumUsd\": 123,\n \"perOpMaximumNative\": 123\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"id": 123,
"walletAddress": "<string>",
"name": "<string>",
"description": "<string>",
"isPublic": true,
"isEnabled": true,
"isApplicableToAllNetworks": true,
"enabledChains": [
123
],
"supportedEPVersions": [
"<string>"
],
"isPerpetual": true,
"startTime": "2023-11-07T05:31:56Z",
"endTime": "2023-11-07T05:31:56Z",
"globalMaximumApplicable": true,
"globalMaximumUsd": "<string>",
"globalMaximumNative": "<string>",
"globalMaximumOpCount": 123,
"perUserMaximumApplicable": true,
"perUserMaximumUsd": "<string>",
"perUserMaximumNative": "<string>",
"perUserMaximumOpCount": 123,
"perOpMaximumApplicable": true,
"perOpMaximumUsd": "<string>",
"perOpMaximumNative": "<string>",
"addressAllowList": [
"<string>"
],
"addressBlockList": [
"<string>"
]
}{
"error": "API key is required in header"
}{
"error": "Wallet address does not match for the API key"
}{
"error": "Failed to create sponsorship policy"
}Arka (Paymaster) API calls
addPolicy
Creates a new policy with the provided details.
POST
/
addPolicy
addPolicy
curl --request POST \
--url https://rpc.etherspot.io/paymaster/addPolicy \
--header 'Content-Type: application/json' \
--header 'apikey: <apikey>' \
--data '
{
"walletAddress": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
"name": "Sample Policy",
"isPublic": true,
"isEnabled": true,
"description": "This is a sample policy",
"isApplicableToAllNetworks": true,
"enabledChains": [
123
],
"supportedEPVersions": [
"<string>"
],
"isPerpetual": true,
"startTime": "2023-11-07T05:31:56Z",
"endTime": "2023-11-07T05:31:56Z",
"globalMaximumApplicable": true,
"globalMaximumUsd": 123,
"globalMaximumNative": 123,
"globalMaximumOpCount": 123,
"perUserMaximumApplicable": true,
"perUserMaximumUsd": 123,
"perUserMaximumNative": 123,
"perUserMaximumOpCount": 123,
"perOpMaximumApplicable": true,
"perOpMaximumUsd": 123,
"perOpMaximumNative": 123
}
'import requests
url = "https://rpc.etherspot.io/paymaster/addPolicy"
payload = {
"walletAddress": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
"name": "Sample Policy",
"isPublic": True,
"isEnabled": True,
"description": "This is a sample policy",
"isApplicableToAllNetworks": True,
"enabledChains": [123],
"supportedEPVersions": ["<string>"],
"isPerpetual": True,
"startTime": "2023-11-07T05:31:56Z",
"endTime": "2023-11-07T05:31:56Z",
"globalMaximumApplicable": True,
"globalMaximumUsd": 123,
"globalMaximumNative": 123,
"globalMaximumOpCount": 123,
"perUserMaximumApplicable": True,
"perUserMaximumUsd": 123,
"perUserMaximumNative": 123,
"perUserMaximumOpCount": 123,
"perOpMaximumApplicable": True,
"perOpMaximumUsd": 123,
"perOpMaximumNative": 123
}
headers = {
"apikey": "<apikey>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<apikey>', 'Content-Type': 'application/json'},
body: JSON.stringify({
walletAddress: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8',
name: 'Sample Policy',
isPublic: true,
isEnabled: true,
description: 'This is a sample policy',
isApplicableToAllNetworks: true,
enabledChains: [123],
supportedEPVersions: ['<string>'],
isPerpetual: true,
startTime: '2023-11-07T05:31:56Z',
endTime: '2023-11-07T05:31:56Z',
globalMaximumApplicable: true,
globalMaximumUsd: 123,
globalMaximumNative: 123,
globalMaximumOpCount: 123,
perUserMaximumApplicable: true,
perUserMaximumUsd: 123,
perUserMaximumNative: 123,
perUserMaximumOpCount: 123,
perOpMaximumApplicable: true,
perOpMaximumUsd: 123,
perOpMaximumNative: 123
})
};
fetch('https://rpc.etherspot.io/paymaster/addPolicy', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://rpc.etherspot.io/paymaster/addPolicy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'walletAddress' => '0x70997970C51812dc3A010C7d01b50e0d17dc79C8',
'name' => 'Sample Policy',
'isPublic' => true,
'isEnabled' => true,
'description' => 'This is a sample policy',
'isApplicableToAllNetworks' => true,
'enabledChains' => [
123
],
'supportedEPVersions' => [
'<string>'
],
'isPerpetual' => true,
'startTime' => '2023-11-07T05:31:56Z',
'endTime' => '2023-11-07T05:31:56Z',
'globalMaximumApplicable' => true,
'globalMaximumUsd' => 123,
'globalMaximumNative' => 123,
'globalMaximumOpCount' => 123,
'perUserMaximumApplicable' => true,
'perUserMaximumUsd' => 123,
'perUserMaximumNative' => 123,
'perUserMaximumOpCount' => 123,
'perOpMaximumApplicable' => true,
'perOpMaximumUsd' => 123,
'perOpMaximumNative' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <apikey>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://rpc.etherspot.io/paymaster/addPolicy"
payload := strings.NewReader("{\n \"walletAddress\": \"0x70997970C51812dc3A010C7d01b50e0d17dc79C8\",\n \"name\": \"Sample Policy\",\n \"isPublic\": true,\n \"isEnabled\": true,\n \"description\": \"This is a sample policy\",\n \"isApplicableToAllNetworks\": true,\n \"enabledChains\": [\n 123\n ],\n \"supportedEPVersions\": [\n \"<string>\"\n ],\n \"isPerpetual\": true,\n \"startTime\": \"2023-11-07T05:31:56Z\",\n \"endTime\": \"2023-11-07T05:31:56Z\",\n \"globalMaximumApplicable\": true,\n \"globalMaximumUsd\": 123,\n \"globalMaximumNative\": 123,\n \"globalMaximumOpCount\": 123,\n \"perUserMaximumApplicable\": true,\n \"perUserMaximumUsd\": 123,\n \"perUserMaximumNative\": 123,\n \"perUserMaximumOpCount\": 123,\n \"perOpMaximumApplicable\": true,\n \"perOpMaximumUsd\": 123,\n \"perOpMaximumNative\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<apikey>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://rpc.etherspot.io/paymaster/addPolicy")
.header("apikey", "<apikey>")
.header("Content-Type", "application/json")
.body("{\n \"walletAddress\": \"0x70997970C51812dc3A010C7d01b50e0d17dc79C8\",\n \"name\": \"Sample Policy\",\n \"isPublic\": true,\n \"isEnabled\": true,\n \"description\": \"This is a sample policy\",\n \"isApplicableToAllNetworks\": true,\n \"enabledChains\": [\n 123\n ],\n \"supportedEPVersions\": [\n \"<string>\"\n ],\n \"isPerpetual\": true,\n \"startTime\": \"2023-11-07T05:31:56Z\",\n \"endTime\": \"2023-11-07T05:31:56Z\",\n \"globalMaximumApplicable\": true,\n \"globalMaximumUsd\": 123,\n \"globalMaximumNative\": 123,\n \"globalMaximumOpCount\": 123,\n \"perUserMaximumApplicable\": true,\n \"perUserMaximumUsd\": 123,\n \"perUserMaximumNative\": 123,\n \"perUserMaximumOpCount\": 123,\n \"perOpMaximumApplicable\": true,\n \"perOpMaximumUsd\": 123,\n \"perOpMaximumNative\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://rpc.etherspot.io/paymaster/addPolicy")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<apikey>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"walletAddress\": \"0x70997970C51812dc3A010C7d01b50e0d17dc79C8\",\n \"name\": \"Sample Policy\",\n \"isPublic\": true,\n \"isEnabled\": true,\n \"description\": \"This is a sample policy\",\n \"isApplicableToAllNetworks\": true,\n \"enabledChains\": [\n 123\n ],\n \"supportedEPVersions\": [\n \"<string>\"\n ],\n \"isPerpetual\": true,\n \"startTime\": \"2023-11-07T05:31:56Z\",\n \"endTime\": \"2023-11-07T05:31:56Z\",\n \"globalMaximumApplicable\": true,\n \"globalMaximumUsd\": 123,\n \"globalMaximumNative\": 123,\n \"globalMaximumOpCount\": 123,\n \"perUserMaximumApplicable\": true,\n \"perUserMaximumUsd\": 123,\n \"perUserMaximumNative\": 123,\n \"perUserMaximumOpCount\": 123,\n \"perOpMaximumApplicable\": true,\n \"perOpMaximumUsd\": 123,\n \"perOpMaximumNative\": 123\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"id": 123,
"walletAddress": "<string>",
"name": "<string>",
"description": "<string>",
"isPublic": true,
"isEnabled": true,
"isApplicableToAllNetworks": true,
"enabledChains": [
123
],
"supportedEPVersions": [
"<string>"
],
"isPerpetual": true,
"startTime": "2023-11-07T05:31:56Z",
"endTime": "2023-11-07T05:31:56Z",
"globalMaximumApplicable": true,
"globalMaximumUsd": "<string>",
"globalMaximumNative": "<string>",
"globalMaximumOpCount": 123,
"perUserMaximumApplicable": true,
"perUserMaximumUsd": "<string>",
"perUserMaximumNative": "<string>",
"perUserMaximumOpCount": 123,
"perOpMaximumApplicable": true,
"perOpMaximumUsd": "<string>",
"perOpMaximumNative": "<string>",
"addressAllowList": [
"<string>"
],
"addressBlockList": [
"<string>"
]
}{
"error": "API key is required in header"
}{
"error": "Wallet address does not match for the API key"
}{
"error": "Failed to create sponsorship policy"
}Example values you can use to demo the API:
Example response:
{
"walletAddress": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
"name": "Sample Policy",
"description": "This is a sample policy",
"isPublic": true,
"isEnabled": true,
"isApplicableToAllNetworks": false,
"enabledChains": [
80002
],
"supportedEPVersions": ["EPV_06", "EPV_07"],
"isPerpetual": false,
"startTime": "2024-06-26T00:40:00.000Z",
"endTime": "2024-06-27T23:59:59.999Z",
"globalMaximumApplicable": true,
"globalMaximumUsd": 5000,
"globalMaximumNative": 1000,
"globalMaximumOpCount": 1000,
"perUserMaximumApplicable": true,
"perUserMaximumUsd": 100,
"perUserMaximumNative": 200,
"perUserMaximumOpCount": 50,
"perOpMaximumApplicable": true,
"perOpMaximumUsd": 10,
"perOpMaximumNative": 20
}
{
"createdAt": "2024-06-30T17:39:26.938Z",
"updatedAt": "2024-06-30T17:39:26.939Z",
"id": 5,
"walletAddress": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
"name": "Sample Policy",
"description": "This is a sample policy",
"isPublic": true,
"isEnabled": true,
"isApplicableToAllNetworks": false,
"enabledChains": [
80002
],
"supportedEPVersions": [
"EPV_06",
"EPV_07"
],
"isPerpetual": false,
"startTime": "2024-06-26T00:40:00.000Z",
"endTime": "2024-06-27T23:59:59.999Z",
"globalMaximumApplicable": true,
"globalMaximumUsd": "5000.0000",
"globalMaximumNative": "1000.000000000000000000",
"globalMaximumOpCount": 1000,
"perUserMaximumApplicable": true,
"perUserMaximumUsd": "100.0000",
"perUserMaximumNative": "200.000000000000000000",
"perUserMaximumOpCount": 50,
"perOpMaximumApplicable": true,
"perOpMaximumUsd": "10.0000",
"perOpMaximumNative": "20.000000000000000000",
"addressAllowList": null,
"addressBlockList": null
}
Headers
API key for authentication
Body
application/json
Example:
"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
Example:
"Sample Policy"
Example:
"This is a sample policy"
Response
Policy created successfully
⌘I

