{"openapi":"3.1.0","info":{"title":"Elron Club Public Rental API","version":"2026-07-13","description":"Customer-safe furnished-apartment discovery, verified application and viewing progression, signed document uploads, approved quotes and expiry-bound holds, and human-gated signing, payment-status, and booking-confirmation reads."},"externalDocs":{"description":"External-agent discovery-to-booking example","url":"https://elron.club/agent-docs/example"},"servers":[{"url":"https://elron.club/api/public/v1"}],"paths":{"/rentals":{"get":{"operationId":"rentals.search","summary":"Search published rentals","parameters":[{"name":"locale","in":"query","required":false,"description":"Localized response language.","schema":{"type":"string","enum":["de","en"],"default":"de"}},{"name":"q","in":"query","required":false,"description":"Free text across rental, property, city, and region names.","schema":{"type":"string","maxLength":200}},{"name":"city","in":"query","required":false,"description":"City name; matching is case- and accent-insensitive.","schema":{"type":"string","maxLength":200}},{"name":"region","in":"query","required":false,"description":"Region name; common English, German, and unaccented forms are accepted.","schema":{"type":"string","maxLength":200}},{"name":"availableFrom","in":"query","required":false,"description":"Latest acceptable move-in date in ISO YYYY-MM-DD; later or unverified upcoming availability is excluded.","schema":{"type":"string","maxLength":200}},{"name":"availabilityStatus","in":"query","required":false,"description":"Availability scope. The default excludes unavailable inventory.","schema":{"type":"string","enum":["AVAILABLE_OR_UPCOMING","AVAILABLE","UPCOMING","UNAVAILABLE","ANY"],"default":"AVAILABLE_OR_UPCOMING"}},{"name":"minimumRooms","in":"query","required":false,"description":"Minimum room count.","schema":{"type":"number"}},{"name":"minimumOccupancy","in":"query","required":false,"description":"Minimum supported resident count.","schema":{"type":"number"}},{"name":"maximumMonthlyRent","in":"query","required":false,"description":"Maximum monthly rent in CHF for the selected duration.","schema":{"type":"number"}},{"name":"durationMonths","in":"query","required":false,"description":"Minimum rental duration used for price filtering.","schema":{"type":"integer","enum":[3,6,12]}},{"name":"limit","in":"query","required":false,"description":"Maximum shortlist size; inspect total and hasMore.","schema":{"type":"integer","minimum":1,"maximum":50,"default":10}}],"responses":{"200":{"description":"Bounded published rental results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RentalSearchResult"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/rentals/{rentalId}":{"get":{"operationId":"rentals.get","summary":"Get one published rental","parameters":[{"name":"rentalId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["de","en"],"default":"de"}}],"responses":{"200":{"description":"Customer-safe rental snapshot","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Rental"}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications":{"post":{"operationId":"applications.start","summary":"Start a duplicate-safe inquiry or application session","description":"Requires explicit current privacy consent. A verification link is delivered only to the applicant email and is never returned by this API.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationStartInput"}}}},"responses":{"201":{"description":"Verification-required scoped application session","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationStart"}}}},"400":{"$ref":"#/components/responses/ValidationFailed"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications/{sessionToken}":{"get":{"operationId":"applications.get_status","summary":"Get privacy-minimized application status","parameters":[{"name":"sessionToken","in":"path","required":true,"description":"Opaque bearer credential scoped to one application session.","schema":{"type":"string","minLength":1,"maxLength":500},"x-sensitive":true}],"responses":{"200":{"description":"Application status and permitted next actions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationStatus"}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"operationId":"applications.update","summary":"Update one verified application at an exact version","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationUpdateInput"}}}},"responses":{"200":{"description":"Updated privacy-minimized application state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationMutation"}}}},"400":{"$ref":"#/components/responses/ValidationFailed"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications/{sessionToken}/documents":{"post":{"operationId":"applications.upload_document","summary":"Upload one bounded verified-application document","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationDocumentInput"}}}},"responses":{"201":{"description":"Stored document reference without private storage location","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationDocument"}}}},"400":{"$ref":"#/components/responses/ValidationFailed"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications/{sessionToken}/documents/uploads":{"post":{"operationId":"applications.create_document_upload","summary":"Create a short-lived signed document upload form","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationDocumentUploadCreateInput"}}}},"responses":{"201":{"description":"Exact-size signed upload form valid for 15 minutes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationDocumentUploadSession"}}}},"400":{"$ref":"#/components/responses/ValidationFailed"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/applications/{sessionToken}/documents/uploads/{uploadSessionId}/complete":{"post":{"operationId":"applications.complete_document_upload","summary":"Verify and complete a signed document upload","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"},{"$ref":"#/components/parameters/UploadSessionId"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationDocumentUploadCompleteInput"}}}},"responses":{"200":{"description":"Verified private document reference","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationDocument"}}}},"400":{"$ref":"#/components/responses/ValidationFailed"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/applications/{sessionToken}/viewings":{"get":{"operationId":"viewings.get_status","summary":"Get customer-safe viewing coordination state","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"}],"responses":{"200":{"description":"Scoped proposals and confirmed viewing state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingStatus"}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications/{sessionToken}/viewings/availability":{"post":{"operationId":"viewings.propose_availability","summary":"Propose one to five future viewing slots","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingAvailabilityInput"}}}},"responses":{"201":{"description":"Viewing availability recorded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingMutation"}}}},"400":{"$ref":"#/components/responses/ValidationFailed"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/applications/{sessionToken}/viewings/proposals/{proposalId}/respond":{"post":{"operationId":"viewings.respond_to_proposal","summary":"Accept or decline one pending Elron Club proposal","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"},{"$ref":"#/components/parameters/ViewingProposalId"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingResponseInput"}}}},"responses":{"200":{"description":"Explicit viewing response recorded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingMutation"}}}},"400":{"$ref":"#/components/responses/ValidationFailed"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/applications/{sessionToken}/submit":{"post":{"operationId":"applications.submit","summary":"Submit one complete verified application for review","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationSubmitInput"}}}},"responses":{"200":{"description":"Submitted privacy-minimized application state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationMutation"}}}},"400":{"$ref":"#/components/responses/ValidationFailed"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications/{sessionToken}/quotes":{"post":{"operationId":"quotes.create","summary":"Create a 24-hour quote from internally approved terms","description":"Requires a submitted, due-diligence-positive, solvency-passed request in READY_FOR_CONTRACT. Quote creation does not hold inventory.","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["expectedApplicationVersion"],"properties":{"expectedApplicationVersion":{"type":"string","format":"date-time"}}}}}},"responses":{"201":{"description":"Approved expiry-bound quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RentalQuote"}}}},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications/{sessionToken}/quotes/{quoteId}":{"get":{"operationId":"quotes.get","summary":"Get one session-owned quote and live hold state","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"},{"$ref":"#/components/parameters/QuoteId"}],"responses":{"200":{"description":"Privacy-minimized quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RentalQuote"}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications/{sessionToken}/quotes/{quoteId}/accept":{"post":{"operationId":"quotes.accept","summary":"Accept an exact quote and claim a 30-minute hold","description":"Requires explicit confirmation. This claims inventory but does not create or sign a contract and does not authorize payment.","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"},{"$ref":"#/components/parameters/QuoteId"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["expectedQuoteVersion","acceptanceConfirmed"],"properties":{"expectedQuoteVersion":{"type":"string","format":"date-time"},"acceptanceConfirmed":{"const":true}}}}}},"responses":{"200":{"description":"Accepted quote with expiry-bound hold state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RentalQuote"}}}},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications/{sessionToken}/reservation":{"get":{"operationId":"reservations.get_status","summary":"Get minimized hold and reservation progression state","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"}],"responses":{"200":{"description":"Scoped reservation state and permitted next actions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationStatus"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications/{sessionToken}/contract-signing":{"get":{"operationId":"contracts.get_signing_link","summary":"Get the verified applicant signer's secure contract link","description":"Returns a URL only when an active signer invitation matches the email-verified application session. Signature remains a human verification and legal action.","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"}],"responses":{"200":{"description":"Scoped signer status and optional secure URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractSigning"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications/{sessionToken}/payment":{"get":{"operationId":"payments.get_status","summary":"Get scoped first-payment status","description":"Returns payment due/received truth and, only when a reviewed provider supplies an exact unexpired authorization session, its human-action URL. No authorization URL is fabricated.","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"}],"responses":{"200":{"description":"First-payment status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentStatus"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/applications/{sessionToken}/booking":{"get":{"operationId":"bookings.get_confirmation","summary":"Get authoritative booking confirmation","description":"Returns a confirmation only after the application request has converted into the authoritative Stay workflow.","parameters":[{"$ref":"#/components/parameters/ApplicationSessionToken"}],"responses":{"200":{"description":"Privacy-minimized booking state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingConfirmation"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}}},"components":{"parameters":{"ApplicationSessionToken":{"name":"sessionToken","in":"path","required":true,"description":"Opaque bearer credential scoped to one application session.","schema":{"type":"string","minLength":1,"maxLength":500},"x-sensitive":true},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}},"QuoteId":{"name":"quoteId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}},"UploadSessionId":{"name":"uploadSessionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},"ViewingProposalId":{"name":"proposalId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}},"schemas":{"Error":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":"integer"}}}}},"RentalSearchResult":{"type":"object","additionalProperties":false,"required":["schemaVersion","generatedAt","count","total","hasMore","rentals"],"properties":{"schemaVersion":{"const":"2026-07-13"},"generatedAt":{"type":"string","format":"date-time"},"count":{"type":"integer","minimum":0,"maximum":50},"total":{"type":"integer","minimum":0},"hasMore":{"type":"boolean"},"rentals":{"type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/RentalSearchItem"}}}},"RentalLocation":{"type":"object","additionalProperties":false,"required":["propertyName","city","region","street","postalCode","countryCode","latitude","longitude"],"properties":{"propertyName":{"type":"string"},"city":{"type":"string"},"region":{"type":"string"},"street":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"countryCode":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]}}},"RentalSearchLocation":{"type":"object","additionalProperties":false,"required":["propertyName","city","region","postalCode","countryCode"],"properties":{"propertyName":{"type":"string"},"city":{"type":"string"},"region":{"type":"string"},"postalCode":{"type":["string","null"]},"countryCode":{"type":["string","null"]}}},"RentalApartment":{"type":"object","additionalProperties":false,"required":["label","rooms","areaSquareMeters","maximumOccupancy","floor","furnished"],"properties":{"label":{"type":["string","null"]},"rooms":{"type":["number","null"]},"areaSquareMeters":{"type":["number","null"]},"maximumOccupancy":{"type":["integer","null"]},"floor":{"type":["string","null"]},"furnished":{"type":"boolean"}}},"RentalAvailability":{"type":"object","additionalProperties":false,"required":["status","availableFrom","verifiedAt","canStartInquiry"],"properties":{"status":{"type":"string","enum":["AVAILABLE","UPCOMING","UNAVAILABLE"]},"availableFrom":{"type":["string","null"],"format":"date"},"verifiedAt":{"type":"string","format":"date-time"},"canStartInquiry":{"type":"boolean"}}},"RentalDurationPrice":{"type":"object","additionalProperties":false,"required":["durationMonths","monthlyRent"],"properties":{"durationMonths":{"type":"integer","enum":[3,6,12]},"monthlyRent":{"type":"number","minimum":0}}},"RentalPricing":{"type":"object","additionalProperties":false,"required":["currency","monthlyByDuration","parkingMonthly","deposit","included","paymentMethod"],"properties":{"currency":{"const":"CHF"},"monthlyByDuration":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/RentalDurationPrice"}},"parkingMonthly":{"type":["number","null"],"minimum":0},"deposit":{"type":["string","null"]},"included":{"type":["string","null"]},"paymentMethod":{"type":["string","null"]}}},"RentalSearchPricing":{"type":"object","additionalProperties":false,"required":["currency","monthlyByDuration","parkingMonthly","deposit"],"properties":{"currency":{"const":"CHF"},"monthlyByDuration":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/RentalDurationPrice"}},"parkingMonthly":{"type":["number","null"],"minimum":0},"deposit":{"type":["string","null"]}}},"RentalTerms":{"type":"object","additionalProperties":false,"required":["minimumStayMonths","noticePeriod","contractType","registrationPossible","petsAllowed"],"properties":{"minimumStayMonths":{"type":["integer","null"],"minimum":1},"noticePeriod":{"type":["string","null"]},"contractType":{"type":["string","null"]},"registrationPossible":{"type":["boolean","null"]},"petsAllowed":{"type":["boolean","null"]}}},"RentalSearchTerms":{"type":"object","additionalProperties":false,"required":["minimumStayMonths","noticePeriod","registrationPossible","petsAllowed"],"properties":{"minimumStayMonths":{"type":["integer","null"],"minimum":1},"noticePeriod":{"type":["string","null"]},"registrationPossible":{"type":["boolean","null"]},"petsAllowed":{"type":["boolean","null"]}}},"RentalMedia":{"type":"object","additionalProperties":false,"required":["images","videoUrl","virtualTourUrl"],"properties":{"images":{"type":"array","items":{"type":"string","format":"uri"}},"videoUrl":{"type":["string","null"],"format":"uri"},"virtualTourUrl":{"type":["string","null"],"format":"uri"}}},"RentalLinks":{"type":"object","additionalProperties":false,"required":["inquiry","application"],"properties":{"inquiry":{"type":["string","null"],"format":"uri"},"application":{"type":["string","null"],"format":"uri"}}},"RentalSearchItem":{"type":"object","additionalProperties":false,"required":["schemaVersion","rentalId","canonicalUrl","locale","title","summary","location","apartment","availability","pricing","terms","amenities","links"],"properties":{"schemaVersion":{"const":"2026-07-13"},"rentalId":{"type":"string"},"canonicalUrl":{"type":"string","format":"uri"},"locale":{"type":"string","enum":["de","en"]},"title":{"type":"string"},"summary":{"type":["string","null"]},"location":{"$ref":"#/components/schemas/RentalSearchLocation"},"apartment":{"$ref":"#/components/schemas/RentalApartment"},"availability":{"$ref":"#/components/schemas/RentalAvailability"},"pricing":{"$ref":"#/components/schemas/RentalSearchPricing"},"terms":{"$ref":"#/components/schemas/RentalSearchTerms"},"amenities":{"type":"array","items":{"type":"string"}},"links":{"$ref":"#/components/schemas/RentalLinks"}}},"Rental":{"type":"object","additionalProperties":false,"required":["schemaVersion","rentalId","canonicalUrl","locale","title","location","apartment","availability","pricing","terms","amenities","media","links"],"properties":{"schemaVersion":{"const":"2026-07-13"},"rentalId":{"type":"string"},"canonicalUrl":{"type":"string","format":"uri"},"locale":{"type":"string","enum":["de","en"]},"title":{"type":"string"},"summary":{"type":["string","null"]},"description":{"type":["string","null"]},"location":{"$ref":"#/components/schemas/RentalLocation"},"apartment":{"$ref":"#/components/schemas/RentalApartment"},"availability":{"$ref":"#/components/schemas/RentalAvailability"},"pricing":{"$ref":"#/components/schemas/RentalPricing"},"terms":{"$ref":"#/components/schemas/RentalTerms"},"amenities":{"type":"array","items":{"type":"string"}},"media":{"$ref":"#/components/schemas/RentalMedia"},"links":{"$ref":"#/components/schemas/RentalLinks"}}},"ApplicationStartInput":{"type":"object","additionalProperties":false,"required":["rentalId","journey","firstName","lastName","email","phone","privacyConsentAccepted","privacyConsentVersion"],"properties":{"rentalId":{"type":"string","minLength":1,"maxLength":200},"locale":{"type":"string","enum":["de","en"],"default":"de"},"journey":{"type":"string","enum":["INQUIRY","APPLICATION"]},"firstName":{"type":"string","minLength":1,"maxLength":100},"lastName":{"type":"string","minLength":1,"maxLength":100},"email":{"type":"string","format":"email","maxLength":320},"phone":{"type":"string","minLength":6,"maxLength":100},"desiredDurationMonths":{"type":["integer","null"],"minimum":1,"maximum":120},"requestedParkingCount":{"type":["integer","null"],"minimum":0,"maximum":10},"privacyConsentAccepted":{"const":true},"privacyConsentVersion":{"const":"2026-07-13"}}},"ApplicationStart":{"type":"object","additionalProperties":false,"required":["schemaVersion","rentalId","journey","status","reusedExistingApplication","privacyConsentVersion","verificationDelivery","session"],"properties":{"schemaVersion":{"const":"2026-07-13"},"rentalId":{"type":"string"},"journey":{"type":"string","enum":["INQUIRY","APPLICATION"]},"status":{"const":"EMAIL_VERIFICATION_REQUIRED"},"reusedExistingApplication":{"type":"boolean"},"privacyConsentVersion":{"const":"2026-07-13"},"verificationDelivery":{"type":"object"},"session":{"type":"object","description":"Scoped bearer session. It cannot progress until the applicant uses the separately emailed verification link."}}},"ApplicationStatus":{"type":"object","additionalProperties":false,"required":["schemaVersion","journey","status","emailVerified","submittedAt","updatedAt","nextActions"],"properties":{"schemaVersion":{"const":"2026-07-13"},"rentalId":{"type":["string","null"]},"journey":{"type":"string","enum":["INQUIRY","APPLICATION"]},"status":{"type":"string","enum":["EMAIL_VERIFICATION_REQUIRED","DRAFT","SUBMITTED","IN_REVIEW","CLOSED"]},"emailVerified":{"type":"boolean"},"submittedAt":{"type":["string","null"],"format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"nextActions":{"type":"array","items":{"type":"string","enum":["OPEN_EMAIL_VERIFICATION_LINK","UPDATE_APPLICATION","UPLOAD_DOCUMENTS","SUBMIT_APPLICATION","WAIT_FOR_REVIEW","CREATE_QUOTE","GET_RESERVATION_STATUS"]}}}},"ApplicationUpdateInput":{"type":"object","additionalProperties":false,"required":["expectedVersion"],"properties":{"expectedVersion":{"type":"string","format":"date-time"},"preferredLanguage":{"type":"string","enum":["de","en"]},"desiredMoveInDate":{"type":["string","null"],"format":"date"},"desiredMoveOutDate":{"type":["string","null"],"format":"date"},"desiredDurationMonths":{"type":["integer","null"],"minimum":1,"maximum":120},"requestedParkingCount":{"type":["integer","null"],"minimum":0,"maximum":10},"minorCount":{"type":["integer","null"],"minimum":0,"maximum":20},"petSummary":{"type":"string","maxLength":2000},"applicantMessage":{"type":"string","maxLength":10000},"employmentStatusSummary":{"type":"string","maxLength":2000},"employerOrCompanyName":{"type":"string","maxLength":500},"tenantProfiles":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/ApplicationTenantProfile"}},"tenantPartyMode":{"type":"string","enum":["PRIVATE","COMPANY"]},"companyTenantName":{"type":"string","maxLength":500},"companyTenantStreetLine1":{"type":"string","maxLength":200},"companyTenantStreetLine2":{"type":"string","maxLength":200},"companyTenantPostalCode":{"type":"string","maxLength":30},"companyTenantCity":{"type":"string","maxLength":100},"companyTenantCountryCode":{"type":"string","maxLength":10},"companyTenantSigners":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/ApplicationCompanySigner"}},"billingIntentType":{"type":"string","enum":["TENANT","COMPANY","OTHER_PRIVATE"]},"billingEmail":{"type":"string","format":"email","maxLength":320},"billingPrivateFirstName":{"type":"string","maxLength":100},"billingPrivateLastName":{"type":"string","maxLength":100},"companyBillingName":{"type":"string","maxLength":500},"billingStreetLine1":{"type":"string","maxLength":200},"billingStreetLine2":{"type":"string","maxLength":200},"billingPostalCode":{"type":"string","maxLength":30},"billingCity":{"type":"string","maxLength":100},"billingCountryCode":{"type":"string","maxLength":10},"contractLanguageCode":{"type":"string","enum":["DE","EN"]}}},"ApplicationTenantProfile":{"type":"object","additionalProperties":false,"required":["id","isMainTenant","firstName","lastName","birthDate","identityDocumentType","passportOrIdNumber","phone","email","nationalityCode","permitStatus","permitDetails","addressSameAsMainTenant","addressLine1","addressLine2","postalCode","city","countryCode","isBillingRecipient","isPrimaryTenancyContact"],"properties":{"id":{"type":"string","minLength":1,"maxLength":100},"isMainTenant":{"type":"boolean"},"firstName":{"type":"string","maxLength":100},"lastName":{"type":"string","maxLength":100},"birthDate":{"type":["string","null"],"format":"date"},"identityDocumentType":{"type":"string","enum":["PASSPORT","EU_ID"]},"passportOrIdNumber":{"type":"string","maxLength":200},"phone":{"type":"string","maxLength":100},"email":{"type":"string","maxLength":320},"nationalityCode":{"type":"string","maxLength":10},"permitStatus":{"type":"string"},"permitDetails":{"type":"string","maxLength":500},"addressSameAsMainTenant":{"type":"boolean"},"addressLine1":{"type":"string","maxLength":200},"addressLine2":{"type":"string","maxLength":200},"postalCode":{"type":"string","maxLength":30},"city":{"type":"string","maxLength":100},"countryCode":{"type":"string","maxLength":10},"isBillingRecipient":{"type":"boolean"},"isPrimaryTenancyContact":{"type":"boolean"}}},"ApplicationCompanySigner":{"type":"object","additionalProperties":false,"required":["id","firstName","lastName","roleTitle","email","phone"],"properties":{"id":{"type":"string","minLength":1,"maxLength":100},"firstName":{"type":"string","maxLength":100},"lastName":{"type":"string","maxLength":100},"roleTitle":{"type":"string","maxLength":100},"email":{"type":"string","maxLength":320},"phone":{"type":"string","maxLength":100}}},"ApplicationSubmitInput":{"type":"object","additionalProperties":false,"required":["expectedVersion","creditCheckConsentAccepted","truthConfirmationAccepted","consentVersion"],"properties":{"expectedVersion":{"type":"string","format":"date-time"},"creditCheckConsentAccepted":{"const":true},"truthConfirmationAccepted":{"const":true},"consentVersion":{"const":"2026-07-13"}}},"ApplicationDocumentInput":{"type":"object","additionalProperties":false,"required":["expectedVersion","contextKey","fileName","mimeType","sizeBytes","contentBase64"],"properties":{"expectedVersion":{"type":"string","format":"date-time"},"contextKey":{"type":"string","minLength":1,"maxLength":200},"fileName":{"type":"string","minLength":1,"maxLength":200},"mimeType":{"type":"string","enum":["application/pdf","image/jpeg","image/png"]},"sizeBytes":{"type":"integer","minimum":1,"maximum":10000000},"contentBase64":{"type":"string","minLength":4,"maxLength":14000000,"contentEncoding":"base64"}}},"ApplicationDocumentUploadCreateInput":{"type":"object","additionalProperties":false,"required":["expectedVersion","contextKey","fileName","mimeType","sizeBytes"],"properties":{"expectedVersion":{"type":"string","format":"date-time"},"contextKey":{"type":"string","minLength":1,"maxLength":200},"fileName":{"type":"string","minLength":1,"maxLength":200},"mimeType":{"type":"string","enum":["application/pdf","image/jpeg","image/png"]},"sizeBytes":{"type":"integer","minimum":1,"maximum":10000000}}},"ApplicationDocumentUploadCompleteInput":{"type":"object","additionalProperties":false,"required":["expectedVersion"],"properties":{"expectedVersion":{"type":"string","format":"date-time"}}},"ApplicationDocumentUploadSession":{"type":"object","additionalProperties":false,"required":["schemaVersion","uploadSessionId","method","uploadUrl","fields","expiresAt","requiredMimeType","requiredSizeBytes","message"],"properties":{"schemaVersion":{"const":"2026-07-13"},"uploadSessionId":{"type":"string","format":"uuid"},"method":{"const":"POST"},"uploadUrl":{"type":"string","format":"uri"},"fields":{"type":"object","additionalProperties":{"type":"string"}},"expiresAt":{"type":"string","format":"date-time"},"requiredMimeType":{"type":"string"},"requiredSizeBytes":{"type":"integer"},"message":{"type":"string"}}},"ApplicationMutation":{"type":"object","additionalProperties":false,"required":["schemaVersion","rentalId","status","version","submittedAt","message"],"properties":{"schemaVersion":{"const":"2026-07-13"},"rentalId":{"type":["string","null"]},"status":{"type":"string","enum":["DRAFT","SUBMITTED","IN_REVIEW"]},"version":{"type":"string","format":"date-time"},"submittedAt":{"type":["string","null"],"format":"date-time"},"message":{"type":"string"}}},"ApplicationDocument":{"type":"object","additionalProperties":false,"required":["schemaVersion","documentId","contextKey","fileName","mimeType","sizeBytes","version","message"],"properties":{"schemaVersion":{"const":"2026-07-13"},"documentId":{"type":"string"},"contextKey":{"type":"string"},"fileName":{"type":"string"},"mimeType":{"type":"string"},"sizeBytes":{"type":"integer"},"version":{"type":"string","format":"date-time"},"message":{"type":"string"}}},"ViewingAvailabilityInput":{"type":"object","additionalProperties":false,"required":["expectedVersion","slots"],"properties":{"expectedVersion":{"type":"string","format":"date-time"},"slots":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"object","additionalProperties":false,"required":["proposedAt"],"properties":{"proposedAt":{"type":"string","format":"date-time"},"note":{"type":["string","null"],"maxLength":1000}}}}}},"ViewingResponseInput":{"type":"object","additionalProperties":false,"required":["expectedVersion","action","responseConfirmed"],"properties":{"expectedVersion":{"type":"string","format":"date-time"},"action":{"type":"string","enum":["ACCEPT","DECLINE"]},"responseConfirmed":{"const":true}}},"ViewingMutation":{"type":"object","additionalProperties":false,"required":["schemaVersion","status","proposalId","version","message"],"properties":{"schemaVersion":{"const":"2026-07-13"},"status":{"type":"string","enum":["PROPOSED","ACCEPTED","DECLINED"]},"proposalId":{"type":["string","null"]},"version":{"type":"string","format":"date-time"},"message":{"type":"string"}}},"ViewingStatus":{"type":"object","additionalProperties":false,"required":["schemaVersion","applicationVersion","proposals","confirmedViewings"],"properties":{"schemaVersion":{"const":"2026-07-13"},"applicationVersion":{"type":"string","format":"date-time"},"proposals":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["proposalId","proposedAt","proposedBy","status","relatedRentalLabel"],"properties":{"proposalId":{"type":"string"},"proposedAt":{"type":"string","format":"date-time"},"proposedBy":{"type":"string","enum":["ELRON","APPLICANT"]},"status":{"type":"string","enum":["PROPOSED","ACCEPTED","DECLINED"]},"relatedRentalLabel":{"type":["string","null"]}}}},"confirmedViewings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["scheduledAt","status","mode","location"],"properties":{"scheduledAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["CONFIRMED","COMPLETED","CANCELLED"]},"mode":{"type":"string"},"location":{"type":["string","null"]}}}}}},"RentalQuote":{"type":"object","additionalProperties":false,"required":["schemaVersion","quoteId","version","rentalId","status","issuedAt","expiresAt","terms","availability"],"properties":{"schemaVersion":{"const":"2026-07-13"},"quoteId":{"type":"string"},"version":{"type":"string","format":"date-time"},"rentalId":{"type":["string","null"]},"status":{"type":"string","enum":["ACTIVE","ACCEPTED","EXPIRED","SUPERSEDED","CANCELLED"]},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"terms":{"type":"object","additionalProperties":false,"required":["currency","monthlyRent","netMonthlyRent","deposit","billingPeriod","moveInDate","moveOutDate","parkingCount","parkingSummary","utilitySummary","ancillaryRoomsSummary","sharedRoomsSummary","noticePeriodMonths","firstTerminableAt","specialAgreementsSummary","contractLanguageCode"],"properties":{"currency":{"type":"string"},"monthlyRent":{"type":"string","pattern":"^[0-9]+\\.[0-9]{2}$"},"netMonthlyRent":{"type":["string","null"]},"deposit":{"type":["string","null"]},"billingPeriod":{"type":["string","null"]},"moveInDate":{"type":"string","format":"date"},"moveOutDate":{"type":["string","null"],"format":"date"},"parkingCount":{"type":"integer","minimum":0},"parkingSummary":{"type":["string","null"]},"utilitySummary":{"type":["string","null"]},"ancillaryRoomsSummary":{"type":["string","null"]},"sharedRoomsSummary":{"type":["string","null"]},"noticePeriodMonths":{"type":["integer","null"]},"firstTerminableAt":{"type":["string","null"],"format":"date-time"},"specialAgreementsSummary":{"type":["string","null"]},"contractLanguageCode":{"type":["string","null"]}}},"availability":{"type":"object","additionalProperties":false,"required":["status","checkedAt","holdExpiresAt"],"properties":{"status":{"type":"string","enum":["AVAILABLE_FOR_HOLD","HOLD_ACTIVE","NO_LONGER_AVAILABLE"]},"checkedAt":{"type":"string","format":"date-time"},"holdExpiresAt":{"type":["string","null"],"format":"date-time"}}}}},"ReservationStatus":{"type":"object","additionalProperties":false,"required":["schemaVersion","rentalId","status","version","holdExpiresAt","nextActions"],"properties":{"schemaVersion":{"const":"2026-07-13"},"rentalId":{"type":["string","null"]},"status":{"type":"string","enum":["NO_HOLD","HOLD_ACTIVE","HOLD_EXPIRED","CONTRACT_PREPARING","AWAITING_SIGNATURE","SIGNED_AWAITING_PAYMENT","PAYMENT_OVERDUE","RESERVED","CONFIRMED","CANCELLED"]},"version":{"type":["string","null"],"format":"date-time"},"holdExpiresAt":{"type":["string","null"],"format":"date-time"},"nextActions":{"type":"array","items":{"type":"string"}}}},"ContractSigning":{"type":"object","additionalProperties":false,"required":["schemaVersion","status","version","signingUrl","signerStatus","message"],"properties":{"schemaVersion":{"const":"2026-07-13"},"status":{"type":"string","enum":["NOT_READY","READY_TO_SIGN","SIGNED","DECLINED","EXPIRED"]},"version":{"type":["string","null"],"format":"date-time"},"signingUrl":{"type":["string","null"],"format":"uri","x-sensitive":true},"signerStatus":{"type":["string","null"]},"message":{"type":"string"}}},"PaymentStatus":{"type":"object","additionalProperties":false,"required":["schemaVersion","status","version","dueAt","paidAt","authorizationUrl","authorizationExpiresAt","message"],"properties":{"schemaVersion":{"const":"2026-07-13"},"status":{"type":"string","enum":["NOT_READY","AWAITING_PAYMENT","OVERDUE","PAID"]},"version":{"type":["string","null"],"format":"date-time"},"dueAt":{"type":["string","null"],"format":"date-time"},"paidAt":{"type":["string","null"],"format":"date-time"},"authorizationUrl":{"type":["string","null"],"format":"uri","x-sensitive":true},"authorizationExpiresAt":{"type":["string","null"],"format":"date-time"},"message":{"type":"string"}}},"BookingConfirmation":{"type":"object","additionalProperties":false,"required":["schemaVersion","status","version","confirmationReference","rentalId","moveInAt","moveOutAt","message"],"properties":{"schemaVersion":{"const":"2026-07-13"},"status":{"type":"string","enum":["NOT_CONFIRMED","CONFIRMED","ACTIVE","COMPLETED","CANCELLED"]},"version":{"type":["string","null"],"format":"date-time"},"confirmationReference":{"type":["string","null"]},"rentalId":{"type":["string","null"]},"moveInAt":{"type":["string","null"],"format":"date-time"},"moveOutAt":{"type":["string","null"],"format":"date-time"},"message":{"type":"string"}}}},"responses":{"NotFound":{"description":"Published rental not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ValidationFailed":{"description":"Input or consent validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Conflict":{"description":"Idempotency or current-state conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unavailable":{"description":"Storage provider unavailable or outcome requires reconciliation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}