From 3cfb49709f2595ca7912fde8861c2585b676bb9f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 06:23:29 +0000 Subject: [PATCH] chore: refresh store codegen snapshot --- packages/store/scripts/api-schema/schema.json | 1170 +++++++++++++++-- .../src/gateway/AUTO_GENERATED/.schema-hash | 2 +- .../src/gateway/AUTO_GENERATED/delegates.ts | 93 ++ .../src/gateway/AUTO_GENERATED/messages.ts | 30 +- .../src/gateway/AUTO_GENERATED/spaces.ts | 4 +- .../gateway/AUTO_GENERATED/transactions.ts | 18 + 6 files changed, 1196 insertions(+), 121 deletions(-) diff --git a/packages/store/scripts/api-schema/schema.json b/packages/store/scripts/api-schema/schema.json index c87e902641..40ad10ec99 100644 --- a/packages/store/scripts/api-schema/schema.json +++ b/packages/store/scripts/api-schema/schema.json @@ -592,6 +592,136 @@ ] } }, + "/v1/billing/spaces/{spaceId}/subscriptions/{subscriptionId}/preview-update": { + "get": { + "operationId": "billingPreviewSubscriptionUpdateV1", + "parameters": [ + { + "name": "subscriptionId", + "required": true, + "in": "path", + "description": "Subscription identifier", + "schema": { + "type": "string" + } + }, + { + "name": "planId", + "required": true, + "in": "query", + "description": "The price id of the plan to preview", + "schema": { + "type": "string" + } + }, + { + "name": "spaceId", + "required": true, + "in": "path", + "description": "Space UUID", + "schema": { + "example": "123e4567-e89b-12d3-a456-426614174000", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SubscriptionUpdatePreview" + } + } + } + }, + "403": { + "description": "Not a member, or a plan this workspace is not offered" + }, + "404": { + "description": "Subscription not found" + }, + "409": { + "description": "Already on this plan" + }, + "422": { + "description": "Malformed subscriptionId or planId" + } + }, + "summary": "Preview what moving a subscription to another plan would cost", + "tags": [ + "billing" + ] + } + }, + "/v1/billing/spaces/{spaceId}/subscriptions/{subscriptionId}": { + "patch": { + "operationId": "billingUpdateSubscriptionV1", + "parameters": [ + { + "name": "subscriptionId", + "required": true, + "in": "path", + "description": "Subscription identifier", + "schema": { + "type": "string" + } + }, + { + "name": "spaceId", + "required": true, + "in": "path", + "description": "Space UUID", + "schema": { + "example": "123e4567-e89b-12d3-a456-426614174000", + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSubscriptionDto" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSubscriptionResult" + } + } + } + }, + "403": { + "description": "Not a member, or a plan this workspace is not offered" + }, + "404": { + "description": "Subscription not found" + }, + "409": { + "description": "Already on this plan, the subscription is not updatable, or several offered links sell the plan and none was named" + }, + "422": { + "description": "The named payment link does not offer this plan" + }, + "502": { + "description": "The billing service reported the plan change as unsuccessful" + } + }, + "summary": "Move a subscription onto another plan", + "tags": [ + "billing" + ] + } + }, "/v1/billing/sessions/{sessionId}": { "get": { "operationId": "billingGetCheckoutSessionV1", @@ -1853,6 +1983,9 @@ }, "404": { "description": "Message not found" + }, + "422": { + "description": "Invalid chainId or messageHash" } }, "summary": "Get message by hash", @@ -1908,6 +2041,9 @@ }, "404": { "description": "Safe not found on the specified chain" + }, + "422": { + "description": "Invalid chainId or safeAddress" } }, "summary": "Get messages for Safe", @@ -1956,6 +2092,9 @@ }, "400": { "description": "Invalid message format or signature" + }, + "422": { + "description": "Invalid chainId, safeAddress or request body" } }, "summary": "Create message", @@ -2009,6 +2148,9 @@ }, "404": { "description": "Message not found" + }, + "422": { + "description": "Invalid chainId, messageHash or request body" } }, "summary": "Add message signature", @@ -3792,6 +3934,81 @@ ] } }, + "/v1/spaces/{spaceId}/chains/{chainId}/relay": { + "post": { + "description": "Relays a Safe transaction against the workspace's sponsored-transaction allowance, which its plan grants and this spends one unit of per call — a batch included. Unlike the chain-scoped relay endpoint, the chain's own relayer policy does not apply: the allowance is the only limit. A call acting on an existing Safe is admitted only for a Safe the workspace holds; a Safe creation or a passkey signer deployment, having no Safe yet, is admitted as it is there.", + "operationId": "spaceRelayRelayV1", + "parameters": [ + { + "name": "chainId", + "required": true, + "in": "path", + "description": "Chain ID where the Safe transaction will be executed", + "schema": { + "example": "1", + "type": "string" + } + }, + { + "name": "spaceId", + "required": true, + "in": "path", + "description": "Space UUID", + "schema": { + "example": "123e4567-e89b-12d3-a456-426614174000", + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpaceRelayDto" + } + } + } + }, + "responses": { + "201": { + "description": "Transaction relayed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Relay" + } + } + } + }, + "400": { + "description": "Malformed workspace identifier" + }, + "401": { + "description": "Authentication required" + }, + "402": { + "description": "The workspace's sponsored-transaction allowance is spent. The body carries `quota`, `used` and `resetsAt` so a client can offer to pay for the transaction itself." + }, + "403": { + "description": "Not a member of the workspace, the Safe is not one it holds, the chain has no relayer, or the transaction was denied" + }, + "404": { + "description": "Workspace not found" + }, + "422": { + "description": "Request failed schema validation, or the transaction was simulated and would revert (SIMULATION_FAILED) or could not be simulated (INDETERMINATE_SIMULATION)" + }, + "501": { + "description": "The chain's relayer type is not supported" + } + }, + "summary": "Relay a transaction at a workspace's expense", + "tags": [ + "relay" + ] + } + }, "/v1/chains/{chainId}/owners/{ownerAddress}/safes": { "get": { "description": "Retrieves a list of Safe addresses that are owned by the specified address on a specific chain.", @@ -6037,94 +6254,426 @@ ] } }, - "/v1/register/notifications": { - "post": { - "deprecated": true, - "description": "Registers a device to receive push notifications for Safe events. This endpoint is deprecated, please use the v2 version instead.", - "operationId": "notificationsRegisterDeviceV1", - "parameters": [], - "requestBody": { - "required": true, - "description": "Device registration data including device token, UUID, and Safe registrations with signatures", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RegisterDeviceDto" - } - } - } - }, - "responses": { - "200": { - "description": "Device registered successfully for notifications" - }, - "400": { - "description": "Invalid device data, expired timestamp, or invalid signature" - } - }, - "summary": "Register device for notifications (deprecated)", - "tags": [ - "notifications" - ] - } - }, - "/v1/chains/{chainId}/notifications/devices/{uuid}": { - "delete": { - "deprecated": true, - "description": "Removes a device from receiving notifications. This endpoint is deprecated, please use the v2 version instead.", - "operationId": "notificationsUnregisterDeviceV1", + "/v3/chains/{chainId}/delegates": { + "get": { + "description": "Retrieves a paginated list of delegates for a specific chain with optional filtering by Safe, delegate, delegator, or label.", + "operationId": "delegatesGetDelegatesV3", "parameters": [ { "name": "chainId", "required": true, "in": "path", - "description": "Chain ID (kept for backward compatibility)", + "description": "Chain ID where delegates are registered", "schema": { "example": "1", "type": "string" } }, { - "name": "uuid", - "required": true, - "in": "path", - "description": "Device UUID to unregister", + "name": "cursor", + "required": false, + "in": "query", + "description": "Pagination cursor for retrieving the next set of results", "schema": { - "example": "550e8400-e29b-41d4-a716-446655440000", "type": "string" } - } - ], - "responses": { - "204": { - "description": "Device unregistered successfully" - } - }, - "summary": "Unregister device (deprecated)", - "tags": [ - "notifications" - ] - } - }, - "/v1/chains/{chainId}/notifications/devices/{uuid}/safes/{safeAddress}": { - "delete": { - "deprecated": true, - "description": "Removes a specific Safe from receiving notifications on a device. This endpoint is deprecated, please use the v2 version instead.", - "operationId": "notificationsUnregisterSafeV1", - "parameters": [ + }, { - "name": "chainId", - "required": true, - "in": "path", - "description": "Chain ID where the Safe is deployed", + "name": "label", + "required": false, + "in": "query", + "description": "Filter by delegate label or name", "schema": { - "example": "1", "type": "string" } }, { - "name": "uuid", - "required": true, + "name": "delegator", + "required": false, + "in": "query", + "description": "Filter by delegator address (0x prefixed hex string)", + "schema": { + "type": "string" + } + }, + { + "name": "delegate", + "required": false, + "in": "query", + "description": "Filter by delegate address (0x prefixed hex string)", + "schema": { + "type": "string" + } + }, + { + "name": "safe", + "required": false, + "in": "query", + "description": "Filter by Safe address (0x prefixed hex string)", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Paginated list of delegates retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DelegatePage" + } + } + } + } + }, + "summary": "Get delegates", + "tags": [ + "delegates" + ] + }, + "post": { + "description": "Creates a new delegate relationship between a Safe and a delegate address. Requires proper authorization signature.", + "operationId": "delegatesPostDelegateV3", + "parameters": [ + { + "name": "chainId", + "required": true, + "in": "path", + "description": "Chain ID where the delegate will be registered", + "schema": { + "example": "1", + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "description": "Delegate creation data including Safe address, delegate address, label, and authorization signature", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateDelegateDto" + } + } + } + }, + "responses": { + "204": { + "description": "Delegate created successfully" + }, + "400": { + "description": "Invalid delegate data, signature, or unauthorized creation attempt" + } + }, + "summary": "Create delegate", + "tags": [ + "delegates" + ] + }, + "patch": { + "description": "Updates an existing delegate relationship (e.g. the delegate label). Requires proper authorization signature.", + "operationId": "delegatesUpdateDelegateV3", + "parameters": [ + { + "name": "chainId", + "required": true, + "in": "path", + "description": "Chain ID where the delegate is registered", + "schema": { + "example": "1", + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "description": "Delegate update data including Safe address, delegate address, delegator, label, and authorization signature", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateDelegateV3Dto" + } + } + } + }, + "responses": { + "204": { + "description": "Delegate updated successfully" + }, + "400": { + "description": "Invalid delegate data, signature, or unauthorized update attempt" + } + }, + "summary": "Update delegate", + "tags": [ + "delegates" + ] + } + }, + "/v3/chains/{chainId}/delegates/{delegateAddress}": { + "delete": { + "description": "Removes a delegate relationship for a specific delegate address. Requires proper authorization signature.", + "operationId": "delegatesDeleteDelegateV3", + "parameters": [ + { + "name": "chainId", + "required": true, + "in": "path", + "description": "Chain ID where the delegate is registered", + "schema": { + "example": "1", + "type": "string" + } + }, + { + "name": "delegateAddress", + "required": true, + "in": "path", + "description": "Delegate address to remove (0x prefixed hex string)", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "description": "Signature and data proving authorization to delete the delegate", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteDelegateV3Dto" + } + } + } + }, + "responses": { + "204": { + "description": "Delegate deleted successfully" + }, + "400": { + "description": "Invalid signature or unauthorized deletion attempt" + } + }, + "summary": "Delete delegate", + "tags": [ + "delegates" + ] + } + }, + "/v1/chains/{chainId}/tokens/{address}": { + "get": { + "description": "Symbol, name, decimals, logo and trust flag of a token on the given chain, as known by the Transaction Service.", + "operationId": "tokensGetTokenV1", + "parameters": [ + { + "name": "chainId", + "required": true, + "in": "path", + "description": "Chain ID the token is deployed on", + "schema": { + "example": "1", + "type": "string" + } + }, + { + "name": "address", + "required": true, + "in": "path", + "description": "Token contract address (0x prefixed hex string)", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Token metadata", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/NativeTokenMetadata" + }, + { + "$ref": "#/components/schemas/Erc20TokenMetadata" + }, + { + "$ref": "#/components/schemas/Erc721TokenMetadata" + } + ] + } + } + } + }, + "404": { + "description": "The Transaction Service does not know this token" + }, + "422": { + "description": "Invalid chain ID or address" + }, + "429": { + "description": "Rate limit exceeded" + } + }, + "summary": "Get token metadata", + "tags": [ + "tokens" + ] + } + }, + "/v1/chains/{chainId}/tokens": { + "get": { + "description": "Metadata for up to 20 tokens of one chain, in request order. Addresses the Transaction Service does not know are omitted.", + "operationId": "tokensGetTokensV1", + "parameters": [ + { + "name": "chainId", + "required": true, + "in": "path", + "description": "Chain ID the token is deployed on", + "schema": { + "example": "1", + "type": "string" + } + }, + { + "name": "addresses", + "required": true, + "in": "query", + "description": "Comma-separated token contract addresses, at most 20", + "schema": { + "example": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,0xdAC17F958D2ee523a2206206994597C13D831ec7", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Token metadata for the known addresses, in request order", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/NativeTokenMetadata" + }, + { + "$ref": "#/components/schemas/Erc20TokenMetadata" + }, + { + "$ref": "#/components/schemas/Erc721TokenMetadata" + } + ] + } + } + } + } + }, + "422": { + "description": "Invalid chain ID, malformed address, empty list or more than 20 addresses" + }, + "429": { + "description": "Rate limit exceeded" + } + }, + "summary": "Get metadata for several tokens", + "tags": [ + "tokens" + ] + } + }, + "/v1/register/notifications": { + "post": { + "deprecated": true, + "description": "Registers a device to receive push notifications for Safe events. This endpoint is deprecated, please use the v2 version instead.", + "operationId": "notificationsRegisterDeviceV1", + "parameters": [], + "requestBody": { + "required": true, + "description": "Device registration data including device token, UUID, and Safe registrations with signatures", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RegisterDeviceDto" + } + } + } + }, + "responses": { + "200": { + "description": "Device registered successfully for notifications" + }, + "400": { + "description": "Invalid device data, expired timestamp, or invalid signature" + } + }, + "summary": "Register device for notifications (deprecated)", + "tags": [ + "notifications" + ] + } + }, + "/v1/chains/{chainId}/notifications/devices/{uuid}": { + "delete": { + "deprecated": true, + "description": "Removes a device from receiving notifications. This endpoint is deprecated, please use the v2 version instead.", + "operationId": "notificationsUnregisterDeviceV1", + "parameters": [ + { + "name": "chainId", + "required": true, + "in": "path", + "description": "Chain ID (kept for backward compatibility)", + "schema": { + "example": "1", + "type": "string" + } + }, + { + "name": "uuid", + "required": true, + "in": "path", + "description": "Device UUID to unregister", + "schema": { + "example": "550e8400-e29b-41d4-a716-446655440000", + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Device unregistered successfully" + } + }, + "summary": "Unregister device (deprecated)", + "tags": [ + "notifications" + ] + } + }, + "/v1/chains/{chainId}/notifications/devices/{uuid}/safes/{safeAddress}": { + "delete": { + "deprecated": true, + "description": "Removes a specific Safe from receiving notifications on a device. This endpoint is deprecated, please use the v2 version instead.", + "operationId": "notificationsUnregisterSafeV1", + "parameters": [ + { + "name": "chainId", + "required": true, + "in": "path", + "description": "Chain ID where the Safe is deployed", + "schema": { + "example": "1", + "type": "string" + } + }, + { + "name": "uuid", + "required": true, "in": "path", "description": "Device UUID", "schema": { @@ -6945,6 +7494,10 @@ "items": { "type": "object" } + }, + "trialPeriodDays": { + "type": "number", + "nullable": true } }, "required": [ @@ -6969,6 +7522,84 @@ "url" ] }, + "PreviewLineItem": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "amount": { + "type": "number", + "description": "Signed amount in minor units; negative for credit on unused time" + }, + "currency": { + "type": "string" + } + }, + "required": [ + "description", + "amount", + "currency" + ] + }, + "SubscriptionUpdatePreview": { + "type": "object", + "properties": { + "amountDue": { + "type": "number" + }, + "currency": { + "type": "string" + }, + "nextBillingDate": { + "type": "number", + "description": "Unix timestamp in seconds" + }, + "lineItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PreviewLineItem" + } + } + }, + "required": [ + "amountDue", + "currency", + "nextBillingDate", + "lineItems" + ] + }, + "UpdateSubscriptionDto": { + "type": "object", + "properties": { + "planId": { + "type": "string", + "description": "The price id of the plan to move the subscription onto" + }, + "paymentLinkId": { + "type": "string", + "description": "Which offered payment link sells that plan. Only needed to disambiguate when several do" + } + }, + "required": [ + "planId" + ] + }, + "UpdateSubscriptionResult": { + "type": "object", + "properties": { + "subscriptionId": { + "type": "string" + }, + "success": { + "type": "boolean" + } + }, + "required": [ + "subscriptionId", + "success" + ] + }, "CheckoutSession": { "type": "object", "properties": { @@ -9182,6 +9813,29 @@ "signature" ] }, + "SafeAppInfo": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "logoUri": { + "type": "string", + "nullable": true + } + }, + "required": [ + "id", + "name", + "url" + ] + }, "Message": { "type": "object", "properties": { @@ -9197,11 +9851,13 @@ }, "logoUri": { "type": "string", - "nullable": true + "nullable": true, + "deprecated": true }, "name": { "type": "string", - "nullable": true + "nullable": true, + "deprecated": true }, "message": { "oneOf": [ @@ -9226,7 +9882,13 @@ "type": "number" }, "proposedBy": { - "$ref": "#/components/schemas/AddressInfo" + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/AddressInfo" + } + ] }, "confirmations": { "type": "array", @@ -9241,18 +9903,38 @@ "origin": { "type": "string", "nullable": true + }, + "safeAppInfo": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/SafeAppInfo" + } + ] + }, + "safeAppId": { + "type": "number", + "nullable": true, + "deprecated": true } }, "required": [ "messageHash", "status", + "logoUri", + "name", "message", "creationTimestamp", "modifiedTimestamp", "confirmationsSubmitted", "confirmationsRequired", "proposedBy", - "confirmations" + "confirmations", + "preparedSignature", + "origin", + "safeAppInfo", + "safeAppId" ] }, "MessageItem": { @@ -9270,11 +9952,13 @@ }, "logoUri": { "type": "string", - "nullable": true + "nullable": true, + "deprecated": true }, "name": { "type": "string", - "nullable": true + "nullable": true, + "deprecated": true }, "message": { "oneOf": [ @@ -9299,7 +9983,13 @@ "type": "number" }, "proposedBy": { - "$ref": "#/components/schemas/AddressInfo" + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/AddressInfo" + } + ] }, "confirmations": { "type": "array", @@ -9315,6 +10005,20 @@ "type": "string", "nullable": true }, + "safeAppInfo": { + "nullable": true, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/SafeAppInfo" + } + ] + }, + "safeAppId": { + "type": "number", + "nullable": true, + "deprecated": true + }, "type": { "type": "string", "enum": [ @@ -9325,6 +10029,8 @@ "required": [ "messageHash", "status", + "logoUri", + "name", "message", "creationTimestamp", "modifiedTimestamp", @@ -9332,6 +10038,10 @@ "confirmationsRequired", "proposedBy", "confirmations", + "preparedSignature", + "origin", + "safeAppInfo", + "safeAppId", "type" ] }, @@ -9880,7 +10590,9 @@ "SAFE_ADDED", "SAFE_REMOVED", "ADDRESS_BOOK_UPSERTED", - "ADDRESS_BOOK_DELETED" + "ADDRESS_BOOK_DELETED", + "ADDRESS_BOOK_REQUEST_CREATED", + "ADDRESS_BOOK_REQUEST_REJECTED" ] }, "actorUserId": { @@ -10731,7 +11443,8 @@ "FeatureKey": { "type": "string", "enum": [ - "safe_seats" + "safe_seats", + "sponsored_transactions" ], "description": "Feature key from the entitlements catalog." }, @@ -10906,8 +11619,46 @@ } }, "required": [ - "plan", - "entitlements" + "plan", + "entitlements" + ] + }, + "SpaceRelayDto": { + "type": "object", + "properties": { + "version": { + "type": "string" + }, + "to": { + "type": "string" + }, + "data": { + "type": "string" + }, + "safeTxHash": { + "type": "string", + "description": "Safe transaction hash, forwarded to the relay provider for traceability. Not verified against the calldata on this route." + }, + "acceptUnverifiedSimulation": { + "type": "boolean", + "description": "Set to true to proceed with the relay when a previous attempt returned INDETERMINATE_SIMULATION. The user has acknowledged the simulation could not be completed and accepts the risk." + } + }, + "required": [ + "version", + "to", + "data" + ] + }, + "Relay": { + "type": "object", + "properties": { + "taskId": { + "type": "string" + } + }, + "required": [ + "taskId" ] }, "SafeList": { @@ -10956,17 +11707,6 @@ "data" ] }, - "Relay": { - "type": "object", - "properties": { - "taskId": { - "type": "string" - } - }, - "required": [ - "taskId" - ] - }, "RelayErrorResponse": { "type": "object", "properties": { @@ -14355,25 +15095,6 @@ "address" ] }, - "SafeAppInfo": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "url": { - "type": "string" - }, - "logoUri": { - "type": "string", - "nullable": true - } - }, - "required": [ - "name", - "url" - ] - }, "TransactionDetails": { "type": "object", "properties": { @@ -15084,6 +15805,64 @@ "results" ] }, + "NestedTransactionDto": { + "type": "object", + "properties": { + "to": { + "type": "string", + "nullable": true + }, + "value": { + "type": "string" + }, + "data": { + "type": "string", + "nullable": true + }, + "operation": { + "description": "Operation type: 0 for CALL, 1 for DELEGATE", + "allOf": [ + { + "$ref": "#/components/schemas/Operation" + } + ] + }, + "safeTxGas": { + "type": "string" + }, + "baseGas": { + "type": "string" + }, + "gasPrice": { + "type": "string" + }, + "gasToken": { + "type": "string", + "nullable": true + }, + "refundReceiver": { + "type": "string", + "nullable": true + }, + "nonce": { + "type": "string", + "description": "The nested Safe's nonce" + }, + "notes": { + "type": "string", + "nullable": true, + "maxLength": 200 + } + }, + "required": [ + "value", + "operation", + "safeTxGas", + "baseGas", + "gasPrice", + "nonce" + ] + }, "ProposeTransactionDto": { "type": "object", "properties": { @@ -15137,6 +15916,16 @@ "origin": { "type": "string", "nullable": true + }, + "nestedTransaction": { + "nullable": true, + "description": "A child transaction for a second Safe, authorised by the parent transaction being an `approveHash` call committing to its hash. Unknown keys are rejected.", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/NestedTransactionDto" + } + ] } }, "required": [ @@ -15435,6 +16224,169 @@ "signature" ] }, + "UpdateDelegateV3Dto": { + "type": "object", + "properties": { + "safe": { + "type": "string", + "nullable": true + }, + "delegate": { + "type": "string" + }, + "delegator": { + "type": "string" + }, + "signature": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "delegate", + "delegator", + "signature", + "label" + ] + }, + "DeleteDelegateV3Dto": { + "type": "object", + "properties": { + "delegator": { + "type": "string", + "nullable": true + }, + "safe": { + "type": "string", + "nullable": true + }, + "signature": { + "type": "string" + } + }, + "required": [ + "signature" + ] + }, + "NativeTokenMetadata": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "decimals": { + "type": "number" + }, + "logoUri": { + "type": "string" + }, + "name": { + "type": "string" + }, + "symbol": { + "type": "string" + }, + "trusted": { + "type": "boolean", + "description": "Whether the Transaction Service lists the token in one of its imported token lists" + }, + "type": { + "type": "string", + "enum": [ + "NATIVE_TOKEN" + ] + } + }, + "required": [ + "address", + "decimals", + "logoUri", + "name", + "symbol", + "trusted", + "type" + ] + }, + "Erc20TokenMetadata": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "decimals": { + "type": "number" + }, + "logoUri": { + "type": "string" + }, + "name": { + "type": "string" + }, + "symbol": { + "type": "string" + }, + "trusted": { + "type": "boolean", + "description": "Whether the Transaction Service lists the token in one of its imported token lists" + }, + "type": { + "type": "string", + "enum": [ + "ERC20" + ] + } + }, + "required": [ + "address", + "decimals", + "logoUri", + "name", + "symbol", + "trusted", + "type" + ] + }, + "Erc721TokenMetadata": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "decimals": { + "type": "number" + }, + "logoUri": { + "type": "string" + }, + "name": { + "type": "string" + }, + "symbol": { + "type": "string" + }, + "trusted": { + "type": "boolean", + "description": "Whether the Transaction Service lists the token in one of its imported token lists" + }, + "type": { + "type": "string", + "enum": [ + "ERC721" + ] + } + }, + "required": [ + "address", + "decimals", + "logoUri", + "name", + "symbol", + "trusted", + "type" + ] + }, "SafeRegistration": { "type": "object", "properties": { diff --git a/packages/store/src/gateway/AUTO_GENERATED/.schema-hash b/packages/store/src/gateway/AUTO_GENERATED/.schema-hash index 3de9ddc227..05395d97dd 100644 --- a/packages/store/src/gateway/AUTO_GENERATED/.schema-hash +++ b/packages/store/src/gateway/AUTO_GENERATED/.schema-hash @@ -1 +1 @@ -e9984df7d8acc32efa5370bd62918903c1a9aedda334828d00ef55ff0e922556 +d3a67b477ce8fd567e286cb6cfa8abc36ff2451b0149cf9bd1f4c775e16f8c0d diff --git a/packages/store/src/gateway/AUTO_GENERATED/delegates.ts b/packages/store/src/gateway/AUTO_GENERATED/delegates.ts index 1cee45c510..4f7910b2ef 100644 --- a/packages/store/src/gateway/AUTO_GENERATED/delegates.ts +++ b/packages/store/src/gateway/AUTO_GENERATED/delegates.ts @@ -64,6 +64,43 @@ const injectedRtkApi = api }), invalidatesTags: ['delegates'], }), + delegatesGetDelegatesV3: build.query({ + query: (queryArg) => ({ + url: `/v3/chains/${queryArg.chainId}/delegates`, + params: { + cursor: queryArg.cursor, + label: queryArg.label, + delegator: queryArg.delegator, + delegate: queryArg.delegate, + safe: queryArg.safe, + }, + }), + providesTags: ['delegates'], + }), + delegatesPostDelegateV3: build.mutation({ + query: (queryArg) => ({ + url: `/v3/chains/${queryArg.chainId}/delegates`, + method: 'POST', + body: queryArg.createDelegateDto, + }), + invalidatesTags: ['delegates'], + }), + delegatesUpdateDelegateV3: build.mutation({ + query: (queryArg) => ({ + url: `/v3/chains/${queryArg.chainId}/delegates`, + method: 'PATCH', + body: queryArg.updateDelegateV3Dto, + }), + invalidatesTags: ['delegates'], + }), + delegatesDeleteDelegateV3: build.mutation({ + query: (queryArg) => ({ + url: `/v3/chains/${queryArg.chainId}/delegates/${queryArg.delegateAddress}`, + method: 'DELETE', + body: queryArg.deleteDelegateV3Dto, + }), + invalidatesTags: ['delegates'], + }), }), overrideExisting: false, }) @@ -132,6 +169,45 @@ export type DelegatesDeleteDelegateV2ApiArg = { /** Signature and data proving authorization to delete the delegate */ deleteDelegateV2Dto: DeleteDelegateV2Dto } +export type DelegatesGetDelegatesV3ApiResponse = + /** status 200 Paginated list of delegates retrieved successfully */ DelegatePage +export type DelegatesGetDelegatesV3ApiArg = { + /** Chain ID where delegates are registered */ + chainId: string + /** Pagination cursor for retrieving the next set of results */ + cursor?: string + /** Filter by delegate label or name */ + label?: string + /** Filter by delegator address (0x prefixed hex string) */ + delegator?: string + /** Filter by delegate address (0x prefixed hex string) */ + delegate?: string + /** Filter by Safe address (0x prefixed hex string) */ + safe?: string +} +export type DelegatesPostDelegateV3ApiResponse = unknown +export type DelegatesPostDelegateV3ApiArg = { + /** Chain ID where the delegate will be registered */ + chainId: string + /** Delegate creation data including Safe address, delegate address, label, and authorization signature */ + createDelegateDto: CreateDelegateDto +} +export type DelegatesUpdateDelegateV3ApiResponse = unknown +export type DelegatesUpdateDelegateV3ApiArg = { + /** Chain ID where the delegate is registered */ + chainId: string + /** Delegate update data including Safe address, delegate address, delegator, label, and authorization signature */ + updateDelegateV3Dto: UpdateDelegateV3Dto +} +export type DelegatesDeleteDelegateV3ApiResponse = unknown +export type DelegatesDeleteDelegateV3ApiArg = { + /** Chain ID where the delegate is registered */ + chainId: string + /** Delegate address to remove (0x prefixed hex string) */ + delegateAddress: string + /** Signature and data proving authorization to delete the delegate */ + deleteDelegateV3Dto: DeleteDelegateV3Dto +} export type Delegate = { safe?: string | null delegate: string @@ -161,6 +237,18 @@ export type DeleteDelegateV2Dto = { safe?: string | null signature: string } +export type UpdateDelegateV3Dto = { + safe?: string | null + delegate: string + delegator: string + signature: string + label: string +} +export type DeleteDelegateV3Dto = { + delegator?: string | null + safe?: string | null + signature: string +} export const { useDelegatesGetDelegatesV1Query, useLazyDelegatesGetDelegatesV1Query, @@ -170,4 +258,9 @@ export const { useLazyDelegatesGetDelegatesV2Query, useDelegatesPostDelegateV2Mutation, useDelegatesDeleteDelegateV2Mutation, + useDelegatesGetDelegatesV3Query, + useLazyDelegatesGetDelegatesV3Query, + useDelegatesPostDelegateV3Mutation, + useDelegatesUpdateDelegateV3Mutation, + useDelegatesDeleteDelegateV3Mutation, } = injectedRtkApi diff --git a/packages/store/src/gateway/AUTO_GENERATED/messages.ts b/packages/store/src/gateway/AUTO_GENERATED/messages.ts index d552d041f7..de701806da 100644 --- a/packages/store/src/gateway/AUTO_GENERATED/messages.ts +++ b/packages/store/src/gateway/AUTO_GENERATED/messages.ts @@ -110,35 +110,45 @@ export type MessageConfirmation = { owner: AddressInfo signature: string } +export type SafeAppInfo = { + id: number + name: string + url: string + logoUri?: string | null +} export type Message = { messageHash: string status: 'NEEDS_CONFIRMATION' | 'CONFIRMED' - logoUri?: string | null - name?: string | null + logoUri: string | null + name: string | null message: string | TypedData creationTimestamp: number modifiedTimestamp: number confirmationsSubmitted: number confirmationsRequired: number - proposedBy: AddressInfo + proposedBy: AddressInfo | null confirmations: MessageConfirmation[] - preparedSignature?: string | null - origin?: string | null + preparedSignature: string | null + origin: string | null + safeAppInfo: SafeAppInfo | null + safeAppId: number | null } export type MessageItem = { messageHash: string status: 'NEEDS_CONFIRMATION' | 'CONFIRMED' - logoUri?: string | null - name?: string | null + logoUri: string | null + name: string | null message: string | TypedData creationTimestamp: number modifiedTimestamp: number confirmationsSubmitted: number confirmationsRequired: number - proposedBy: AddressInfo + proposedBy: AddressInfo | null confirmations: MessageConfirmation[] - preparedSignature?: string | null - origin?: string | null + preparedSignature: string | null + origin: string | null + safeAppInfo: SafeAppInfo | null + safeAppId: number | null type: 'MESSAGE' } export type DateLabel = { diff --git a/packages/store/src/gateway/AUTO_GENERATED/spaces.ts b/packages/store/src/gateway/AUTO_GENERATED/spaces.ts index b9cb1d8fa2..6d9ec80ea0 100644 --- a/packages/store/src/gateway/AUTO_GENERATED/spaces.ts +++ b/packages/store/src/gateway/AUTO_GENERATED/spaces.ts @@ -515,6 +515,8 @@ export type SpaceAuditLogEntryDto = { | 'SAFE_REMOVED' | 'ADDRESS_BOOK_UPSERTED' | 'ADDRESS_BOOK_DELETED' + | 'ADDRESS_BOOK_REQUEST_CREATED' + | 'ADDRESS_BOOK_REQUEST_REJECTED' actorUserId: number /** Resolved (and masked) display string of the acting user. */ actor: string @@ -631,7 +633,7 @@ export type EntitlementsPlan = { /** End of the current billing cycle */ cycleEndsAt: string | null } -export type FeatureKey = 'safe_seats' +export type FeatureKey = 'safe_seats' | 'sponsored_transactions' export type BinaryEntitlement = { /** Feature key from the entitlements catalog. */ feature: FeatureKey diff --git a/packages/store/src/gateway/AUTO_GENERATED/transactions.ts b/packages/store/src/gateway/AUTO_GENERATED/transactions.ts index 95702cf601..e7681f330a 100644 --- a/packages/store/src/gateway/AUTO_GENERATED/transactions.ts +++ b/packages/store/src/gateway/AUTO_GENERATED/transactions.ts @@ -809,6 +809,7 @@ export type ModuleExecutionDetails = { address: AddressInfo } export type SafeAppInfo = { + id: number name: string url: string logoUri?: string | null @@ -975,6 +976,21 @@ export type TransactionItemPage = { previous?: string | null results: (TransactionItem | DateLabel)[] } +export type NestedTransactionDto = { + to?: string | null + value: string + data?: string | null + /** Operation type: 0 for CALL, 1 for DELEGATE */ + operation: Operation + safeTxGas: string + baseGas: string + gasPrice: string + gasToken?: string | null + refundReceiver?: string | null + /** The nested Safe's nonce */ + nonce: string + notes?: string | null +} export type ProposeTransactionDto = { to: string value: string @@ -991,6 +1007,8 @@ export type ProposeTransactionDto = { sender: string signature?: string | null origin?: string | null + /** A child transaction for a second Safe, authorised by the parent transaction being an `approveHash` call committing to its hash. Unknown keys are rejected. */ + nestedTransaction?: NestedTransactionDto | null } export type CreationTransaction = { created: string