Safe (Gnosis Safe) 4337 API
The 4337 API from Safe (Gnosis Safe) — 5 operation(s) for 4337.
The 4337 API from Safe (Gnosis Safe) — 5 operation(s) for 4337.
openapi: 3.1.0
info:
title: Safe Transaction Service 4337 API
version: 6.3.0
description: API to keep track of transactions sent via Safe smart contracts
tags:
- name: '4337'
paths:
/tx-service/eth/api/v1/safe-operations/{safe_operation_hash}/:
get:
operationId: safe_operations_retrieve
description: Returns a SafeOperation given its Safe operation hash
parameters:
- in: path
name: safe_operation_hash
schema:
type: string
required: true
tags:
- '4337'
security:
- cookieAuth: []
- tokenAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SafeOperationWithUserOperationResponse'
description: ''
path: /tx-service/eth/api/v1/safe-operations/{safe_operation_hash}/
title: Get Safe Operation
additionalInfo: ''
/tx-service/eth/api/v1/safe-operations/{safe_operation_hash}/confirmations/:
get:
operationId: safe_operations_confirmations_list
description: Get the list of confirmations for a multisig transaction
parameters:
- in: path
name: safe_operation_hash
schema:
type: string
required: true
- name: limit
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: offset
required: false
in: query
description: The initial index from which to return the results.
schema:
type: integer
tags:
- '4337'
security:
- cookieAuth: []
- tokenAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedSafeOperationConfirmationResponseList'
description: ''
'400':
description: Invalid data
path: /tx-service/eth/api/v1/safe-operations/{safe_operation_hash}/confirmations/
title: Get the list of confirmations for a multisig transaction
additionalInfo: ''
post:
operationId: safe_operations_confirmations_create
description: 'Add a confirmation for a transaction. More than one signature can be used. This endpoint does not support
the use of delegates to make a transaction trusted.'
parameters:
- in: path
name: safe_operation_hash
schema:
type: string
required: true
tags:
- '4337'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SafeOperationConfirmation'
required: true
security:
- cookieAuth: []
- tokenAuth: []
- {}
responses:
'201':
description: Created
'400':
description: Malformed data
'422':
description: Error processing data
path: /tx-service/eth/api/v1/safe-operations/{safe_operation_hash}/confirmations/
title: Add a confirmation for a transaction
additionalInfo: ''
/tx-service/eth/api/v1/safes/{address}/safe-operations/:
get:
operationId: safes_safe_operations_list
description: Returns the list of SafeOperations for a given Safe account
parameters:
- in: path
name: address
schema:
type: string
required: true
- in: query
name: modified__lt
schema:
type: string
format: date-time
- in: query
name: modified__gt
schema:
type: string
format: date-time
- in: query
name: modified__lte
schema:
type: string
format: date-time
- in: query
name: modified__gte
schema:
type: string
format: date-time
- in: query
name: valid_after__lt
schema:
type: string
format: date-time
- in: query
name: valid_after__gt
schema:
type: string
format: date-time
- in: query
name: valid_after__lte
schema:
type: string
format: date-time
- in: query
name: valid_after__gte
schema:
type: string
format: date-time
- in: query
name: valid_until__lt
schema:
type: string
format: date-time
- in: query
name: valid_until__gt
schema:
type: string
format: date-time
- in: query
name: valid_until__lte
schema:
type: string
format: date-time
- in: query
name: valid_until__gte
schema:
type: string
format: date-time
- in: query
name: module_address
schema:
type: string
- in: query
name: executed
schema:
type: boolean
- in: query
name: has_confirmations
schema:
type: boolean
- in: query
name: execution_date__gte
schema:
type: string
format: date-time
- in: query
name: execution_date__lte
schema:
type: string
format: date-time
- in: query
name: submission_date__gte
schema:
type: string
format: date-time
- in: query
name: submission_date__lte
schema:
type: string
format: date-time
- in: query
name: transaction_hash
schema:
type:
- string
- 'null'
format: byte
- name: ordering
required: false
in: query
description: Which field to use when ordering the results.
schema:
type: string
- name: limit
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: offset
required: false
in: query
description: The initial index from which to return the results.
schema:
type: integer
tags:
- '4337'
security:
- cookieAuth: []
- tokenAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedSafeOperationWithUserOperationResponseList'
description: ''
path: /tx-service/eth/api/v1/safes/{address}/safe-operations/
title: List Safe Operations
additionalInfo: ''
post:
operationId: safes_safe_operations_create
description: Adds a new SafeOperation for a given Safe account
parameters:
- in: path
name: address
schema:
type: string
required: true
tags:
- '4337'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SafeOperation'
required: true
security:
- cookieAuth: []
- tokenAuth: []
- {}
responses:
'201':
content:
application/json:
schema:
type: object
additionalProperties: {}
description: Unspecified response body
description: ''
path: /tx-service/eth/api/v1/safes/{address}/safe-operations/
title: Create Safe Operation
additionalInfo: ''
/tx-service/eth/api/v1/safes/{address}/user-operations/:
get:
operationId: safes_user_operations_list
description: Returns the list of UserOperations for a given Safe account
parameters:
- in: path
name: address
schema:
type: string
required: true
- name: ordering
required: false
in: query
description: Which field to use when ordering the results.
schema:
type: string
- name: limit
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: offset
required: false
in: query
description: The initial index from which to return the results.
schema:
type: integer
tags:
- '4337'
security:
- cookieAuth: []
- tokenAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedUserOperationWithSafeOperationResponseList'
description: ''
path: /tx-service/eth/api/v1/safes/{address}/user-operations/
title: List User Operations
additionalInfo: ''
/tx-service/eth/api/v1/user-operations/{user_operation_hash}/:
get:
operationId: user_operations_retrieve
description: Returns a UserOperation given its user operation hash
parameters:
- in: path
name: user_operation_hash
schema:
type: string
required: true
tags:
- '4337'
security:
- cookieAuth: []
- tokenAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UserOperationWithSafeOperationResponse'
description: ''
path: /tx-service/eth/api/v1/user-operations/{user_operation_hash}/
title: Get User Operation
additionalInfo: ''
components:
schemas:
SafeOperationConfirmationResponse:
type: object
properties:
created:
type: string
format: date-time
modified:
type: string
format: date-time
owner:
type: string
signature:
type: string
signatureType:
type: string
readOnly: true
required:
- created
- modified
- owner
- signature
- signatureType
UserOperationResponse:
type: object
properties:
ethereumTxHash:
type: string
sender:
type: string
userOperationHash:
type: string
nonce:
type: string
initCode:
type:
- string
- 'null'
callData:
type:
- string
- 'null'
callGasLimit:
type: string
verificationGasLimit:
type: string
preVerificationGas:
type: string
maxFeePerGas:
type: string
maxPriorityFeePerGas:
type: string
paymaster:
type:
- string
- 'null'
paymasterData:
type:
- string
- 'null'
signature:
type: string
entryPoint:
type: string
required:
- callData
- callGasLimit
- entryPoint
- ethereumTxHash
- initCode
- maxFeePerGas
- maxPriorityFeePerGas
- nonce
- paymaster
- paymasterData
- preVerificationGas
- sender
- signature
- userOperationHash
- verificationGasLimit
UserOperationWithSafeOperationResponse:
type: object
properties:
ethereumTxHash:
type: string
sender:
type: string
userOperationHash:
type: string
nonce:
type: string
initCode:
type:
- string
- 'null'
callData:
type:
- string
- 'null'
callGasLimit:
type: string
verificationGasLimit:
type: string
preVerificationGas:
type: string
maxFeePerGas:
type: string
maxPriorityFeePerGas:
type: string
paymaster:
type:
- string
- 'null'
paymasterData:
type:
- string
- 'null'
signature:
type: string
entryPoint:
type: string
safeOperation:
oneOf:
- $ref: '#/components/schemas/SafeOperationResponse'
- type: 'null'
readOnly: true
required:
- callData
- callGasLimit
- entryPoint
- ethereumTxHash
- initCode
- maxFeePerGas
- maxPriorityFeePerGas
- nonce
- paymaster
- paymasterData
- preVerificationGas
- safeOperation
- sender
- signature
- userOperationHash
- verificationGasLimit
PaginatedSafeOperationWithUserOperationResponseList:
type: object
required:
- count
- results
properties:
count:
type: integer
example: 123
next:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?offset=400&limit=100
previous:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?offset=200&limit=100
results:
type: array
items:
$ref: '#/components/schemas/SafeOperationWithUserOperationResponse'
SafeOperation:
type: object
description: 'Mixin class to validate SafeOperation signatures. `_get_owners` can be overridden to define
the valid owners to sign'
properties:
nonce:
type: integer
minimum: 0
initCode:
type:
- string
- 'null'
callData:
type:
- string
- 'null'
callGasLimit:
type: integer
minimum: 0
verificationGasLimit:
type: integer
minimum: 0
preVerificationGas:
type: integer
minimum: 0
maxFeePerGas:
type: integer
minimum: 0
maxPriorityFeePerGas:
type: integer
minimum: 0
paymasterAndData:
type:
- string
- 'null'
signature:
type: string
entryPoint:
type: string
validAfter:
type:
- string
- 'null'
format: date-time
validUntil:
type:
- string
- 'null'
format: date-time
moduleAddress:
type: string
required:
- callData
- callGasLimit
- entryPoint
- initCode
- maxFeePerGas
- maxPriorityFeePerGas
- moduleAddress
- nonce
- paymasterAndData
- preVerificationGas
- signature
- validAfter
- validUntil
- verificationGasLimit
PaginatedSafeOperationConfirmationResponseList:
type: object
required:
- count
- results
properties:
count:
type: integer
example: 123
next:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?offset=400&limit=100
previous:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?offset=200&limit=100
results:
type: array
items:
$ref: '#/components/schemas/SafeOperationConfirmationResponse'
PaginatedUserOperationWithSafeOperationResponseList:
type: object
required:
- count
- results
properties:
count:
type: integer
example: 123
next:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?offset=400&limit=100
previous:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?offset=200&limit=100
results:
type: array
items:
$ref: '#/components/schemas/UserOperationWithSafeOperationResponse'
SafeOperationWithUserOperationResponse:
type: object
properties:
created:
type: string
format: date-time
modified:
type: string
format: date-time
safeOperationHash:
type: string
validAfter:
type: string
format: date-time
validUntil:
type: string
format: date-time
moduleAddress:
type: string
confirmations:
type: object
additionalProperties: {}
description: 'Filters confirmations queryset
:param obj: SafeOperation instance
:return: Serialized queryset'
readOnly: true
preparedSignature:
type: string
readOnly: true
userOperation:
allOf:
- $ref: '#/components/schemas/UserOperationResponse'
readOnly: true
required:
- confirmations
- created
- modified
- moduleAddress
- preparedSignature
- safeOperationHash
- userOperation
- validAfter
- validUntil
SafeOperationResponse:
type: object
properties:
created:
type: string
format: date-time
modified:
type: string
format: date-time
safeOperationHash:
type: string
validAfter:
type: string
format: date-time
validUntil:
type: string
format: date-time
moduleAddress:
type: string
confirmations:
type: object
additionalProperties: {}
description: 'Filters confirmations queryset
:param obj: SafeOperation instance
:return: Serialized queryset'
readOnly: true
preparedSignature:
type: string
readOnly: true
required:
- confirmations
- created
- modified
- moduleAddress
- preparedSignature
- safeOperationHash
- validAfter
- validUntil
SafeOperationConfirmation:
type: object
description: Validate new confirmations for an existing `SafeOperation`
properties:
signature:
type: string
required:
- signature
securitySchemes:
cookieAuth:
type: apiKey
in: cookie
name: sessionid
tokenAuth:
type: apiKey
in: header
name: Authorization
description: Token-based authentication with required prefix "Token"