{
  "paths": {
    "/v1/api/contracts/settings/batch": {
      "post": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericOut"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContractSettingsCreateIn"
              }
            }
          }
        },
        "summary": "Write settings",
        "tags": [
          "contracts"
        ]
      }
    },
    "/v1/api/chain/{chain}/contracts": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "address",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "role",
            "schema": {
              "type": "string",
              "enum": [
                "sender",
                "recipient"
              ]
            },
            "required": false
          },
          {
            "in": "query",
            "name": "includeSettings",
            "schema": {
              "type": "boolean"
            },
            "required": false
          }
        ],
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractsOut"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "summary": "Get contracts",
        "tags": [
          "contracts"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericOut"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContractCreateIn"
              }
            }
          }
        },
        "summary": "Write contracts",
        "tags": [
          "contracts"
        ]
      },
      "patch": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericOut"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContractUpdateIn"
              }
            }
          }
        },
        "summary": "Update contracts",
        "tags": [
          "contracts"
        ]
      }
    },
    "/v1/api/chain/{chain}/contracts/{address}/settings": {
      "get": {
        "responses": {
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractSettings"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "summary": "Get settings",
        "tags": [
          "contracts"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "in": "path",
          "name": "address",
          "required": true,
          "schema": {
            "type": "string",
            "minLength": 1
          }
        }
      ]
    },
    "/v1/api/contracts/unlocks": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "address",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "end",
            "schema": {
              "type": "integer"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "_limit",
            "schema": {
              "type": "integer",
              "default": 100
            },
            "required": false
          },
          {
            "in": "query",
            "name": "role",
            "schema": {
              "type": "string",
              "enum": [
                "sender",
                "recipient"
              ]
            },
            "required": false
          }
        ],
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnlocksOut"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "summary": "Get unlocks",
        "tags": [
          "contracts"
        ]
      }
    },
    "/v1/api/events/withdrawal": {
      "post": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericOut"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WithdrawalEventIn"
              }
            }
          }
        },
        "summary": "Process withdrawal",
        "tags": [
          "events"
        ]
      }
    },
    "/v1/api/address_book/{chain}": {
      "post": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressBook"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddressBookAddIn"
              }
            }
          }
        },
        "summary": "Add an entry to the address book",
        "tags": [
          "address_book"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ]
    },
    "/v1/api/address_book/{chain}/{owner}/{address}": {
      "patch": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "403": {
            "description": "Forbidden"
          },
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressBook"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddressBookUpdateIn"
              }
            }
          }
        },
        "summary": "Update entry in the address book",
        "tags": [
          "address_book"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "in": "path",
          "name": "owner",
          "required": true,
          "schema": {
            "type": "string",
            "minLength": 1
          }
        },
        {
          "in": "path",
          "name": "address",
          "required": true,
          "schema": {
            "type": "string",
            "minLength": 1
          }
        }
      ],
      "delete": {
        "responses": {
          "403": {
            "description": "Forbidden"
          },
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "OK"
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "summary": "Delete an entry from the address book",
        "tags": [
          "address_book"
        ]
      },
      "get": {
        "responses": {
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressBook"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "summary": "Get an entry from the address book",
        "tags": [
          "address_book"
        ]
      }
    },
    "/v1/api/address_book/{chain}/{owner}": {
      "get": {
        "responses": {
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AddressBook"
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "summary": "Get an address book for an owner",
        "tags": [
          "address_book"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "in": "path",
          "name": "owner",
          "required": true,
          "schema": {
            "type": "string",
            "minLength": 1
          }
        }
      ]
    },
    "/v1/api/social/{chain}": {
      "post": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "400": {
            "description": "Bad Request"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SocialLink"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SocialLinkCreateIn"
              }
            }
          }
        },
        "summary": "Create social link for an address",
        "tags": [
          "social"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "address",
            "schema": {
              "type": "string",
              "minLength": 0,
              "maxLength": 100
            },
            "required": true
          },
          {
            "in": "query",
            "name": "socialType",
            "schema": {
              "type": "string",
              "enum": [
                "discord",
                "twitter"
              ]
            },
            "required": false
          }
        ],
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SocialLink"
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "summary": "Get social links for an address",
        "tags": [
          "social"
        ]
      }
    },
    "/v1/api/social/{chain}/check-membership": {
      "post": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "Bad Request"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SocialMembership"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SocialMembershipCheckIn"
              }
            }
          }
        },
        "tags": [
          "social"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ]
    },
    "/v1/api/social/{chain}/get-data": {
      "post": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "Bad Request"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SocialData"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SocialDataGetIn"
              }
            }
          }
        },
        "tags": [
          "social"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ]
    },
    "/v1/api/social/{chain}/withdrawals/": {
      "post": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "Bad Request"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SocialWithdrawal"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SocialWithdrawalCreateIn"
              }
            }
          }
        },
        "tags": [
          "social"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ]
    },
    "/v1/api/social/{chain}/withdrawals/get": {
      "post": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "Bad Request"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SocialWithdrawal"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SocialWithdrawalGetIn"
              }
            }
          }
        },
        "tags": [
          "social"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ]
    },
    "/v1/api/address_data/{chain}": {
      "post": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressData"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddressDataCreateIn"
              }
            }
          }
        },
        "summary": "Create or update wallet data",
        "tags": [
          "address_data"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ]
    },
    "/v1/api/address_data/{chain}/{address}": {
      "get": {
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressData"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "summary": "Get address data",
        "tags": [
          "address_data"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "in": "path",
          "name": "address",
          "required": true,
          "schema": {
            "type": "string",
            "minLength": 1
          }
        }
      ]
    },
    "/v1/api/contract_drafts/{chain}/{contract_type}": {
      "post": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractDraft"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContractDraftCreateUpdateIn"
              }
            }
          }
        },
        "summary": "Create a Contract Draft",
        "tags": [
          "contract_drafts"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "in": "path",
          "name": "contract_type",
          "required": true,
          "schema": {
            "type": "string",
            "minLength": 1
          }
        }
      ]
    },
    "/v1/api/contract_drafts/{chain}/{contract_type}/{address}": {
      "get": {
        "responses": {
          "403": {
            "description": "Forbidden"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContractDraft"
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "summary": "Get Drafts for a specific Wallet",
        "tags": [
          "contract_drafts"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "in": "path",
          "name": "contract_type",
          "required": true,
          "schema": {
            "type": "string",
            "minLength": 1
          }
        },
        {
          "in": "path",
          "name": "address",
          "required": true,
          "schema": {
            "type": "string",
            "minLength": 1
          }
        }
      ]
    },
    "/v1/api/contract_drafts/{chain}/{contract_type}/{address}/{draft_id}": {
      "get": {
        "responses": {
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractDraft"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "summary": "Get specific Draft",
        "tags": [
          "contract_drafts"
        ]
      },
      "parameters": [
        {
          "in": "path",
          "name": "chain",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "in": "path",
          "name": "contract_type",
          "required": true,
          "schema": {
            "type": "string",
            "minLength": 1
          }
        },
        {
          "in": "path",
          "name": "address",
          "required": true,
          "schema": {
            "type": "string",
            "minLength": 1
          }
        },
        {
          "in": "path",
          "name": "draft_id",
          "required": true,
          "schema": {
            "type": "string",
            "minLength": 1
          }
        }
      ],
      "patch": {
        "responses": {
          "422": {
            "$ref": "#/components/responses/UNPROCESSABLE_ENTITY"
          },
          "404": {
            "description": "Not Found"
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractDraft"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContractDraftCreateUpdateIn"
              }
            }
          }
        },
        "summary": "Delete a Contract Draft",
        "tags": [
          "contract_drafts"
        ]
      },
      "delete": {
        "responses": {
          "404": {
            "description": "Not Found"
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "204": {
            "description": "No Content"
          },
          "default": {
            "$ref": "#/components/responses/DEFAULT_ERROR"
          }
        },
        "summary": "Delete a Contract Draft",
        "tags": [
          "contract_drafts"
        ]
      }
    }
  },
  "info": {
    "title": "My API",
    "version": "v1"
  },
  "tags": [
    {
      "name": "contracts",
      "description": ""
    },
    {
      "name": "events",
      "description": ""
    },
    {
      "name": "address_book",
      "description": ""
    },
    {
      "name": "social",
      "description": ""
    },
    {
      "name": "address_data",
      "description": ""
    },
    {
      "name": "contract_drafts",
      "description": ""
    }
  ],
  "openapi": "3.0.2",
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "description": "Error code"
          },
          "status": {
            "type": "string",
            "description": "Error name"
          },
          "message": {
            "type": "string",
            "description": "Error message"
          },
          "errors": {
            "type": "object",
            "description": "Errors",
            "additionalProperties": {}
          }
        },
        "additionalProperties": false
      },
      "PaginationMetadata": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "total_pages": {
            "type": "integer"
          },
          "first_page": {
            "type": "integer"
          },
          "last_page": {
            "type": "integer"
          },
          "page": {
            "type": "integer"
          },
          "previous_page": {
            "type": "integer"
          },
          "next_page": {
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Settings": {
        "type": "object",
        "properties": {
          "notificationEmail": {
            "type": "string",
            "format": "email"
          }
        }
      },
      "ContractCreate": {
        "type": "object",
        "properties": {
          "contractAddress": {
            "type": "string"
          },
          "transaction": {
            "type": "string"
          },
          "draftId": {
            "type": "integer"
          },
          "contractSettings": {
            "$ref": "#/components/schemas/Settings"
          }
        }
      },
      "ContractSettingsCreateIn": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContractCreate"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "GenericOut": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        }
      },
      "ContractSettings": {
        "type": "object",
        "properties": {
          "contractAddress": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "notificationEmail": {
            "type": "string"
          },
          "withdrawalNotificationsEnabled": {
            "type": "boolean"
          }
        },
        "required": [
          "contractAddress"
        ]
      },
      "Contract": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string"
          },
          "chain": {
            "type": "integer"
          },
          "recipient": {
            "type": "string"
          },
          "sender": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "closed": {
            "type": "boolean"
          },
          "feesCollected": {
            "type": "boolean",
            "nullable": true
          },
          "nextWithdraw": {
            "type": "integer",
            "nullable": true
          },
          "created": {
            "type": "integer"
          },
          "settings": {
            "$ref": "#/components/schemas/ContractSettings"
          }
        }
      },
      "ContractsOut": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contract"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "ContractCreateIn": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContractCreate"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "ContractUpdate": {
        "type": "object",
        "properties": {
          "contractAddress": {
            "type": "string"
          }
        }
      },
      "ContractUpdateIn": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContractUpdate"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "Unlock": {
        "type": "object",
        "properties": {
          "contractAddress": {
            "type": "string"
          },
          "amount": {
            "type": "integer"
          },
          "ts": {
            "type": "integer"
          }
        }
      },
      "UnlocksOut": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Unlock"
            }
          }
        }
      },
      "WithdrawalEvent": {
        "type": "object",
        "properties": {
          "transaction": {
            "type": "string"
          },
          "contractAddress": {
            "type": "string"
          }
        }
      },
      "WithdrawalEventIn": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/WithdrawalEvent"
          }
        },
        "required": [
          "data"
        ]
      },
      "AddressBookAdd": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "address": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "email": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "label": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100,
            "nullable": true
          }
        }
      },
      "AddressBookAddIn": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AddressBookAdd"
          }
        },
        "required": [
          "data"
        ]
      },
      "AddressBook": {
        "type": "object",
        "properties": {
          "owner": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        }
      },
      "AddressBookUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "email": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "label": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100,
            "nullable": true
          }
        }
      },
      "AddressBookUpdateIn": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AddressBookUpdate"
          }
        },
        "required": [
          "data"
        ]
      },
      "SocialLinkCreate": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "socialType": {
            "type": "string",
            "enum": [
              "discord",
              "twitter"
            ]
          },
          "code": {
            "type": "string"
          },
          "codeVerifier": {
            "type": "string",
            "nullable": true
          },
          "redirectUri": {
            "type": "string"
          }
        },
        "required": [
          "address",
          "code",
          "redirectUri",
          "socialType"
        ]
      },
      "SocialLinkCreateIn": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SocialLinkCreate"
          }
        },
        "required": [
          "data"
        ]
      },
      "SocialLink": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "socialType": {
            "type": "string",
            "enum": [
              "discord",
              "twitter"
            ]
          }
        }
      },
      "SocialMembershipCheck": {
        "type": "object",
        "properties": {
          "socialType": {
            "type": "string",
            "enum": [
              "discord",
              "twitter"
            ]
          },
          "accountId": {
            "type": "string",
            "nullable": true
          },
          "messageId": {
            "type": "string",
            "nullable": true
          },
          "hashtag": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SocialMembershipCheckIn": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SocialMembershipCheck"
          }
        },
        "required": [
          "data"
        ]
      },
      "SocialMembership": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "socialType": {
            "type": "string",
            "enum": [
              "discord",
              "twitter"
            ]
          },
          "accountId": {
            "type": "string",
            "nullable": true
          },
          "hashtag": {
            "type": "string",
            "nullable": true
          },
          "isMember": {
            "type": "boolean"
          }
        },
        "required": [
          "accountId",
          "address",
          "hashtag",
          "isMember",
          "socialType"
        ]
      },
      "SocialDataGet": {
        "type": "object",
        "properties": {
          "socialType": {
            "type": "string",
            "enum": [
              "discord",
              "twitter"
            ]
          }
        }
      },
      "SocialDataGetIn": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SocialDataGet"
          }
        },
        "required": [
          "data"
        ]
      },
      "SocialData": {
        "type": "object",
        "properties": {
          "createdAt": {
            "type": "integer"
          }
        },
        "required": [
          "createdAt"
        ]
      },
      "SocialWithdrawalCreate": {
        "type": "object",
        "properties": {
          "socialType": {
            "type": "string",
            "enum": [
              "discord",
              "twitter",
              null
            ],
            "nullable": true
          },
          "mint": {
            "type": "string"
          },
          "streamId": {
            "type": "string"
          }
        },
        "required": [
          "mint",
          "streamId"
        ]
      },
      "SocialWithdrawalCreateIn": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SocialWithdrawalCreate"
          }
        },
        "required": [
          "data"
        ]
      },
      "SocialWithdrawal": {
        "type": "object",
        "properties": {
          "socialType": {
            "type": "string",
            "enum": [
              "discord",
              "twitter"
            ]
          },
          "mint": {
            "type": "string"
          },
          "streamId": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "mint",
          "socialType",
          "streamId"
        ]
      },
      "SocialWithdrawalGet": {
        "type": "object",
        "properties": {
          "socialType": {
            "type": "string",
            "enum": [
              "discord",
              "twitter"
            ]
          },
          "mint": {
            "type": "string"
          }
        },
        "required": [
          "mint",
          "socialType"
        ]
      },
      "SocialWithdrawalGetIn": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SocialWithdrawalGet"
          }
        },
        "required": [
          "data"
        ]
      },
      "AddressDataCreate": {
        "type": "object",
        "properties": {
          "isSanctioned": {
            "type": "boolean"
          },
          "hasCompletedMissions": {
            "type": "boolean"
          }
        }
      },
      "AddressDataCreateIn": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AddressDataCreate"
          }
        },
        "required": [
          "data"
        ]
      },
      "AddressData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "address": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "isSanctioned": {
            "type": "boolean",
            "nullable": true
          },
          "hasCompletedMissions": {
            "type": "boolean",
            "nullable": true
          },
          "createdAt": {
            "type": "string"
          }
        },
        "required": [
          "address",
          "createdAt",
          "hasCompletedMissions",
          "id",
          "isSanctioned"
        ]
      },
      "ContractRecipient": {
        "type": "object",
        "properties": {
          "recipient": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "amount": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "minLength": 0,
            "maxLength": 256
          },
          "cliffAmount": {
            "type": "string"
          },
          "amountPerPeriod": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ContractPayload": {
        "type": "object",
        "properties": {
          "tokenId": {
            "type": "string"
          },
          "period": {
            "type": "integer"
          },
          "start": {
            "type": "integer"
          },
          "cliff": {
            "type": "integer"
          },
          "cancelableBySender": {
            "type": "boolean"
          },
          "cancelableByRecipient": {
            "type": "boolean"
          },
          "transferableBySender": {
            "type": "boolean"
          },
          "transferableByRecipient": {
            "type": "boolean"
          },
          "canTopup": {
            "type": "boolean"
          },
          "automaticWithdrawal": {
            "type": "boolean"
          },
          "withdrawalFrequency": {
            "type": "integer"
          },
          "canPause": {
            "type": "boolean"
          },
          "canUpdateRate": {
            "type": "boolean"
          },
          "partner": {
            "type": "string"
          },
          "protocolType": {
            "type": "string",
            "enum": [
              "time",
              "dynamic"
            ]
          },
          "cliffType": {
            "type": "string",
            "enum": [
              "percentage",
              "absolute"
            ]
          },
          "duration": {
            "type": "integer"
          },
          "durationType": {
            "type": "integer"
          },
          "recipients": {
            "type": "array",
            "minItems": 0,
            "maxItems": 200,
            "items": {
              "$ref": "#/components/schemas/ContractRecipient"
            }
          }
        },
        "required": [
          "tokenId"
        ]
      },
      "ContractDraftCreateUpdateIn": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ContractPayload"
          }
        },
        "required": [
          "data"
        ]
      },
      "ContractDraft": {
        "type": "object",
        "properties": {
          "tokenId": {
            "type": "string"
          },
          "period": {
            "type": "integer"
          },
          "start": {
            "type": "integer"
          },
          "cliff": {
            "type": "integer"
          },
          "cancelableBySender": {
            "type": "boolean"
          },
          "cancelableByRecipient": {
            "type": "boolean"
          },
          "transferableBySender": {
            "type": "boolean"
          },
          "transferableByRecipient": {
            "type": "boolean"
          },
          "canTopup": {
            "type": "boolean"
          },
          "automaticWithdrawal": {
            "type": "boolean"
          },
          "withdrawalFrequency": {
            "type": "integer"
          },
          "canPause": {
            "type": "boolean"
          },
          "canUpdateRate": {
            "type": "boolean"
          },
          "partner": {
            "type": "string"
          },
          "protocolType": {
            "type": "string",
            "enum": [
              "time",
              "dynamic"
            ]
          },
          "cliffType": {
            "type": "string",
            "enum": [
              "percentage",
              "absolute"
            ]
          },
          "duration": {
            "type": "integer"
          },
          "durationType": {
            "type": "integer"
          },
          "recipients": {
            "type": "array",
            "minItems": 0,
            "maxItems": 200,
            "items": {
              "$ref": "#/components/schemas/ContractRecipient"
            }
          },
          "id": {
            "type": "integer"
          },
          "address": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "vesting",
              "payment",
              "lock"
            ]
          },
          "data": {
            "$ref": "#/components/schemas/ContractPayload"
          },
          "created": {
            "type": "integer"
          }
        },
        "required": [
          "address",
          "created",
          "data",
          "id",
          "tokenId",
          "type"
        ]
      }
    },
    "responses": {
      "UNPROCESSABLE_ENTITY": {
        "description": "Unprocessable Entity",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "DEFAULT_ERROR": {
        "description": "Default error response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  }
}