{"swagger": "2.0", "info": {"title": "pazy API", "description": "Test description", "termsOfService": "https://www.google.com/policies/terms/", "contact": {"email": "contact@snippets.local"}, "license": {"name": "BSD License"}, "version": "v1"}, "host": "api.pazy.es", "schemes": ["http"], "basePath": "/", "consumes": ["application/json"], "produces": ["application/json"], "securityDefinitions": {"Basic": {"type": "basic"}}, "security": [{"Basic": []}], "paths": {"/benefit/": {"get": {"operationId": "benefit_list", "description": "", "parameters": [{"name": "page", "in": "query", "description": "Un número de página dentro del conjunto de resultados paginado.", "required": false, "type": "integer"}, {"name": "page_size", "in": "query", "description": "Número de resultados a devolver por página.", "required": false, "type": "integer"}], "responses": {"200": {"description": "", "schema": {"required": ["count", "results"], "type": "object", "properties": {"count": {"type": "integer"}, "next": {"type": "string", "format": "uri", "x-nullable": true}, "previous": {"type": "string", "format": "uri", "x-nullable": true}, "results": {"type": "array", "items": {"$ref": "#/definitions/Benefit"}}}}}}, "tags": ["benefit"]}, "parameters": []}, "/benefit/{id}/": {"get": {"operationId": "benefit_read", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Benefit"}}}, "tags": ["benefit"]}, "parameters": [{"name": "id", "in": "path", "description": "Un valor de entero único que identifique este Benefit.", "required": true, "type": "integer"}]}, "/contract/": {"get": {"operationId": "contract_list", "description": "", "parameters": [{"name": "page", "in": "query", "description": "Un número de página dentro del conjunto de resultados paginado.", "required": false, "type": "integer"}, {"name": "page_size", "in": "query", "description": "Número de resultados a devolver por página.", "required": false, "type": "integer"}], "responses": {"200": {"description": "", "schema": {"required": ["count", "results"], "type": "object", "properties": {"count": {"type": "integer"}, "next": {"type": "string", "format": "uri", "x-nullable": true}, "previous": {"type": "string", "format": "uri", "x-nullable": true}, "results": {"type": "array", "items": {"$ref": "#/definitions/Contract"}}}}}}, "tags": ["contract"]}, "post": {"operationId": "contract_create", "description": "", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Contract"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/Contract"}}}, "tags": ["contract"]}, "parameters": []}, "/contract/{id}/": {"get": {"operationId": "contract_read", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Contract"}}}, "tags": ["contract"]}, "put": {"operationId": "contract_update", "description": "", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Contract"}}], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Contract"}}}, "tags": ["contract"]}, "patch": {"operationId": "contract_partial_update", "description": "", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Contract"}}], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Contract"}}}, "tags": ["contract"]}, "delete": {"operationId": "contract_delete", "description": "", "parameters": [], "responses": {"204": {"description": ""}}, "tags": ["contract"]}, "parameters": [{"name": "id", "in": "path", "description": "Un valor de entero único que identifique este Contract.", "required": true, "type": "integer"}]}, "/contracts/create/": {"post": {"operationId": "contracts_create_create", "summary": "Public endpoint — no authentication required.\nCreates a UserProfile, Plan, Contract and PasswordSetupToken in one call.", "description": "POST /contracts/create/\n\nReturns the setup token so the frontend can redirect the user\nto the password creation screen.", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["contracts"]}, "parameters": []}, "/gocardless/complete/": {"post": {"operationId": "gocardless_complete_create", "summary": "POST /gocardless/complete/", "description": "Completes the redirect flow after the user returns from GoCardless.\nCreates a subscription (cuotas) or a single payment (pago único).", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["gocardless"]}, "parameters": []}, "/gocardless/redirect-flow/": {"post": {"operationId": "gocardless_redirect-flow_create", "summary": "POST /gocardless/redirect-flow/", "description": "Creates a GoCardless redirect flow and returns the URL\nto redirect the user to enter their bank details.", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["gocardless"]}, "parameters": []}, "/gocardless/webhook/": {"post": {"operationId": "gocardless_webhook_create", "summary": "POST /gocardless/webhook/", "description": "Receives event notifications from GoCardless.\nUpdates the contract status based on payment events.\n\nEvents handled:\n    - payments.paid_out         → increment payments_made on the contract\n    - payments.failed           → log the failure\n    - subscriptions.finished    → mark contract as completed", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["gocardless"]}, "parameters": []}, "/hubspot/contact/": {"post": {"operationId": "hubspot_contact_create", "description": "POST  /hubspot/contact/  — step 1: create contact, returns contact_id\nPATCH /hubspot/contact/  — steps 2/3/4/5b: update contact fields", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["hubspot"]}, "patch": {"operationId": "hubspot_contact_partial_update", "description": "POST  /hubspot/contact/  — step 1: create contact, returns contact_id\nPATCH /hubspot/contact/  — steps 2/3/4/5b: update contact fields", "parameters": [], "responses": {"200": {"description": ""}}, "tags": ["hubspot"]}, "parameters": []}, "/hubspot/deal/": {"post": {"operationId": "hubspot_deal_create", "description": "POST  /hubspot/deal/  — step 4: create deal, returns deal_id\nPATCH /hubspot/deal/  — steps 5–10: update deal fields", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["hubspot"]}, "patch": {"operationId": "hubspot_deal_partial_update", "description": "POST  /hubspot/deal/  — step 4: create deal, returns deal_id\nPATCH /hubspot/deal/  — steps 5–10: update deal fields", "parameters": [], "responses": {"200": {"description": ""}}, "tags": ["hubspot"]}, "parameters": []}, "/hubspot/lead/": {"post": {"operationId": "hubspot_lead_create", "description": "Public endpoint — no authentication required.\nReceives the contracting form data and sends it to HubSpot (currently logs only).\n\nPOST /hubspot/lead/", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["hubspot"]}, "parameters": []}, "/hubspot/note/": {"post": {"operationId": "hubspot_note_create", "description": "POST /hubspot/note/  — creates a note associated to a contact", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["hubspot"]}, "parameters": []}, "/integrations/tanatorios/search/": {"post": {"operationId": "integrations_tanatorios_search_create", "summary": "Searches for available tanatorios and pricing via the external PAZY API.", "description": "Called after the user completes the ceremony step in the contracting flow,\nbefore showing the quota-configuration screen.\n\nPOST /integrations/tanatorios/search/", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["integrations"]}, "parameters": []}, "/pack/": {"get": {"operationId": "pack_list", "description": "", "parameters": [{"name": "page", "in": "query", "description": "Un número de página dentro del conjunto de resultados paginado.", "required": false, "type": "integer"}, {"name": "page_size", "in": "query", "description": "Número de resultados a devolver por página.", "required": false, "type": "integer"}], "responses": {"200": {"description": "", "schema": {"required": ["count", "results"], "type": "object", "properties": {"count": {"type": "integer"}, "next": {"type": "string", "format": "uri", "x-nullable": true}, "previous": {"type": "string", "format": "uri", "x-nullable": true}, "results": {"type": "array", "items": {"$ref": "#/definitions/Pack"}}}}}}, "tags": ["pack"]}, "parameters": []}, "/pack/{id}/": {"get": {"operationId": "pack_read", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Pack"}}}, "tags": ["pack"]}, "parameters": [{"name": "id", "in": "path", "description": "Un valor de entero único que identifique este Pack.", "required": true, "type": "integer"}]}, "/payment/": {"get": {"operationId": "payment_list", "description": "", "parameters": [{"name": "page", "in": "query", "description": "Un número de página dentro del conjunto de resultados paginado.", "required": false, "type": "integer"}, {"name": "page_size", "in": "query", "description": "Número de resultados a devolver por página.", "required": false, "type": "integer"}], "responses": {"200": {"description": "", "schema": {"required": ["count", "results"], "type": "object", "properties": {"count": {"type": "integer"}, "next": {"type": "string", "format": "uri", "x-nullable": true}, "previous": {"type": "string", "format": "uri", "x-nullable": true}, "results": {"type": "array", "items": {"$ref": "#/definitions/Payment"}}}}}}, "tags": ["payment"]}, "parameters": []}, "/payment/{id}/": {"get": {"operationId": "payment_read", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Payment"}}}, "tags": ["payment"]}, "parameters": [{"name": "id", "in": "path", "description": "Un valor de entero único que identifique este Payment.", "required": true, "type": "integer"}]}, "/plan/calculator/": {"post": {"operationId": "plan_calculator", "description": "", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Plan"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/Plan"}}}, "tags": ["plan"]}, "parameters": []}, "/plan/prices/": {"post": {"operationId": "plan_prices", "description": "", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Plan"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/Plan"}}}, "tags": ["plan"]}, "parameters": []}, "/plan/{id}/": {"get": {"operationId": "plan_read", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Plan"}}}, "tags": ["plan"]}, "parameters": [{"name": "id", "in": "path", "description": "Un valor de entero único que identifique este Plan.", "required": true, "type": "integer"}]}, "/preference/": {"get": {"operationId": "preference_list", "description": "", "parameters": [{"name": "page", "in": "query", "description": "Un número de página dentro del conjunto de resultados paginado.", "required": false, "type": "integer"}, {"name": "page_size", "in": "query", "description": "Número de resultados a devolver por página.", "required": false, "type": "integer"}], "responses": {"200": {"description": "", "schema": {"required": ["count", "results"], "type": "object", "properties": {"count": {"type": "integer"}, "next": {"type": "string", "format": "uri", "x-nullable": true}, "previous": {"type": "string", "format": "uri", "x-nullable": true}, "results": {"type": "array", "items": {"$ref": "#/definitions/Preference"}}}}}}, "tags": ["preference"]}, "parameters": []}, "/preference/{id}/": {"get": {"operationId": "preference_read", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Preference"}}}, "tags": ["preference"]}, "parameters": [{"name": "id", "in": "path", "description": "Un valor de entero único que identifique este Preference.", "required": true, "type": "integer"}]}, "/rest-auth/login/": {"post": {"operationId": "rest-auth_login_create", "description": "Check the credentials and return the REST Token\nif the credentials are valid and authenticated.\nCalls Django Auth login method to register User ID\nin Django session framework\n\nAccept the following POST parameters: username, password\nReturn the REST Framework Token Object's key.", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Login"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/Login"}}}, "tags": ["rest-auth"]}, "parameters": []}, "/rest-auth/logout/": {"get": {"operationId": "rest-auth_logout_list", "summary": "Calls Django logout method and delete the Token object\nassigned to the current User object.", "description": "Accepts/Returns nothing.", "parameters": [], "responses": {"200": {"description": ""}}, "tags": ["rest-auth"]}, "post": {"operationId": "rest-auth_logout_create", "summary": "Calls Django logout method and delete the Token object\nassigned to the current User object.", "description": "Accepts/Returns nothing.", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["rest-auth"]}, "parameters": []}, "/rest-auth/password/change/": {"post": {"operationId": "rest-auth_password_change_create", "summary": "Calls Django Auth SetPasswordForm save method.", "description": "Accepts the following POST parameters: new_password1, new_password2\nReturns the success/fail message.", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/PasswordChange"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/PasswordChange"}}}, "tags": ["rest-auth"]}, "parameters": []}, "/rest-auth/password/reset/": {"post": {"operationId": "rest-auth_password_reset_create", "summary": "Calls Django Auth PasswordResetForm save method.", "description": "Accepts the following POST parameters: email\nReturns the success/fail message.", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/PasswordReset"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/PasswordReset"}}}, "tags": ["rest-auth"]}, "parameters": []}, "/rest-auth/password/reset/confirm/": {"post": {"operationId": "rest-auth_password_reset_confirm_create", "summary": "Password reset e-mail link is confirmed, therefore\nthis resets the user's password.", "description": "Accepts the following POST parameters: token, uid,\n    new_password1, new_password2\nReturns the success/fail message.", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/PasswordResetConfirm"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/PasswordResetConfirm"}}}, "tags": ["rest-auth"]}, "parameters": []}, "/rest-auth/registration/": {"post": {"operationId": "rest-auth_registration_create", "summary": "Registers a new user.", "description": "Accepts the following POST parameters: username, email, password1, password2.", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Register"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/Register"}}}, "tags": ["rest-auth"]}, "parameters": []}, "/rest-auth/registration/resend-email/": {"post": {"operationId": "rest-auth_registration_resend-email_create", "summary": "Resends another email to an unverified email.", "description": "Accepts the following POST parameter: email.", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/ResendEmailVerification"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/ResendEmailVerification"}}}, "tags": ["rest-auth"]}, "parameters": []}, "/rest-auth/registration/verify-email/": {"post": {"operationId": "rest-auth_registration_verify-email_create", "summary": "Verifies the email associated with the provided key.", "description": "Accepts the following POST parameter: key.", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/VerifyEmail"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/VerifyEmail"}}}, "tags": ["rest-auth"]}, "parameters": []}, "/rest-auth/user/": {"get": {"operationId": "rest-auth_user_read", "summary": "Reads and updates UserModel fields\nAccepts GET, PUT, PATCH methods.", "description": "Default accepted fields: username, first_name, last_name\nDefault display fields: pk, username, email, first_name, last_name\nRead-only fields: pk, email\n\nReturns UserModel fields.", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/UserDetails"}}}, "tags": ["rest-auth"]}, "put": {"operationId": "rest-auth_user_update", "summary": "Reads and updates UserModel fields\nAccepts GET, PUT, PATCH methods.", "description": "Default accepted fields: username, first_name, last_name\nDefault display fields: pk, username, email, first_name, last_name\nRead-only fields: pk, email\n\nReturns UserModel fields.", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/UserDetails"}}], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/UserDetails"}}}, "tags": ["rest-auth"]}, "patch": {"operationId": "rest-auth_user_partial_update", "summary": "Reads and updates UserModel fields\nAccepts GET, PUT, PATCH methods.", "description": "Default accepted fields: username, first_name, last_name\nDefault display fields: pk, username, email, first_name, last_name\nRead-only fields: pk, email\n\nReturns UserModel fields.", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/UserDetails"}}], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/UserDetails"}}}, "tags": ["rest-auth"]}, "parameters": []}, "/service/": {"get": {"operationId": "service_list", "description": "", "parameters": [{"name": "page", "in": "query", "description": "Un número de página dentro del conjunto de resultados paginado.", "required": false, "type": "integer"}, {"name": "page_size", "in": "query", "description": "Número de resultados a devolver por página.", "required": false, "type": "integer"}], "responses": {"200": {"description": "", "schema": {"required": ["count", "results"], "type": "object", "properties": {"count": {"type": "integer"}, "next": {"type": "string", "format": "uri", "x-nullable": true}, "previous": {"type": "string", "format": "uri", "x-nullable": true}, "results": {"type": "array", "items": {"$ref": "#/definitions/Service"}}}}}}, "tags": ["service"]}, "parameters": []}, "/service/{id}/": {"get": {"operationId": "service_read", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Service"}}}, "tags": ["service"]}, "parameters": [{"name": "id", "in": "path", "description": "Un valor de entero único que identifique este Service.", "required": true, "type": "integer"}]}, "/users/resend-setup-token/": {"post": {"operationId": "users_resend-setup-token_create", "summary": "Returns the pending setup token for a user who hasn't created their password yet.", "description": "POST /users/resend-setup-token/", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["users"]}, "parameters": []}, "/users/set-password/": {"post": {"operationId": "users_set-password_create", "summary": "Allows a newly created user to set their password using a one-time setup token.", "description": "POST /users/set-password/", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["users"]}, "parameters": []}, "/users/upload-dni/": {"patch": {"operationId": "users_upload-dni_partial_update", "summary": "Allows an authenticated user to upload a DNI image.", "description": "PATCH /users/upload-dni/\n\nBody (multipart/form-data):\n    - dni_image (file): the DNI image file", "parameters": [], "responses": {"200": {"description": ""}}, "consumes": ["multipart/form-data", "application/x-www-form-urlencoded"], "tags": ["users"]}, "parameters": []}, "/wannme/webhook/": {"post": {"operationId": "wannme_webhook_create", "description": "POST /wannme/webhook/", "parameters": [], "responses": {"201": {"description": ""}}, "tags": ["wannme"]}, "parameters": []}}, "definitions": {"Benefit": {"required": ["name", "link", "link_label"], "type": "object", "properties": {"id": {"title": "ID", "type": "integer", "readOnly": true}, "created_date": {"title": "Created_date", "type": "string", "format": "date-time", "readOnly": true}, "updated_date": {"title": "Updated_date", "type": "string", "format": "date-time", "readOnly": true}, "name": {"title": "Nombre", "type": "string", "maxLength": 100, "minLength": 1}, "description": {"title": "Description", "type": "string", "x-nullable": true}, "image": {"title": "Image", "description": "Sube una imagen en formato PNG o JPG.", "type": "string", "readOnly": true, "x-nullable": true, "format": "uri"}, "link": {"title": "Link", "type": "string", "format": "uri", "maxLength": 200, "minLength": 1}, "link_label": {"title": "Link_label", "type": "string", "maxLength": 50, "minLength": 1}, "active": {"title": "Activo", "type": "boolean"}, "order": {"title": "Order", "type": "integer", "maximum": 32767, "minimum": 0}}}, "UserProfile": {"required": ["password", "username", "phone_number", "dni", "birth_date", "postal_code"], "type": "object", "properties": {"id": {"title": "ID", "type": "integer", "readOnly": true}, "password": {"title": "Contraseña", "type": "string", "maxLength": 128, "minLength": 1}, "last_login": {"title": "Último inicio de sesión", "type": "string", "format": "date-time", "x-nullable": true}, "is_superuser": {"title": "Estado de superusuario", "description": "Indica que este usuario tiene todos los permisos sin asignárselos explícitamente.", "type": "boolean"}, "username": {"title": "Nombre de usuario", "description": "Requerido. 150 carácteres como máximo. Únicamente letras, dígitos y @/./+/-/_ ", "type": "string", "pattern": "^[\\w.@+-]+$", "maxLength": 150, "minLength": 1}, "first_name": {"title": "Nombre", "type": "string", "maxLength": 150}, "last_name": {"title": "Apellidos", "type": "string", "maxLength": 150}, "email": {"title": "Dirección de correo electrónico", "type": "string", "format": "email", "maxLength": 254}, "is_staff": {"title": "Es staff", "description": "Indica si el usuario puede entrar en este sitio de administración.", "type": "boolean"}, "is_active": {"title": "Activo", "description": "Indica si el usuario debe ser tratado como activo. Desmarque esta opción en lugar de borrar la cuenta.", "type": "boolean"}, "date_joined": {"title": "Fecha de alta", "type": "string", "format": "date-time"}, "phone_number": {"title": "Phone_number", "type": "string", "maxLength": 20, "minLength": 1}, "dni": {"title": "Dni", "type": "string", "maxLength": 10, "minLength": 1}, "dni_image": {"title": "Dni_image", "type": "string", "readOnly": true, "x-nullable": true, "format": "uri"}, "birth_date": {"title": "Birth_date", "type": "string", "format": "date"}, "postal_code": {"title": "Postal_code", "type": "string", "maxLength": 5, "minLength": 1}, "groups": {"description": "Los grupos a los que pertenece este usuario. Un usuario tendrá todos los permisos asignados a cada uno de sus grupos.", "type": "array", "items": {"title": "Grupos", "description": "Los grupos a los que pertenece este usuario. Un usuario tendrá todos los permisos asignados a cada uno de sus grupos.", "type": "integer"}, "uniqueItems": true}, "user_permissions": {"description": "Permisos específicos para este usuario.", "type": "array", "items": {"title": "Permisos de usuario", "description": "Permisos específicos para este usuario.", "type": "integer"}, "uniqueItems": true}}}, "Adviser": {"required": ["name", "email", "phone_number"], "type": "object", "properties": {"id": {"title": "ID", "type": "integer", "readOnly": true}, "created_date": {"title": "Created_date", "type": "string", "format": "date-time", "readOnly": true}, "updated_date": {"title": "Updated_date", "type": "string", "format": "date-time", "readOnly": true}, "name": {"title": "Nombre", "type": "string", "maxLength": 100, "minLength": 1}, "description": {"title": "Description", "type": "string", "x-nullable": true}, "email": {"title": "Email", "type": "string", "format": "email", "maxLength": 254, "minLength": 1}, "phone_number": {"title": "Phone_number", "type": "string", "maxLength": 20, "minLength": 1}}}, "Preference": {"required": ["name"], "type": "object", "properties": {"id": {"title": "ID", "type": "integer", "readOnly": true}, "created_date": {"title": "Created_date", "type": "string", "format": "date-time", "readOnly": true}, "updated_date": {"title": "Updated_date", "type": "string", "format": "date-time", "readOnly": true}, "name": {"title": "Nombre", "type": "string", "maxLength": 100, "minLength": 1}, "description": {"title": "Description", "type": "string", "x-nullable": true}, "image": {"title": "Image", "description": "Sube una imagen en formato PNG o JPG.", "type": "string", "readOnly": true, "x-nullable": true, "format": "uri"}, "order": {"title": "Order", "type": "integer", "maximum": 32767, "minimum": 0}}}, "Pack": {"required": ["name"], "type": "object", "properties": {"id": {"title": "ID", "type": "integer", "readOnly": true}, "features": {"title": "Features", "type": "string", "readOnly": true}, "created_date": {"title": "Created_date", "type": "string", "format": "date-time", "readOnly": true}, "updated_date": {"title": "Updated_date", "type": "string", "format": "date-time", "readOnly": true}, "name": {"title": "Nombre", "type": "string", "maxLength": 100, "minLength": 1}, "description": {"title": "Description", "type": "string", "x-nullable": true}, "image": {"title": "Image", "description": "Sube una imagen en formato PNG o JPG.", "type": "string", "readOnly": true, "x-nullable": true, "format": "uri"}, "ceremony": {"title": "Ceremony", "type": "boolean"}, "wake_room": {"title": "Wake_room", "type": "boolean"}, "order": {"title": "Order", "type": "integer", "maximum": 32767, "minimum": 0}, "feature_recogida": {"title": "Recogida y trámites administrativos", "type": "boolean"}, "feature_cremacion": {"title": "Cremación o Inhumación", "type": "boolean"}, "feature_fetrero_ecologico": {"title": "Féretro ecológico", "type": "boolean"}, "feature_fetrero_premium": {"title": "Féretro premium", "type": "boolean"}, "feature_urna": {"title": "Urna", "type": "boolean"}, "feature_velatorio": {"title": "Velatorio", "type": "boolean"}, "feature_recordatorios": {"title": "Recordatorios, despedidas, extras...", "type": "boolean"}}}, "Service": {"required": ["name", "price"], "type": "object", "properties": {"id": {"title": "ID", "type": "integer", "readOnly": true}, "created_date": {"title": "Created_date", "type": "string", "format": "date-time", "readOnly": true}, "updated_date": {"title": "Updated_date", "type": "string", "format": "date-time", "readOnly": true}, "name": {"title": "Nombre", "type": "string", "maxLength": 100, "minLength": 1}, "description": {"title": "Description", "type": "string", "x-nullable": true}, "image": {"title": "Image", "description": "Sube una imagen en formato PNG o JPG.", "type": "string", "readOnly": true, "x-nullable": true, "format": "uri"}, "price": {"title": "Price", "type": "string", "format": "decimal"}, "order": {"title": "Order", "type": "integer", "maximum": 32767, "minimum": 0}}}, "Contract": {"required": ["status", "person", "birth_date", "postal_code", "name", "phone_number", "dni", "price", "payment_price", "payment_paid"], "type": "object", "properties": {"id": {"title": "ID", "type": "integer", "readOnly": true}, "user": {"$ref": "#/definitions/UserProfile"}, "adviser": {"$ref": "#/definitions/Adviser"}, "preference": {"$ref": "#/definitions/Preference"}, "pack": {"$ref": "#/definitions/Pack"}, "services": {"type": "array", "items": {"$ref": "#/definitions/Service"}, "readOnly": true}, "created_date": {"title": "Created_date", "type": "string", "format": "date-time", "readOnly": true}, "updated_date": {"title": "Updated_date", "type": "string", "format": "date-time", "readOnly": true}, "status": {"title": "Status", "type": "string", "maxLength": 20, "minLength": 1}, "person": {"title": "Person", "type": "string", "maxLength": 5, "minLength": 1}, "birth_date": {"title": "Birth_date", "type": "string", "format": "date"}, "postal_code": {"title": "Postal_code", "type": "string", "maxLength": 5, "minLength": 1}, "name": {"title": "Nombre", "type": "string", "maxLength": 250, "minLength": 1}, "phone_number": {"title": "Phone_number", "type": "string", "maxLength": 20, "minLength": 1}, "dni": {"title": "Dni", "type": "string", "maxLength": 10, "minLength": 1}, "email": {"title": "Email", "type": "string", "format": "email", "maxLength": 254, "x-nullable": true}, "ceremony_type": {"title": "Ceremony_type", "type": "string", "maxLength": 10, "x-nullable": true}, "custom_service": {"title": "Custom_service", "type": "string", "maxLength": 250, "x-nullable": true}, "call_time": {"title": "Call_time", "type": "string", "maxLength": 20, "x-nullable": true}, "payment_method": {"title": "Payment_method", "type": "string", "maxLength": 10, "x-nullable": true}, "gocardless_mandate_id": {"title": "Gocardless_mandate_id", "type": "string", "maxLength": 50, "x-nullable": true}, "gocardless_subscription_id": {"title": "Gocardless_subscription_id", "type": "string", "maxLength": 50, "x-nullable": true}, "gocardless_payment_id": {"title": "Gocardless_payment_id", "type": "string", "maxLength": 50, "x-nullable": true}, "wannme_recurrent_id": {"title": "Wannme_recurrent_id", "type": "string", "maxLength": 100, "x-nullable": true}, "payments_total": {"title": "Payments_total", "type": "integer", "maximum": 32767, "minimum": 0}, "payments_made": {"title": "Payments_made", "type": "integer", "maximum": 32767, "minimum": 0}, "price": {"title": "Price", "type": "string", "format": "decimal"}, "payment_price": {"title": "Payment_price", "type": "string", "format": "decimal"}, "payment_paid": {"title": "Payment_paid", "type": "string", "format": "decimal"}}}, "Payment": {"required": ["price", "date", "status", "number", "contract"], "type": "object", "properties": {"id": {"title": "ID", "type": "integer", "readOnly": true}, "price": {"title": "Price", "type": "string", "format": "decimal"}, "date": {"title": "Fecha", "type": "string", "format": "date"}, "status": {"title": "Status", "type": "string", "maxLength": 20, "minLength": 1}, "number": {"title": "Number", "type": "integer", "maximum": 32767, "minimum": 0}, "gocardless_payment_id": {"title": "Gocardless_payment_id", "type": "string", "maxLength": 50, "x-nullable": true}, "wannme_payment_id": {"title": "Wannme_payment_id", "type": "string", "maxLength": 50, "x-nullable": true}, "contract": {"title": "Contract", "type": "integer"}}}, "Plan": {"required": ["province"], "type": "object", "properties": {"id": {"title": "ID", "type": "integer", "readOnly": true}, "preference": {"$ref": "#/definitions/Preference"}, "pack": {"$ref": "#/definitions/Pack"}, "created_date": {"title": "Created_date", "type": "string", "format": "date-time", "readOnly": true}, "updated_date": {"title": "Updated_date", "type": "string", "format": "date-time", "readOnly": true}, "province": {"title": "Province", "type": "string", "maxLength": 100, "minLength": 1}, "price": {"title": "Price", "type": "string", "format": "decimal"}, "estimation": {"title": "Estimation", "type": "string", "format": "decimal"}}}, "Login": {"required": ["password"], "type": "object", "properties": {"username": {"title": "Username", "type": "string"}, "email": {"title": "Email", "type": "string", "format": "email"}, "password": {"title": "Password", "type": "string", "minLength": 1}}}, "PasswordChange": {"required": ["new_password1", "new_password2"], "type": "object", "properties": {"new_password1": {"title": "New password1", "type": "string", "maxLength": 128, "minLength": 1}, "new_password2": {"title": "New password2", "type": "string", "maxLength": 128, "minLength": 1}}}, "PasswordReset": {"required": ["email"], "type": "object", "properties": {"email": {"title": "Email", "type": "string", "format": "email", "minLength": 1}}}, "PasswordResetConfirm": {"required": ["new_password1", "new_password2", "uid", "token"], "type": "object", "properties": {"new_password1": {"title": "New password1", "type": "string", "maxLength": 128, "minLength": 1}, "new_password2": {"title": "New password2", "type": "string", "maxLength": 128, "minLength": 1}, "uid": {"title": "Uid", "type": "string", "minLength": 1}, "token": {"title": "Token", "type": "string", "minLength": 1}}}, "Register": {"required": ["username", "email", "password1", "password2"], "type": "object", "properties": {"username": {"title": "Username", "type": "string", "maxLength": 150, "minLength": 1}, "email": {"title": "Email", "type": "string", "format": "email", "minLength": 1}, "password1": {"title": "Password1", "type": "string", "minLength": 1}, "password2": {"title": "Password2", "type": "string", "minLength": 1}}}, "ResendEmailVerification": {"required": ["email"], "type": "object", "properties": {"email": {"title": "Email", "type": "string", "format": "email", "minLength": 1}}}, "VerifyEmail": {"required": ["key"], "type": "object", "properties": {"key": {"title": "Key", "type": "string", "minLength": 1}}}, "UserDetails": {"required": ["username"], "type": "object", "properties": {"pk": {"title": "ID", "type": "integer", "readOnly": true}, "username": {"title": "Nombre de usuario", "description": "Requerido. 150 carácteres como máximo. Únicamente letras, dígitos y @/./+/-/_ ", "type": "string", "pattern": "^[\\w.@+-]+$", "maxLength": 150, "minLength": 1}, "email": {"title": "Dirección de correo electrónico", "type": "string", "format": "email", "readOnly": true, "minLength": 1}, "first_name": {"title": "Nombre", "type": "string", "maxLength": 150}, "last_name": {"title": "Apellidos", "type": "string", "maxLength": 150}}}}}