{
    "swagger": "2.0",
    "info": {
        "version": "3.0",
        "title": "Mailman 3 REST API",
        "description": "Mailman 3 REST API",
        "contact": {
            "name": "Developers",
            "email": "Mailman-Developers@python.org",
            "url": "http://www.gnu.org/software/mailman/"
        },
        "license": {
            "name": "Gnu GPL",
            "url": "http://www.gnu.org/copyleft/gpl.html"
        }
    },
    "host": "www.mailripper.com",
    "schemes": [
        "http"
    ],
    "basePath": "/api/3.0",
    "consumes": [
        "application/x-www-form-urlencoded"
    ],
    "produces": [
        "application/json"
    ],
    "paths": {
        "/addresses": {
            "get": {
                "tags": [
                    "addresses"
                ],
                "summary": "Get all addresses",
                "description": "Get all addresses",
                "operationId": "getAddresses",
                "produces": [
                    "application/json"
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Address"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "post": {
                "tags": [
                    "addresses"
                ],
                "summary": "Creates a new address",
                "description": "Creates a new address",
                "operationId": "createNewAddress",
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "email",
                        "in": "formData",
                        "type": "string",
                        "description": "email",
                        "required": true
                    },
                    {
                        "name": "display_name",
                        "in": "formData",
                        "type": "string",
                        "description": "display_name",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Make a new address"
                    }
                }
            }
        },
        "/addresses/{email}": {
            "get": {
                "tags": [
                    "addresses"
                ],
                "summary": "Get an address",
                "description": "Get an address",
                "operationId": "getAddress",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "email",
                        "in": "path",
                        "type": "string",
                        "description": "email",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Address"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/addresses/{target_user_email}/user": {
            "post": {
                "tags": [
                    "addresses"
                ],
                "summary": "Link an address to a user",
                "description": "To link an address to a user, a POST request can be sent to the /user sub-resource of the address.  If the user does not exist, it will be created. To prevent automatic user creation from taking place, add the auto_create parameter to the POST request and set it to a false-equivalent value like 0",
                "operationId": "linkAddressToUser",
                "produces": [
                    "application/json"
                ],
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "parameters": [
                    {
                        "name": "target_user_email",
                        "in": "path",
                        "type": "string",
                        "description": "email address that will be linked to user",
                        "required": true
                    },
                    {
                        "name": "email",
                        "in": "formData",
                        "type": "string",
                        "description": "email address of the user to link to",
                        "required": false
                    },
                    {
                        "name": "id",
                        "in": "formData",
                        "type": "string",
                        "description": "id of the user to link to",
                        "required": false
                    },
                    {
                        "name": "auto_create",
                        "in": "formData",
                        "type": "boolean",
                        "description": "auto_create user to link to if it does not exist. default is true.",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Address"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "put": {
                "tags": [
                    "addresses"
                ],
                "summary": "Link an address to a different user",
                "description": "To link an address to a different user, you can either send a DELETE request followed by a POST request, or you can send a PUT request.",
                "operationId": "linkAddressToDifferentUser",
                "produces": [
                    "application/json"
                ],
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "parameters": [
                    {
                        "name": "target_user_email",
                        "in": "path",
                        "type": "string",
                        "description": "email address that will be linked to user",
                        "required": true
                    },
                    {
                        "name": "email",
                        "in": "formData",
                        "type": "string",
                        "description": "email address of the user to link to",
                        "required": false
                    },
                    {
                        "name": "id",
                        "in": "formData",
                        "type": "string",
                        "description": "id of the user to link to",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Address"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "get": {
                "tags": [
                    "addresses"
                ],
                "summary": "Get the linked user for the address",
                "description": "Get the linked user for the address",
                "operationId": "getlinkedUser",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "target_user_email",
                        "in": "path",
                        "type": "string",
                        "description": "email address that will be linked to user",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Address"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "delete": {
                "tags": [
                    "addresses"
                ],
                "summary": "Unlink the linked user from the address",
                "description": "The address and the user can be unlinked by sending a DELETE request on the /user resource.  The user itself is not deleted, only the link.",
                "operationId": "unlinkUser",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "target_user_email",
                        "in": "path",
                        "type": "string",
                        "description": "email address that will be unlinked from to user",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Address"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/addresses/{email}/verify": {
            "post": {
                "tags": [
                    "addresses"
                ],
                "summary": "Verify an addresss",
                "description": "Verify an addresss",
                "operationId": "verifyAddress",
                "produces": [
                    "application/json"
                ],
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "parameters": [
                    {
                        "name": "email",
                        "in": "path",
                        "type": "string",
                        "description": "email",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Address"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/addresses/{email}/unverify": {
            "post": {
                "tags": [
                    "addresses"
                ],
                "summary": "Unverify address",
                "description": "Unverify address",
                "operationId": "unverifyAddress",
                "produces": [
                    "application/json"
                ],
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "parameters": [
                    {
                        "name": "email",
                        "in": "path",
                        "type": "string",
                        "description": "email",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Address"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/addresses/{email}/preferences": {
            "get": {
                "tags": [
                    "addresses"
                ],
                "summary": "Preferences for an address",
                "description": "Preferences for an address",
                "operationId": "preferencesAddress",
                "produces": [
                    "application/json"
                ],
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "parameters": [
                    {
                        "name": "email",
                        "in": "path",
                        "type": "string",
                        "description": "email",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Address"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/addresses/{email}/memberships": {
            "get": {
                "tags": [
                    "addresses"
                ],
                "summary": "Memberships for an address",
                "description": "Memberships for an address",
                "operationId": "membershipsAddress",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "email",
                        "in": "path",
                        "type": "string",
                        "description": "email",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Address"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/domains": {
            "get": {
                "tags": [
                    "domains"
                ],
                "summary": "Get list of domains",
                "description": "Get list of domains",
                "operationId": "getListOfDomains",
                "produces": [
                    "application/json"
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Domain"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "post": {
                "tags": [
                    "domains"
                ],
                "summary": "Creates a new domain",
                "description": "Creates a new domain",
                "operationId": "createNewDomain",
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "mail_host",
                        "in": "formData",
                        "type": "string",
                        "description": "mail_host",
                        "required": true
                    },
                    {
                        "name": "description",
                        "in": "formData",
                        "type": "string",
                        "description": "Description",
                        "required": false
                    },
                    {
                        "name": "base_url",
                        "in": "formData",
                        "type": "string",
                        "description": "base_url",
                        "required": false
                    },
                    {
                        "name": "contact_address",
                        "in": "formData",
                        "type": "string",
                        "description": "contact_address",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Make a new domain"
                    }
                }
            }
        },
        "/domains/{domain}": {
            "delete": {
                "tags": [
                    "domains"
                ],
                "summary": "Deletes a domain",
                "description": "Deletes a domain",
                "operationId": "deleteDomain",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "type": "string",
                        "description": "The domain to be deleted",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Domain deleted"
                    }
                }
            }
        },
        "/domains/{domain}/lists": {
            "get": {
                "tags": [
                    "domains"
                ],
                "summary": "Get domain's lists",
                "description": "Get domain's lists",
                "operationId": "getDomainLists",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "type": "string",
                        "description": "The domain to get lists for",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Domain"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/lists": {
            "get": {
                "tags": [
                    "lists"
                ],
                "summary": "Get lists",
                "description": "Get lists",
                "operationId": "getLists",
                "produces": [
                    "application/json"
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Domain"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "post": {
                "tags": [
                    "lists"
                ],
                "summary": "Create list",
                "description": "Create list",
                "operationId": "createList",
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "fqdn_listname",
                        "in": "formData",
                        "type": "string",
                        "description": "fqdn_listname",
                        "required": true
                    },
                    {
                        "name": "style_name",
                        "in": "formData",
                        "type": "string",
                        "description": "style_name",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List created"
                    }
                }
            }
        },
        "/lists/styles": {
            "get": {
                "tags": [
                    "lists"
                ],
                "summary": "Get available list styles",
                "description": "Get available list styles",
                "operationId": "getListStyles",
                "produces": [
                    "application/json"
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Domain"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/lists/{list_identifier}": {
            "get": {
                "tags": [
                    "lists"
                ],
                "summary": "Get list details",
                "description": "Get list details",
                "operationId": "getListDetails",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "list_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "Normally, you access the list via its RFC 2369 list-id, but for backward compatibility purposes, you can also access it via the list's posting address, if that has never been changed (since the list-id is immutable, but the posting address is not).",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Domain"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "delete": {
                "tags": [
                    "lists"
                ],
                "summary": "Delete list",
                "description": "Delete list",
                "operationId": "deleteList",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "list_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "Normally, you access the list via its RFC 2369 list-id, but for backward compatibility purposes, you can also access it via the list's posting address, if that has never been changed (since the list-id is immutable, but the posting address is not).",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "List deleted"
                    }
                }
            }
        },
        "/lists/{list_identifier}/archivers": {
            "get": {
                "tags": [
                    "lists"
                ],
                "summary": "Get list archivers",
                "description": "The Mailman system has some site-wide enabled archivers, and each mailing list can enable or disable these archivers individually. You can see which archivers are available, and whether they are enabled for this mailing list.",
                "operationId": "getListArchives",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "list_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "Normally, you access the list via its RFC 2369 list-id, but for backward compatibility purposes, you can also access it via the list's posting address, if that has never been changed (since the list-id is immutable, but the posting address is not).",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Domain"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "put": {
                "tags": [
                    "lists"
                ],
                "summary": "Set list archivers",
                "description": "This gives list owners control over where traffic to their list is archived. With PUT you can set all the archiver states by putting new state flags on the resource.",
                "operationId": "setListArchives",
                "produces": [
                    "application/json"
                ],
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "parameters": [
                    {
                        "name": "list_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "Normally, you access the list via its RFC 2369 list-id, but for backward compatibility purposes, you can also access it via the list's posting address, if that has never been changed (since the list-id is immutable, but the posting address is not).",
                        "required": true
                    },
                    {
                        "name": "mail-archive",
                        "in": "formData",
                        "type": "string",
                        "description": "",
                        "required": true
                    },
                    {
                        "name": "prototype",
                        "in": "formData",
                        "type": "string",
                        "description": "",
                        "required": true
                    },
                    {
                        "name": "mhonarc",
                        "in": "formData",
                        "type": "string",
                        "description": "",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Domain"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "patch": {
                "tags": [
                    "lists"
                ],
                "summary": "Set list archivers",
                "description": "This gives list owners control over where traffic to their list is archived. With PATCH You can change the state of a subset of the list archivers.",
                "operationId": "setListArchives",
                "produces": [
                    "application/json"
                ],
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "parameters": [
                    {
                        "name": "list_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "Normally, you access the list via its RFC 2369 list-id, but for backward compatibility purposes, you can also access it via the list's posting address, if that has never been changed (since the list-id is immutable, but the posting address is not).",
                        "required": true
                    },
                    {
                        "name": "mail-archive",
                        "in": "formData",
                        "type": "string",
                        "description": "",
                        "required": true
                    },
                    {
                        "name": "prototype",
                        "in": "formData",
                        "type": "string",
                        "description": "",
                        "required": true
                    },
                    {
                        "name": "mhonarc",
                        "in": "formData",
                        "type": "string",
                        "description": "",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Domain"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/lists/{list_identifier}/roster/member": {
            "get": {
                "tags": [
                    "lists"
                ],
                "summary": "Get members of a list.",
                "description": "Get members of a list.",
                "operationId": "getListMembers",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "list_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "Normally, you access the list via its RFC 2369 list-id, but for backward compatibility purposes, you can also access it via the list's posting address, if that has never been changed (since the list-id is immutable, but the posting address is not).",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Domain"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/lists/{list_identifier}/roster/owner": {
            "get": {
                "tags": [
                    "lists"
                ],
                "summary": "Get owner of a list.",
                "description": "Get owner of a list.",
                "operationId": "getListOwner",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "list_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "Normally, you access the list via its RFC 2369 list-id, but for backward compatibility purposes, you can also access it via the list's posting address, if that has never been changed (since the list-id is immutable, but the posting address is not).",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Domain"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/members": {
            "get": {
                "tags": [
                    "members"
                ],
                "summary": "Get list of members",
                "description": "Get list of members",
                "operationId": "getListOfMembers",
                "produces": [
                    "application/json"
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Member"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "post": {
                "tags": [
                    "members"
                ],
                "summary": "Create list member ",
                "description": "Create list member",
                "operationId": "createListMember",
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "list_id",
                        "in": "formData",
                        "type": "string",
                        "description": "Normally, you access the list via its RFC 2369 list-id, but for backward compatibility purposes, you can also access it via the list's posting address, if that has never been changed (since the list-id is immutable, but the posting address is not).",
                        "required": true
                    },
                    {
                        "name": "subscriber",
                        "in": "formData",
                        "type": "string",
                        "description": "subscriber",
                        "required": true
                    },
                    {
                        "name": "display_name",
                        "in": "formData",
                        "type": "string",
                        "description": "display_name",
                        "required": false
                    },
                    {
                        "name": "delivery_mode",
                        "in": "formData",
                        "type": "string",
                        "description": "Delivery mode, one of: regular, plaintext_digests, mime_digests, summary_digests",
                        "required": false
                    },
                    {
                        "name": "role",
                        "in": "formData",
                        "type": "string",
                        "description": "Member role, one of: member, owner, moderator nonmember",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Member updated."
                    }
                }
            }
        },
        "/members/{id}": {
            "get": {
                "tags": [
                    "members"
                ],
                "summary": "Get a member",
                "description": "Get a member",
                "operationId": "getMember",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "type": "string",
                        "description": "The list member id (not the same as user id).",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/User"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "patch": {
                "tags": [
                    "members"
                ],
                "summary": "Update member details for this list.",
                "description": "Update member details for this list. Change the members email address or delivery mode.",
                "operationId": "updateListMember",
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "type": "string",
                        "description": "The list member id (not the same as user id).",
                        "required": true
                    },
                    {
                        "name": "address",
                        "in": "formData",
                        "type": "string",
                        "description": "Email address of subscriber. This changes the address for the subscriber.",
                        "required": false
                    },
                    {
                        "name": "delivery_mode",
                        "in": "formData",
                        "type": "string",
                        "description": "Delivery mode, one of: regular, plaintext_digests, mime_digests, summary_digests",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Member updated."
                    }
                }
            },
            "delete": {
                "tags": [
                    "members"
                ],
                "summary": "Unsubscribe member from list",
                "description": "Unsubscribe member from list",
                "operationId": "unsubscribeMember",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "type": "string",
                        "description": "The list member id (not the same as user id).",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Member unsubscribed"
                    }
                }
            }
        },
        "/members/{id}/preferences": {
            "get": {
                "tags": [
                    "members"
                ],
                "summary": "Preferences for a member",
                "description": "Preferences for a member",
                "operationId": "preferencesMember",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "type": "string",
                        "description": "id",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/User"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/members/{id}/all/preferences": {
            "get": {
                "tags": [
                    "members"
                ],
                "summary": "Preferences for a member (combined)",
                "description": "Preferences for a member (combined)",
                "operationId": "preferencesMemberCombined",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "type": "string",
                        "description": "id",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/User"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/users": {
            "get": {
                "tags": [
                    "users"
                ],
                "summary": "Get list of users",
                "description": "Get list of users",
                "operationId": "getListOfUsers",
                "produces": [
                    "application/json"
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/User"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "post": {
                "tags": [
                    "users"
                ],
                "summary": "Creates a new user",
                "description": "Creates a new user",
                "operationId": "createNewUser",
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "email",
                        "in": "formData",
                        "type": "string",
                        "description": "email",
                        "required": true
                    },
                    {
                        "name": "password",
                        "in": "formData",
                        "type": "string",
                        "description": "password",
                        "required": false
                    },
                    {
                        "name": "display_name",
                        "in": "formData",
                        "type": "string",
                        "description": "display_name",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Create a new user"
                    }
                }
            }
        },
        "/users/{user_identifier}": {
            "get": {
                "tags": [
                    "users"
                ],
                "summary": "Get a user",
                "description": "Get a user",
                "operationId": "getUser",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "user_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "The identifier used to retrieve the user.  The  identifier may either be an integer user-id, or an email address controlled by the user.  The type of identifier is auto-detected by looking for an `@` symbol, in which case it's taken as an email address, otherwise it's assumed to be an integer.",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/User"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "delete": {
                "tags": [
                    "users"
                ],
                "summary": "Deletes a user",
                "description": "Deletes a user",
                "operationId": "deleteUser",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "user_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "The identifier used to retrieve the user.  The  identifier may either be an integer user-id, or an email address controlled by the user.  The type of identifier is auto-detected by looking for an `@` symbol, in which case it's taken as an email address, otherwise it's assumed to be an integer.",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "User deleted"
                    }
                }
            },
            "patch": {
                "tags": [
                    "users"
                ],
                "summary": "Patch the user's configuration (i.e. partial update).",
                "description": "Patch the user's configuration (i.e. partial update).",
                "operationId": "patchUser",
                "produces": [
                    "application/json"
                ],
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "parameters": [
                    {
                        "name": "user_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "The identifier used to retrieve the user.  The  identifier may either be an integer user-id, or an email address controlled by the user.  The type of identifier is auto-detected by looking for an `@` symbol, in which case it's taken as an email address, otherwise it's assumed to be an integer.",
                        "required": true
                    },
                    {
                        "name": "cleartext_password",
                        "in": "formData",
                        "type": "string",
                        "description": "cleartext_password",
                        "required": false
                    },
                    {
                        "name": "display_name",
                        "in": "formData",
                        "type": "string",
                        "description": "display_name",
                        "required": false
                    }
                ],
                "responses": {
                    "204": {
                        "description": "User updated"
                    }
                }
            },
            "put": {
                "tags": [
                    "users"
                ],
                "summary": "Put the user's configuration (i.e. full update).",
                "description": "Put the user's configuration (i.e. full update).",
                "operationId": "putUser",
                "produces": [
                    "application/json"
                ],
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "parameters": [
                    {
                        "name": "user_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "The identifier used to retrieve the user.  The  identifier may either be an integer user-id, or an email address controlled by the user.  The type of identifier is auto-detected by looking for an `@` symbol, in which case it's taken as an email address, otherwise it's assumed to be an integer.",
                        "required": true
                    },
                    {
                        "name": "cleartext_password",
                        "in": "formData",
                        "type": "string",
                        "description": "cleartext_password",
                        "required": true
                    },
                    {
                        "name": "display_name",
                        "in": "formData",
                        "type": "string",
                        "description": "display_name",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "User updated"
                    }
                }
            }
        },
        "/users/{id}/login": {
            "post": {
                "tags": [
                    "users"
                ],
                "summary": "Login user",
                "description": "Login user",
                "operationId": "loginUser",
                "produces": [
                    "application/json"
                ],
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "type": "string",
                        "description": "id",
                        "required": true
                    },
                    {
                        "name": "cleartext_password",
                        "in": "formData",
                        "type": "string",
                        "description": "cleartext_password",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/User"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/users/{user_identifier}/preferences": {
            "get": {
                "tags": [
                    "users"
                ],
                "summary": "Preferences for a user",
                "description": "Preferences for a user",
                "operationId": "preferencesUser",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "user_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "The identifier used to retrieve the user.  The  identifier may either be an integer user-id, or an email address controlled by the user.  The type of identifier is auto-detected by looking for an `@` symbol, in which case it's taken as an email address, otherwise it's assumed to be an integer.",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/User"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        },
        "/users/{user_identifier}/addresses": {
            "get": {
                "tags": [
                    "users"
                ],
                "summary": "Addresses of user",
                "description": "Addresses of user",
                "operationId": "addressesOfUser",
                "produces": [
                    "application/json"
                ],
                "parameters": [
                    {
                        "name": "user_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "The identifier used to retrieve the user.  The  identifier may either be an integer user-id, or an email address controlled by the user.  The type of identifier is auto-detected by looking for an `@` symbol, in which case it's taken as an email address, otherwise it's assumed to be an integer.",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/User"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            },
            "post": {
                "tags": [
                    "users"
                ],
                "summary": "Add address to user",
                "description": "A user can be associated with multiple email addresses.  You can add new addresses to an existing user.",
                "operationId": "addAddressToUser",
                "produces": [
                    "application/json"
                ],
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "parameters": [
                    {
                        "name": "user_identifier",
                        "in": "path",
                        "type": "string",
                        "description": "The identifier used to retrieve the user.  The  identifier may either be an integer user-id, or an email address controlled by the user.  The type of identifier is auto-detected by looking for an `@` symbol, in which case it's taken as an email address, otherwise it's assumed to be an integer.",
                        "required": true
                    },
                    {
                        "name": "email",
                        "in": "formData",
                        "type": "string",
                        "description": "email",
                        "required": true
                    },
                    {
                        "name": "display_name",
                        "in": "formData",
                        "type": "string",
                        "description": "display_name",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/User"
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status value"
                    }
                }
            }
        }
    },
    "definitions": {
        "Address": {
            "required": [
                "mail_host"
            ],
            "properties": {
                "base_url": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "contact_address": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "description": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "mail_host": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "self_link": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "url_host": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                }
            }
        },
        "Domain": {
            "required": [
                "mail_host"
            ],
            "properties": {
                "base_url": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "contact_address": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "description": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "mail_host": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "self_link": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "url_host": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                }
            }
        },
        "Member": {
            "required": [
                "mail_host"
            ],
            "properties": {
                "base_url": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "contact_address": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "description": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "mail_host": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "self_link": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                },
                "url_host": {
                    "type": "string",
                    "format": "string",
                    "paramType": "form"
                }
            }
        }
    }
}
