{"openapi":"3.1.0","info":{"title":"PIAX API","version":"1.0.0"},"paths":{"/auth/register":{"post":{"tags":["auth"],"summary":"Register","operationId":"register_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRegister"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/device":{"post":{"tags":["auth"],"summary":"Device Auth","description":"Login-free sign-in. The first call from a new install creates its account;\nlater calls with the same device id + secret return a fresh token for it.","operationId":"device_auth_auth_device_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceAuthRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceAuthOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/phone/start":{"post":{"tags":["auth"],"summary":"Start Phone Restore","description":"Texts a code for restoring an account on a new install. Always sends (after rate\nlimits), so the response never reveals whether the number has a PIAX account.","operationId":"start_phone_restore_auth_phone_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneCodeRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/phone/restore":{"post":{"tags":["auth"],"summary":"Restore With Phone","description":"Signs this install in to the account that owns the verified number, so a reinstall\nor a new phone gets her old cycle history, orders, appointments and chats back.","operationId":"restore_with_phone_auth_phone_restore_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneRestoreRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneRestoreOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_auth_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_auth_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/users/me":{"get":{"tags":["users"],"summary":"Get Profile","operationId":"get_profile_users_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["users"],"summary":"Update Profile","operationId":"update_profile_users_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/users/me/addresses":{"get":{"tags":["users"],"summary":"List Addresses","operationId":"list_addresses_users_me_addresses_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SavedAddressOut"},"type":"array","title":"Response List Addresses Users Me Addresses Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["users"],"summary":"Add Address","operationId":"add_address_users_me_addresses_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedAddressCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedAddressOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/users/me/addresses/{address_id}":{"patch":{"tags":["users"],"summary":"Update Address","description":"Edits one saved address in place, so re-ordering to the same door doesn't\npile up duplicate rows just to record a map pin.","operationId":"update_address_users_me_addresses__address_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"string","title":"Address Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedAddressUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedAddressOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["users"],"summary":"Delete Address","operationId":"delete_address_users_me_addresses__address_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"string","title":"Address Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cycle/status":{"get":{"tags":["cycle"],"summary":"Get Cycle Status","operationId":"get_cycle_status_cycle_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CycleStatusOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/cycle/entries":{"get":{"tags":["cycle"],"summary":"List Cycle Entries","operationId":"list_cycle_entries_cycle_entries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CycleEntryOut"},"type":"array","title":"Response List Cycle Entries Cycle Entries Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/cycle/cycles/previous":{"get":{"tags":["cycle"],"summary":"Previous Cycles","description":"Return completed (non-predicted) cycles formatted for the Flutter client.","operationId":"previous_cycles_cycle_cycles_previous_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PreviousCycleOut"},"type":"array","title":"Response Previous Cycles Cycle Cycles Previous Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/cycle/correct-prediction":{"post":{"tags":["cycle"],"summary":"Correct Prediction","operationId":"correct_prediction_cycle_correct_prediction_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionCorrection"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CycleStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/cycle/daily-log":{"get":{"tags":["cycle"],"summary":"Get Daily Log","operationId":"get_daily_log_cycle_daily_log_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"for_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"For Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailyLogOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["cycle"],"summary":"Upsert Daily Log","operationId":"upsert_daily_log_cycle_daily_log_put","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailyLogUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DailyLogOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cycle/conditions":{"get":{"tags":["cycle"],"summary":"Get Conditions","operationId":"get_conditions_cycle_conditions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/HealthConditionOut"},"type":"array","title":"Response Get Conditions Cycle Conditions Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/cycle/conditions/{condition_id}/toggle":{"post":{"tags":["cycle"],"summary":"Toggle Condition","operationId":"toggle_condition_cycle_conditions__condition_id__toggle_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"condition_id","in":"path","required":true,"schema":{"type":"string","title":"Condition Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthConditionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cycle/insights":{"get":{"tags":["cycle"],"summary":"Get Symptom Insights","operationId":"get_symptom_insights_cycle_insights_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SymptomInsightOut"},"type":"array","title":"Response Get Symptom Insights Cycle Insights Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/cycle/pad-changes":{"post":{"tags":["cycle"],"summary":"Log Pad Change","operationId":"log_pad_change_cycle_pad_changes_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PadChangeCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PadChangeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["cycle"],"summary":"List Pad Changes","operationId":"list_pad_changes_cycle_pad_changes_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PadChangeOut"},"title":"Response List Pad Changes Cycle Pad Changes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cycle/inventory":{"get":{"tags":["cycle"],"summary":"Get Inventory","operationId":"get_inventory_cycle_inventory_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/InventoryOut"},"type":"array","title":"Response Get Inventory Cycle Inventory Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"put":{"tags":["cycle"],"summary":"Set Inventory","operationId":"set_inventory_cycle_inventory_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventorySet"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventoryOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/cycle/run-out-prediction":{"get":{"tags":["cycle"],"summary":"Get Run Out Prediction","operationId":"get_run_out_prediction_cycle_run_out_prediction_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RunOutPrediction"},{"type":"null"}],"title":"Response Get Run Out Prediction Cycle Run Out Prediction Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/doctors":{"get":{"tags":["doctors"],"summary":"List Doctors","operationId":"list_doctors_doctors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DoctorOut"},"type":"array","title":"Response List Doctors Doctors Get"}}}}}}},"/doctors/{doctor_id}":{"get":{"tags":["doctors"],"summary":"Get Doctor","operationId":"get_doctor_doctors__doctor_id__get","parameters":[{"name":"doctor_id","in":"path","required":true,"schema":{"type":"string","title":"Doctor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoctorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/doctors/{doctor_id}/slots":{"get":{"tags":["doctors"],"summary":"Get Doctor Slots","operationId":"get_doctor_slots_doctors__doctor_id__slots_get","parameters":[{"name":"doctor_id","in":"path","required":true,"schema":{"type":"string","title":"Doctor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DaySlotsOut"},"title":"Response Get Doctor Slots Doctors  Doctor Id  Slots Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/doctors/appointments/me":{"get":{"tags":["doctors"],"summary":"List My Appointments","operationId":"list_my_appointments_doctors_appointments_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AppointmentOut"},"type":"array","title":"Response List My Appointments Doctors Appointments Me Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/doctors/appointments":{"post":{"tags":["doctors"],"summary":"Book Appointment","operationId":"book_appointment_doctors_appointments_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppointmentCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppointmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/doctors/appointments/{appointment_id}/cancel":{"post":{"tags":["doctors"],"summary":"Cancel Appointment","operationId":"cancel_appointment_doctors_appointments__appointment_id__cancel_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"appointment_id","in":"path","required":true,"schema":{"type":"string","title":"Appointment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppointmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/products":{"get":{"tags":["shop"],"summary":"List Products","operationId":"list_products_products_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ProductOut"},"type":"array","title":"Response List Products Products Get"}}}}}}},"/products/{product_id}":{"get":{"tags":["shop"],"summary":"Get Product","operationId":"get_product_products__product_id__get","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stores":{"get":{"tags":["shop"],"summary":"List Stores","operationId":"list_stores_stores_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/StoreLocationOut"},"type":"array","title":"Response List Stores Stores Get"}}}}}}},"/cart":{"get":{"tags":["shop"],"summary":"Get Cart","operationId":"get_cart_cart_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CartItemOut"},"type":"array","title":"Response Get Cart Cart Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["shop"],"summary":"Add To Cart","operationId":"add_to_cart_cart_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartItemAdd"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartItemOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"delete":{"tags":["shop"],"summary":"Clear Cart","operationId":"clear_cart_cart_delete","responses":{"204":{"description":"Successful Response"}},"security":[{"OAuth2PasswordBearer":[]}]}},"/cart/{item_id}":{"patch":{"tags":["shop"],"summary":"Update Cart Item","operationId":"update_cart_item_cart__item_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartItemUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CartItemOut"},{"type":"null"}],"title":"Response Update Cart Item Cart  Item Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/orders":{"get":{"tags":["shop"],"summary":"List Orders","operationId":"list_orders_orders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/OrderOut"},"type":"array","title":"Response List Orders Orders Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["shop"],"summary":"Place Order","operationId":"place_order_orders_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/orders/{order_id}":{"get":{"tags":["shop"],"summary":"Get Order","operationId":"get_order_orders__order_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/orders/{order_id}/cancel":{"post":{"tags":["shop"],"summary":"Cancel Order","operationId":"cancel_order_orders__order_id__cancel_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderCancel","default":{"reason":""}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/razorpay/config":{"get":{"tags":["payments"],"summary":"Get Razorpay Config","description":"Returns public Razorpay configuration for client checkout initialization.","operationId":"get_razorpay_config_payments_razorpay_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RazorpayConfigResponse"}}}}}}},"/payments/razorpay/create-order":{"post":{"tags":["payments"],"summary":"Create Payment Order","description":"Generates a Razorpay Order ID for online checkout.","operationId":"create_payment_order_payments_razorpay_create_order_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RazorpayOrderCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RazorpayOrderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/payments/razorpay/verify":{"post":{"tags":["payments"],"summary":"Verify Payment","description":"Verifies HMAC-SHA256 signature returned by Razorpay checkout.","operationId":"verify_payment_payments_razorpay_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RazorpayVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RazorpayVerifyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/chat/conversations":{"get":{"tags":["chat"],"summary":"List Conversations","operationId":"list_conversations_chat_conversations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ConversationOut"},"type":"array","title":"Response List Conversations Chat Conversations Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/chat/conversations/{conversation_id}":{"get":{"tags":["chat"],"summary":"Get Conversation","operationId":"get_conversation_chat_conversations__conversation_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["chat"],"summary":"Delete Conversation","operationId":"delete_conversation_chat_conversations__conversation_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/conversations/{conversation_id}/messages":{"get":{"tags":["chat"],"summary":"Get Messages","operationId":"get_messages_chat_conversations__conversation_id__messages_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Load older messages sent before this time","title":"Before"},"description":"Load older messages sent before this time"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MessageOut"},"title":"Response Get Messages Chat Conversations  Conversation Id  Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["chat"],"summary":"Send Message","operationId":"send_message_chat_conversations__conversation_id__messages_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/conversations/{conversation_id}/read":{"post":{"tags":["chat"],"summary":"Mark Read","operationId":"mark_read_chat_conversations__conversation_id__read_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/keys/me":{"put":{"tags":["chat"],"summary":"Publish My Key","description":"Stores this member's public key. The private key never leaves her phone.","operationId":"publish_my_key_chat_keys_me_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicKeyIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicKeyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/chat/invites":{"post":{"tags":["chat"],"summary":"Create Invite","operationId":"create_invite_chat_invites_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteCreate","default":{"max_uses":1}}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/chat/invites/{code}":{"get":{"tags":["chat"],"summary":"Preview Invite","operationId":"preview_invite_chat_invites__code__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitePreviewOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["chat"],"summary":"Revoke Invite","operationId":"revoke_invite_chat_invites__code__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/invites/{code}/accept":{"post":{"tags":["chat"],"summary":"Accept Invite","operationId":"accept_invite_chat_invites__code__accept_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/users/{user_id}/block":{"post":{"tags":["chat"],"summary":"Block User","operationId":"block_user_chat_users__user_id__block_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["chat"],"summary":"Unblock User","operationId":"unblock_user_chat_users__user_id__block_delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/bots":{"get":{"tags":["chat"],"summary":"List Bots","operationId":"list_bots_chat_bots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/HealthBotOut"},"type":"array","title":"Response List Bots Chat Bots Get"}}}}}}},"/chat/bots/{bot_slug}":{"get":{"tags":["chat"],"summary":"Get Bot","operationId":"get_bot_chat_bots__bot_slug__get","parameters":[{"name":"bot_slug","in":"path","required":true,"schema":{"type":"string","title":"Bot Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthBotOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/bots/{bot_slug}/messages":{"get":{"tags":["chat"],"summary":"Get Bot Conversation","operationId":"get_bot_conversation_chat_bots__bot_slug__messages_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"bot_slug","in":"path","required":true,"schema":{"type":"string","title":"Bot Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MessageOut"},"title":"Response Get Bot Conversation Chat Bots  Bot Slug  Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["chat"],"summary":"Message Bot","operationId":"message_bot_chat_bots__bot_slug__messages_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"bot_slug","in":"path","required":true,"schema":{"type":"string","title":"Bot Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotMessageCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotMessageOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/blog/articles":{"get":{"tags":["blog"],"summary":"List Articles","operationId":"list_articles_blog_articles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BlogArticleOut"},"type":"array","title":"Response List Articles Blog Articles Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/blog/articles/{article_id}":{"get":{"tags":["blog"],"summary":"Get Article","operationId":"get_article_blog_articles__article_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"article_id","in":"path","required":true,"schema":{"type":"string","title":"Article Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogArticleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/blog/articles/{article_id}/bookmark":{"post":{"tags":["blog"],"summary":"Toggle Bookmark","operationId":"toggle_bookmark_blog_articles__article_id__bookmark_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"article_id","in":"path","required":true,"schema":{"type":"string","title":"Article Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogArticleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/blog/bookmarks":{"get":{"tags":["blog"],"summary":"List Bookmarks","operationId":"list_bookmarks_blog_bookmarks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BlogArticleOut"},"type":"array","title":"Response List Bookmarks Blog Bookmarks Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/blog/myth-busters":{"get":{"tags":["blog"],"summary":"List Myth Busters","operationId":"list_myth_busters_blog_myth_busters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/MythBusterOut"},"type":"array","title":"Response List Myth Busters Blog Myth Busters Get"}}}}}}},"/subscriptions/plans":{"get":{"tags":["subscriptions"],"summary":"List Plans","operationId":"list_plans_subscriptions_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SubscriptionPlanOut"},"type":"array","title":"Response List Plans Subscriptions Plans Get"}}}}}}},"/subscriptions/me":{"get":{"tags":["subscriptions"],"summary":"My Subscription","operationId":"my_subscription_subscriptions_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/UserSubscriptionOut"},{"type":"null"}],"title":"Response My Subscription Subscriptions Me Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/subscriptions/subscribe":{"post":{"tags":["subscriptions"],"summary":"Subscribe","operationId":"subscribe_subscriptions_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSubscriptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/subscriptions/cancel":{"post":{"tags":["subscriptions"],"summary":"Cancel Subscription","operationId":"cancel_subscription_subscriptions_cancel_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSubscriptionOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/app/banners":{"get":{"tags":["content"],"summary":"List Banners","operationId":"list_banners_app_banners_get","parameters":[{"name":"placement","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"e.g. home_hero, shop_top","title":"Placement"},"description":"e.g. home_hero, shop_top"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BannerOut"},"title":"Response List Banners App Banners Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/config":{"get":{"tags":["content"],"summary":"Public Config","description":"Public app settings (pricing shown at checkout, support contacts, feature flags).","operationId":"public_config_app_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Config App Config Get"}}}}}}},"/app/version":{"get":{"tags":["content"],"summary":"App Version","description":"Whether this install should update. Versions are set on the admin \"App updates\" page.","operationId":"app_version_app_version_get","parameters":[{"name":"platform","in":"query","required":true,"schema":{"enum":["android","ios"],"type":"string","title":"Platform"}},{"name":"version","in":"query","required":true,"schema":{"type":"string","maxLength":32,"description":"The installed app's version, e.g. 1.0.11","title":"Version"},"description":"The installed app's version, e.g. 1.0.11"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppVersionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/me/avatar":{"post":{"tags":["content","users"],"summary":"Upload Avatar","operationId":"upload_avatar_users_me_avatar_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_avatar_users_me_avatar_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"delete":{"tags":["content","users"],"summary":"Remove Avatar","operationId":"remove_avatar_users_me_avatar_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/partner/auth/login":{"post":{"tags":["partner"],"summary":"Partner Login","operationId":"partner_login_partner_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerToken"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/me":{"get":{"tags":["partner"],"summary":"Partner Me","operationId":"partner_me_partner_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerMeOut"}}}}},"security":[{"HTTPBearer":[]}]}},"/partner/me/status":{"post":{"tags":["partner"],"summary":"Set Online","operationId":"set_online_partner_me_status_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerStatusUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerMeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/partner/me/location":{"post":{"tags":["partner"],"summary":"Update Location","operationId":"update_location_partner_me_location_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerLocationUpdate"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/partner/orders/available":{"get":{"tags":["partner"],"summary":"Available Orders","operationId":"available_orders_partner_orders_available_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PartnerOrderOffer"},"type":"array","title":"Response Available Orders Partner Orders Available Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/partner/orders/active":{"get":{"tags":["partner"],"summary":"Active Orders","operationId":"active_orders_partner_orders_active_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PartnerOrderOut"},"type":"array","title":"Response Active Orders Partner Orders Active Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/partner/orders/history":{"get":{"tags":["partner"],"summary":"Order History","operationId":"order_history_partner_orders_history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PartnerOrderOut"},"title":"Response Order History Partner Orders History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/orders/{order_id}/accept":{"post":{"tags":["partner"],"summary":"Accept Order","operationId":"accept_order_partner_orders__order_id__accept_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerOrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/orders/{order_id}/pickup":{"post":{"tags":["partner"],"summary":"Pickup Order","operationId":"pickup_order_partner_orders__order_id__pickup_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerOrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/orders/{order_id}/arrived":{"post":{"tags":["partner"],"summary":"Mark Arrived","operationId":"mark_arrived_partner_orders__order_id__arrived_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerOrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/orders/{order_id}/deliver":{"post":{"tags":["partner"],"summary":"Deliver Order","operationId":"deliver_order_partner_orders__order_id__deliver_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliverRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerOrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/orders/{order_id}/release":{"post":{"tags":["partner"],"summary":"Release Order","description":"Rider can't do this delivery (before pickup): put it back up for other riders.","operationId":"release_order_partner_orders__order_id__release_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseRequest","default":{"reason":""}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerOrderOffer"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/doctor/appointments":{"get":{"tags":["partner-doctor"],"summary":"List Appointments","description":"`open`: waiting for confirmation or confirmed, soonest first. `past`: finished ones, newest first.","operationId":"list_appointments_partner_doctor_appointments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"scope","in":"query","required":false,"schema":{"type":"string","pattern":"^(open|past)$","default":"open","title":"Scope"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":180,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PartnerAppointmentOut"},"title":"Response List Appointments Partner Doctor Appointments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/doctor/appointments/{appointment_id}/confirm":{"post":{"tags":["partner-doctor"],"summary":"Confirm","operationId":"confirm_partner_doctor_appointments__appointment_id__confirm_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"appointment_id","in":"path","required":true,"schema":{"type":"string","title":"Appointment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerAppointmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/doctor/appointments/{appointment_id}/decline":{"post":{"tags":["partner-doctor"],"summary":"Decline","description":"Doctor can't take it (before or after confirming). Frees the slot for other patients.","operationId":"decline_partner_doctor_appointments__appointment_id__decline_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"appointment_id","in":"path","required":true,"schema":{"type":"string","title":"Appointment Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeclineRequest","default":{"reason":""}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerAppointmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/doctor/appointments/{appointment_id}/complete":{"post":{"tags":["partner-doctor"],"summary":"Complete","operationId":"complete_partner_doctor_appointments__appointment_id__complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"appointment_id","in":"path","required":true,"schema":{"type":"string","title":"Appointment Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteRequest","default":{"note":""}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerAppointmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/doctor/appointments/{appointment_id}/no-show":{"post":{"tags":["partner-doctor"],"summary":"No Show","operationId":"no_show_partner_doctor_appointments__appointment_id__no_show_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"appointment_id","in":"path","required":true,"schema":{"type":"string","title":"Appointment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerAppointmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/calls/turn-credentials":{"get":{"tags":["calls"],"summary":"Get short-lived Cloudflare TURN credentials","description":"Returns a ready-to-use iceServers list for RTCPeerConnection.\n\nCalls the Cloudflare Realtime API to generate credentials with a 1-hour TTL.\nThe Flutter app fetches this once before placing or accepting a call.","operationId":"get_turn_credentials_calls_turn_credentials_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/users/me/phone":{"get":{"tags":["contacts","users"],"summary":"Phone Status","operationId":"phone_status_users_me_phone_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneStatusOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"delete":{"tags":["contacts","users"],"summary":"Remove Phone","operationId":"remove_phone_users_me_phone_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneStatusOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["contacts","users"],"summary":"Update Phone Settings","operationId":"update_phone_settings_users_me_phone_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneSettingsIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/users/me/phone/start":{"post":{"tags":["contacts","users"],"summary":"Start Phone Verification","operationId":"start_phone_verification_users_me_phone_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneStartIn"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/users/me/phone/verify":{"post":{"tags":["contacts","users"],"summary":"Verify Phone","operationId":"verify_phone_users_me_phone_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneVerifyIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/chat/contacts/match":{"post":{"tags":["contacts"],"summary":"Match Contacts","operationId":"match_contacts_chat_contacts_match_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsMatchIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ContactMatchOut"},"type":"array","title":"Response Match Contacts Chat Contacts Match Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/chat/contacts/start":{"post":{"tags":["contacts"],"summary":"Start Contact Chat","operationId":"start_contact_chat_chat_contacts_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactStartIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/health":{"get":{"tags":["health"],"summary":"Health Check","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AppVersionOut":{"properties":{"status":{"type":"string","enum":["none","optional","required"],"title":"Status"},"latest_version":{"type":"string","title":"Latest Version"},"min_version":{"type":"string","title":"Min Version"},"message":{"type":"string","title":"Message"},"store_url":{"type":"string","title":"Store Url"}},"type":"object","required":["status","latest_version","min_version","message","store_url"],"title":"AppVersionOut"},"AppointmentCreate":{"properties":{"doctor_id":{"type":"string","title":"Doctor Id"},"appointment_date":{"type":"string","title":"Appointment Date"},"appointment_time":{"type":"string","title":"Appointment Time"},"patient_name":{"type":"string","title":"Patient Name"},"age":{"type":"string","title":"Age"},"gender":{"type":"string","title":"Gender"},"problem_description":{"type":"string","title":"Problem Description","default":""}},"type":"object","required":["doctor_id","appointment_date","appointment_time","patient_name","age","gender"],"title":"AppointmentCreate"},"AppointmentOut":{"properties":{"id":{"type":"string","title":"Id"},"doctor":{"$ref":"#/components/schemas/DoctorOut"},"appointment_date":{"type":"string","title":"Appointment Date"},"appointment_time":{"type":"string","title":"Appointment Time"},"patient_name":{"type":"string","title":"Patient Name"},"age":{"type":"string","title":"Age"},"gender":{"type":"string","title":"Gender"},"problem_description":{"type":"string","title":"Problem Description"},"status":{"type":"string","title":"Status"},"cancelled_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancelled By"},"doctor_note":{"type":"string","title":"Doctor Note","default":""}},"type":"object","required":["id","doctor","appointment_date","appointment_time","patient_name","age","gender","problem_description","status"],"title":"AppointmentOut"},"BannerOut":{"properties":{"id":{"type":"string","title":"Id"},"placement":{"type":"string","title":"Placement"},"title":{"type":"string","title":"Title"},"subtitle":{"type":"string","title":"Subtitle"},"image_url":{"type":"string","title":"Image Url"},"cta_label":{"type":"string","title":"Cta Label"},"deep_link":{"type":"string","title":"Deep Link"}},"type":"object","required":["id","placement","title","subtitle","image_url","cta_label","deep_link"],"title":"BannerOut"},"BlogArticleOut":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"author_name":{"type":"string","title":"Author Name"},"author_title":{"type":"string","title":"Author Title"},"category":{"type":"string","title":"Category"},"published_date":{"type":"string","title":"Published Date"},"likes":{"type":"integer","title":"Likes"},"shares":{"type":"integer","title":"Shares"},"comments":{"type":"integer","title":"Comments"},"content":{"type":"string","title":"Content"},"has_audio":{"type":"boolean","title":"Has Audio"},"audio_title":{"type":"string","title":"Audio Title"},"cover_image_url":{"type":"string","title":"Cover Image Url","default":""},"is_bookmarked":{"type":"boolean","title":"Is Bookmarked","default":false}},"type":"object","required":["id","title","author_name","author_title","category","published_date","likes","shares","comments","content","has_audio","audio_title"],"title":"BlogArticleOut"},"Body_login_auth_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_auth_login_post"},"Body_upload_avatar_users_me_avatar_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_avatar_users_me_avatar_post"},"BotMessageCreate":{"properties":{"text":{"type":"string","maxLength":4000,"minLength":1,"title":"Text"}},"type":"object","required":["text"],"title":"BotMessageCreate"},"BotMessageOut":{"properties":{"reply":{"type":"string","title":"Reply"},"conversation_id":{"type":"string","title":"Conversation Id"}},"type":"object","required":["reply","conversation_id"],"title":"BotMessageOut"},"CartItemAdd":{"properties":{"product_id":{"type":"string","title":"Product Id"},"quantity":{"type":"integer","title":"Quantity","default":1},"selected_size":{"type":"string","title":"Selected Size","default":"Regular"}},"type":"object","required":["product_id"],"title":"CartItemAdd"},"CartItemOut":{"properties":{"id":{"type":"string","title":"Id"},"product":{"$ref":"#/components/schemas/ProductOut"},"quantity":{"type":"integer","title":"Quantity"},"selected_size":{"type":"string","title":"Selected Size"}},"type":"object","required":["id","product","quantity","selected_size"],"title":"CartItemOut"},"CartItemUpdate":{"properties":{"delta":{"type":"integer","title":"Delta"}},"type":"object","required":["delta"],"title":"CartItemUpdate"},"CompleteRequest":{"properties":{"note":{"type":"string","maxLength":1000,"title":"Note","default":""}},"type":"object","title":"CompleteRequest"},"ContactMatchOut":{"properties":{"phone":{"type":"string","title":"Phone"},"user_id":{"type":"string","title":"User Id"},"name":{"type":"string","title":"Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"}},"type":"object","required":["phone","user_id","name"],"title":"ContactMatchOut"},"ContactStartIn":{"properties":{"phone":{"type":"string","maxLength":32,"minLength":6,"title":"Phone"}},"type":"object","required":["phone"],"title":"ContactStartIn"},"ContactsMatchIn":{"properties":{"phones":{"items":{"type":"string"},"type":"array","maxItems":2000,"title":"Phones"}},"type":"object","required":["phones"],"title":"ContactsMatchIn"},"ConversationOut":{"properties":{"id":{"type":"string","title":"Id"},"kind":{"type":"string","title":"Kind"},"peer_id":{"type":"string","title":"Peer Id"},"peer_name":{"type":"string","title":"Peer Name"},"peer_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Peer Avatar Url"},"role":{"type":"string","title":"Role"},"is_online":{"type":"boolean","title":"Is Online"},"unread_count":{"type":"integer","title":"Unread Count","default":0},"is_neighbor_request":{"type":"boolean","title":"Is Neighbor Request","default":false},"last_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Message"},"last_message_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Message Time"},"last_message_sender_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Message Sender Id"},"peer_public_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Peer Public Key"}},"type":"object","required":["id","kind","peer_id","peer_name","role","is_online"],"title":"ConversationOut"},"CycleEntryOut":{"properties":{"id":{"type":"string","title":"Id"},"start_date":{"type":"string","format":"date","title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date"},"cycle_length_days":{"type":"integer","title":"Cycle Length Days"},"period_length_days":{"type":"integer","title":"Period Length Days"},"is_predicted":{"type":"boolean","title":"Is Predicted"}},"type":"object","required":["id","start_date","end_date","cycle_length_days","period_length_days","is_predicted"],"title":"CycleEntryOut"},"CycleStatusOut":{"properties":{"current_cycle_day":{"type":"integer","title":"Current Cycle Day"},"cycle_length":{"type":"integer","title":"Cycle Length"},"days_until_next_period":{"type":"integer","title":"Days Until Next Period"},"last_period_start_date":{"type":"string","format":"date","title":"Last Period Start Date"},"next_predicted_period_start_date":{"type":"string","format":"date","title":"Next Predicted Period Start Date"},"next_predicted_period_end_date":{"type":"string","format":"date","title":"Next Predicted Period End Date"},"is_irregular":{"type":"boolean","title":"Is Irregular"},"variability_days":{"type":"integer","title":"Variability Days"},"pregnancy_probability":{"type":"string","title":"Pregnancy Probability"},"cycle_health_status":{"type":"string","title":"Cycle Health Status"},"fertile_window_start_day":{"type":"integer","title":"Fertile Window Start Day"},"fertile_window_end_day":{"type":"integer","title":"Fertile Window End Day"}},"type":"object","required":["current_cycle_day","cycle_length","days_until_next_period","last_period_start_date","next_predicted_period_start_date","next_predicted_period_end_date","is_irregular","variability_days","pregnancy_probability","cycle_health_status","fertile_window_start_day","fertile_window_end_day"],"title":"CycleStatusOut"},"DailyLogOut":{"properties":{"menstrual_flow":{"type":"string","title":"Menstrual Flow","default":"None"},"feelings":{"items":{"type":"string"},"type":"array","title":"Feelings","default":[]},"moods":{"items":{"type":"string"},"type":"array","title":"Moods","default":[]},"birth_control":{"type":"string","title":"Birth Control","default":"None"},"bleeding_flow":{"type":"string","title":"Bleeding Flow","default":"None"},"pain_types":{"items":{"type":"string"},"type":"array","title":"Pain Types","default":[]},"sleep_range":{"type":"string","title":"Sleep Range","default":"6-9 hours"},"water_intake_liters":{"type":"number","title":"Water Intake Liters","default":0.0},"weight_kg":{"type":"number","title":"Weight Kg","default":0.0},"temperature_c":{"type":"number","title":"Temperature C","default":37.0},"tasks":{"items":{"type":"string"},"type":"array","title":"Tasks","default":[]},"active_pads_used":{"type":"integer","title":"Active Pads Used","default":0},"id":{"type":"string","title":"Id"},"date":{"type":"string","format":"date","title":"Date"}},"type":"object","required":["id","date"],"title":"DailyLogOut"},"DailyLogUpsert":{"properties":{"menstrual_flow":{"type":"string","title":"Menstrual Flow","default":"None"},"feelings":{"items":{"type":"string"},"type":"array","title":"Feelings","default":[]},"moods":{"items":{"type":"string"},"type":"array","title":"Moods","default":[]},"birth_control":{"type":"string","title":"Birth Control","default":"None"},"bleeding_flow":{"type":"string","title":"Bleeding Flow","default":"None"},"pain_types":{"items":{"type":"string"},"type":"array","title":"Pain Types","default":[]},"sleep_range":{"type":"string","title":"Sleep Range","default":"6-9 hours"},"water_intake_liters":{"type":"number","title":"Water Intake Liters","default":0.0},"weight_kg":{"type":"number","title":"Weight Kg","default":0.0},"temperature_c":{"type":"number","title":"Temperature C","default":37.0},"tasks":{"items":{"type":"string"},"type":"array","title":"Tasks","default":[]},"active_pads_used":{"type":"integer","title":"Active Pads Used","default":0},"date":{"type":"string","format":"date","title":"Date"}},"type":"object","required":["date"],"title":"DailyLogUpsert"},"DaySlotsOut":{"properties":{"date":{"type":"string","title":"Date"},"label":{"type":"string","title":"Label"},"slots":{"items":{"$ref":"#/components/schemas/SlotOut"},"type":"array","title":"Slots"}},"type":"object","required":["date","label","slots"],"title":"DaySlotsOut"},"DeclineRequest":{"properties":{"reason":{"type":"string","maxLength":300,"title":"Reason","default":""}},"type":"object","title":"DeclineRequest"},"DeliverRequest":{"properties":{"code":{"type":"string","maxLength":4,"minLength":4,"pattern":"^\\d{4}$","title":"Code"}},"type":"object","required":["code"],"title":"DeliverRequest"},"DeviceAuthOut":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"user_id":{"type":"string","title":"User Id"},"is_new_user":{"type":"boolean","title":"Is New User"}},"type":"object","required":["access_token","user_id","is_new_user"],"title":"DeviceAuthOut"},"DeviceAuthRequest":{"properties":{"device_id":{"type":"string","maxLength":64,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","title":"Device Id"},"device_secret":{"type":"string","maxLength":128,"minLength":32,"title":"Device Secret"},"platform":{"type":"string","maxLength":20,"title":"Platform","default":"unknown"},"name":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Name"}},"type":"object","required":["device_id","device_secret"],"title":"DeviceAuthRequest","description":"Sent by the app on first launch (and whenever its token expires)."},"DoctorOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"specialty":{"type":"string","title":"Specialty"},"rating":{"type":"number","title":"Rating"},"reviews_count":{"type":"integer","title":"Reviews Count"},"patients_count":{"type":"integer","title":"Patients Count"},"experience_years":{"type":"integer","title":"Experience Years"},"about":{"type":"string","title":"About"},"working_hours":{"type":"string","title":"Working Hours"},"consultation_fee":{"type":"number","title":"Consultation Fee"},"avatar_url":{"type":"string","title":"Avatar Url"},"available_dates":{"items":{"type":"string"},"type":"array","title":"Available Dates"},"available_slots":{"items":{"type":"string"},"type":"array","title":"Available Slots"}},"type":"object","required":["id","name","specialty","rating","reviews_count","patients_count","experience_years","about","working_hours","consultation_fee","avatar_url","available_dates","available_slots"],"title":"DoctorOut"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthBotOut":{"properties":{"id":{"type":"string","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"role_description":{"type":"string","title":"Role Description"},"description":{"type":"string","title":"Description"},"icon_name":{"type":"string","title":"Icon Name"},"theme_color":{"type":"string","title":"Theme Color"},"avatar_url":{"type":"string","title":"Avatar Url","default":""},"suggested_prompts":{"items":{"type":"string"},"type":"array","title":"Suggested Prompts"},"welcome_message":{"type":"string","title":"Welcome Message"}},"type":"object","required":["id","slug","name","role_description","description","icon_name","theme_color","suggested_prompts","welcome_message"],"title":"HealthBotOut"},"HealthConditionOut":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"is_enabled":{"type":"boolean","title":"Is Enabled"}},"type":"object","required":["id","title","is_enabled"],"title":"HealthConditionOut"},"InventoryOut":{"properties":{"size_id":{"type":"string","title":"Size Id"},"pads_remaining":{"type":"integer","title":"Pads Remaining"},"last_updated":{"type":"string","format":"date-time","title":"Last Updated"}},"type":"object","required":["size_id","pads_remaining","last_updated"],"title":"InventoryOut"},"InventorySet":{"properties":{"size_id":{"type":"string","title":"Size Id"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["size_id","count"],"title":"InventorySet"},"InviteCreate":{"properties":{"max_uses":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Max Uses","default":1}},"type":"object","title":"InviteCreate"},"InviteOut":{"properties":{"code":{"type":"string","title":"Code"},"share_url":{"type":"string","title":"Share Url"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"max_uses":{"type":"integer","title":"Max Uses"},"use_count":{"type":"integer","title":"Use Count"}},"type":"object","required":["code","share_url","expires_at","max_uses","use_count"],"title":"InviteOut"},"InvitePreviewOut":{"properties":{"code":{"type":"string","title":"Code"},"inviter_name":{"type":"string","title":"Inviter Name"},"inviter_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inviter Avatar Url"},"is_valid":{"type":"boolean","title":"Is Valid"},"is_own_invite":{"type":"boolean","title":"Is Own Invite"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["code","inviter_name","inviter_avatar_url","is_valid","is_own_invite","expires_at"],"title":"InvitePreviewOut"},"MessageCreate":{"properties":{"text":{"type":"string","maxLength":24000,"minLength":1,"title":"Text"}},"type":"object","required":["text"],"title":"MessageCreate"},"MessageOut":{"properties":{"id":{"type":"string","title":"Id"},"conversation_id":{"type":"string","title":"Conversation Id"},"sender_id":{"type":"string","title":"Sender Id"},"sender_name":{"type":"string","title":"Sender Name"},"text":{"type":"string","title":"Text"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"is_me":{"type":"boolean","title":"Is Me"},"is_doctor":{"type":"boolean","title":"Is Doctor","default":false},"is_bot":{"type":"boolean","title":"Is Bot"},"kind":{"type":"string","title":"Kind","default":"text"},"call_is_video":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Call Is Video"},"call_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Call Status"},"call_duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Call Duration Seconds"}},"type":"object","required":["id","conversation_id","sender_id","sender_name","text","timestamp","is_me","is_bot"],"title":"MessageOut"},"MythBusterOut":{"properties":{"id":{"type":"string","title":"Id"},"question":{"type":"string","title":"Question"},"answer_is_true":{"type":"boolean","title":"Answer Is True"},"explanation":{"type":"string","title":"Explanation"}},"type":"object","required":["id","question","answer_is_true","explanation"],"title":"MythBusterOut"},"OrderCancel":{"properties":{"reason":{"type":"string","maxLength":200,"title":"Reason","default":""}},"type":"object","title":"OrderCancel"},"OrderCreate":{"properties":{"address_id":{"type":"string","title":"Address Id"},"delivery_instructions":{"items":{"type":"string"},"type":"array","title":"Delivery Instructions","default":[]},"payment_method":{"type":"string","title":"Payment Method"},"razorpay_order_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Razorpay Order Id"},"razorpay_payment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Razorpay Payment Id"},"razorpay_signature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Razorpay Signature"}},"type":"object","required":["address_id","payment_method"],"title":"OrderCreate"},"OrderEventOut":{"properties":{"status":{"type":"string","title":"Status"},"at":{"type":"string","format":"date-time","title":"At"},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["status","at"],"title":"OrderEventOut"},"OrderItemOut":{"properties":{"product":{"$ref":"#/components/schemas/ProductOut"},"quantity":{"type":"integer","title":"Quantity"},"selected_size":{"type":"string","title":"Selected Size"},"unit_price":{"type":"number","title":"Unit Price"}},"type":"object","required":["product","quantity","selected_size","unit_price"],"title":"OrderItemOut"},"OrderOut":{"properties":{"id":{"type":"string","title":"Id"},"items":{"items":{"$ref":"#/components/schemas/OrderItemOut"},"type":"array","title":"Items"},"address_label":{"type":"string","title":"Address Label"},"flat_house_no":{"type":"string","title":"Flat House No"},"area_road":{"type":"string","title":"Area Road"},"recipient_name":{"type":"string","title":"Recipient Name"},"recipient_phone":{"type":"string","title":"Recipient Phone"},"delivery_instructions":{"items":{"type":"string"},"type":"array","title":"Delivery Instructions"},"subtotal":{"type":"number","title":"Subtotal"},"discount":{"type":"number","title":"Discount"},"delivery_charge":{"type":"number","title":"Delivery Charge"},"total":{"type":"number","title":"Total"},"payment_method":{"type":"string","title":"Payment Method"},"payment_status":{"type":"string","title":"Payment Status","default":"pending"},"razorpay_order_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Razorpay Order Id"},"razorpay_payment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Razorpay Payment Id"},"order_status":{"type":"string","title":"Order Status"},"order_time":{"type":"string","format":"date-time","title":"Order Time"},"estimated_arrival_minutes":{"type":"integer","title":"Estimated Arrival Minutes"},"pickup_store":{"anyOf":[{"$ref":"#/components/schemas/OrderStoreOut"},{"type":"null"}]},"delivery_partner":{"anyOf":[{"$ref":"#/components/schemas/OrderPartnerOut"},{"type":"null"}]},"delivery_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Code"},"delivery_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delivery Latitude"},"delivery_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delivery Longitude"},"confirmed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Confirmed At"},"picked_up_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Picked Up At"},"arrived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Arrived At"},"delivered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delivered At"},"cancelled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancelled At"},"cancel_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Reason"},"timeline":{"items":{"$ref":"#/components/schemas/OrderEventOut"},"type":"array","title":"Timeline","default":[]},"can_cancel":{"type":"boolean","title":"Can Cancel","default":false}},"type":"object","required":["id","items","address_label","flat_house_no","area_road","recipient_name","recipient_phone","delivery_instructions","subtotal","discount","delivery_charge","total","payment_method","order_status","order_time","estimated_arrival_minutes"],"title":"OrderOut"},"OrderPartnerOut":{"properties":{"name":{"type":"string","title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"vehicle_type":{"type":"string","title":"Vehicle Type"},"vehicle_number":{"type":"string","title":"Vehicle Number"},"avatar_url":{"type":"string","title":"Avatar Url"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"location_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Location Updated At"}},"type":"object","required":["name","phone","vehicle_type","vehicle_number","avatar_url","latitude","longitude","location_updated_at"],"title":"OrderPartnerOut"},"OrderStoreOut":{"properties":{"name":{"type":"string","title":"Name"},"address":{"type":"string","title":"Address"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"}},"type":"object","required":["name","address","latitude","longitude"],"title":"OrderStoreOut"},"PadChangeCreate":{"properties":{"size_id":{"type":"string","title":"Size Id"},"cycle_day":{"type":"integer","title":"Cycle Day"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["size_id","cycle_day"],"title":"PadChangeCreate"},"PadChangeOut":{"properties":{"id":{"type":"string","title":"Id"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"size_id":{"type":"string","title":"Size Id"},"cycle_day":{"type":"integer","title":"Cycle Day"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["id","timestamp","size_id","cycle_day","notes"],"title":"PadChangeOut"},"PartnerAppointmentOut":{"properties":{"id":{"type":"string","title":"Id"},"appointment_date":{"type":"string","title":"Appointment Date"},"appointment_time":{"type":"string","title":"Appointment Time"},"patient_name":{"type":"string","title":"Patient Name"},"age":{"type":"string","title":"Age"},"gender":{"type":"string","title":"Gender"},"problem_description":{"type":"string","title":"Problem Description"},"status":{"type":"string","title":"Status"},"cancelled_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancelled By"},"doctor_note":{"type":"string","title":"Doctor Note"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","appointment_date","appointment_time","patient_name","age","gender","problem_description","status","cancelled_by","doctor_note","created_at"],"title":"PartnerAppointmentOut","description":"What a doctor sees about a booking. No phone number or account details of the patient."},"PartnerLocationUpdate":{"properties":{"latitude":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Latitude"},"longitude":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Longitude"}},"type":"object","required":["latitude","longitude"],"title":"PartnerLocationUpdate"},"PartnerLogin":{"properties":{"phone":{"type":"string","maxLength":254,"minLength":3,"title":"Phone"},"pin":{"type":"string","maxLength":6,"minLength":4,"pattern":"^\\d+$","title":"Pin"}},"type":"object","required":["phone","pin"],"title":"PartnerLogin"},"PartnerMeOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"phone":{"type":"string","title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"vehicle_type":{"type":"string","title":"Vehicle Type"},"vehicle_number":{"type":"string","title":"Vehicle Number"},"avatar_url":{"type":"string","title":"Avatar Url"},"is_online":{"type":"boolean","title":"Is Online"},"role":{"type":"string","title":"Role"},"deliveries_today":{"type":"integer","title":"Deliveries Today","default":0},"earnings_today":{"type":"number","title":"Earnings Today","default":0.0},"doctor_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doctor Name"},"doctor_specialty":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doctor Specialty"},"appointments_today":{"type":"integer","title":"Appointments Today","default":0},"pending_appointments":{"type":"integer","title":"Pending Appointments","default":0}},"type":"object","required":["id","name","phone","vehicle_type","vehicle_number","avatar_url","is_online","role"],"title":"PartnerMeOut"},"PartnerOrderItemOut":{"properties":{"name":{"type":"string","title":"Name"},"size":{"type":"string","title":"Size"},"quantity":{"type":"integer","title":"Quantity"}},"type":"object","required":["name","size","quantity"],"title":"PartnerOrderItemOut"},"PartnerOrderOffer":{"properties":{"id":{"type":"string","title":"Id"},"short_id":{"type":"string","title":"Short Id"},"placed_at":{"type":"string","format":"date-time","title":"Placed At"},"pickup":{"anyOf":[{"$ref":"#/components/schemas/OrderStoreOut"},{"type":"null"}]},"drop_area":{"type":"string","title":"Drop Area"},"items_count":{"type":"integer","title":"Items Count"},"payment_method":{"type":"string","title":"Payment Method"},"amount_to_collect":{"type":"number","title":"Amount To Collect"},"distance_to_pickup_km":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance To Pickup Km"}},"type":"object","required":["id","short_id","placed_at","pickup","drop_area","items_count","payment_method","amount_to_collect"],"title":"PartnerOrderOffer"},"PartnerOrderOut":{"properties":{"id":{"type":"string","title":"Id"},"short_id":{"type":"string","title":"Short Id"},"placed_at":{"type":"string","format":"date-time","title":"Placed At"},"pickup":{"anyOf":[{"$ref":"#/components/schemas/OrderStoreOut"},{"type":"null"}]},"drop_area":{"type":"string","title":"Drop Area"},"items_count":{"type":"integer","title":"Items Count"},"payment_method":{"type":"string","title":"Payment Method"},"amount_to_collect":{"type":"number","title":"Amount To Collect"},"distance_to_pickup_km":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance To Pickup Km"},"status":{"type":"string","title":"Status"},"recipient_name":{"type":"string","title":"Recipient Name"},"recipient_phone":{"type":"string","title":"Recipient Phone"},"address_label":{"type":"string","title":"Address Label"},"flat_house_no":{"type":"string","title":"Flat House No"},"area_road":{"type":"string","title":"Area Road"},"delivery_instructions":{"items":{"type":"string"},"type":"array","title":"Delivery Instructions"},"delivery_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delivery Latitude"},"delivery_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delivery Longitude"},"items":{"items":{"$ref":"#/components/schemas/PartnerOrderItemOut"},"type":"array","title":"Items"},"confirmed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Confirmed At"},"picked_up_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Picked Up At"},"arrived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Arrived At"},"delivered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delivered At"},"cancelled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancelled At"},"cancel_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Reason"},"payout":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Payout"}},"type":"object","required":["id","short_id","placed_at","pickup","drop_area","items_count","payment_method","amount_to_collect","status","recipient_name","recipient_phone","address_label","flat_house_no","area_road","delivery_instructions","delivery_latitude","delivery_longitude","items","confirmed_at","picked_up_at","arrived_at","delivered_at","cancelled_at","cancel_reason","payout"],"title":"PartnerOrderOut"},"PartnerStatusUpdate":{"properties":{"is_online":{"type":"boolean","title":"Is Online"}},"type":"object","required":["is_online"],"title":"PartnerStatusUpdate"},"PartnerToken":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"partner_id":{"type":"string","title":"Partner Id"}},"type":"object","required":["access_token","partner_id"],"title":"PartnerToken"},"PhoneCodeRequest":{"properties":{"phone":{"type":"string","maxLength":32,"minLength":6,"title":"Phone"}},"type":"object","required":["phone"],"title":"PhoneCodeRequest"},"PhoneRestoreOut":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"user_id":{"type":"string","title":"User Id"},"is_new_user":{"type":"boolean","title":"Is New User"},"name":{"type":"string","title":"Name"}},"type":"object","required":["access_token","user_id","is_new_user","name"],"title":"PhoneRestoreOut"},"PhoneRestoreRequest":{"properties":{"device_id":{"type":"string","maxLength":64,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","title":"Device Id"},"device_secret":{"type":"string","maxLength":128,"minLength":32,"title":"Device Secret"},"platform":{"type":"string","maxLength":20,"title":"Platform","default":"unknown"},"name":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Name"},"phone":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Phone"},"code":{"anyOf":[{"type":"string","maxLength":10,"minLength":4,"pattern":"^\\d+$"},{"type":"null"}],"title":"Code"},"phone_proof":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Phone Proof"}},"type":"object","required":["device_id","device_secret"],"title":"PhoneRestoreRequest","description":"Moves this install onto the account that verified `phone`. Prove the number with\nthe SMS `code`, or with the `phone_proof` from a verification that just happened."},"PhoneSettingsIn":{"properties":{"discoverable":{"type":"boolean","title":"Discoverable"}},"type":"object","required":["discoverable"],"title":"PhoneSettingsIn"},"PhoneStartIn":{"properties":{"phone":{"type":"string","maxLength":32,"minLength":6,"title":"Phone"}},"type":"object","required":["phone"],"title":"PhoneStartIn"},"PhoneStatusOut":{"properties":{"available":{"type":"boolean","title":"Available"},"verified":{"type":"boolean","title":"Verified"},"last4":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last4"},"discoverable":{"type":"boolean","title":"Discoverable","default":false}},"type":"object","required":["available","verified"],"title":"PhoneStatusOut"},"PhoneVerifyIn":{"properties":{"phone":{"type":"string","maxLength":32,"minLength":6,"title":"Phone"},"code":{"anyOf":[{"type":"string","maxLength":10,"minLength":4,"pattern":"^\\d+$"},{"type":"null"}],"title":"Code"},"phone_proof":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Phone Proof"},"take_over":{"type":"boolean","title":"Take Over","default":false}},"type":"object","required":["phone"],"title":"PhoneVerifyIn"},"PredictionCorrection":{"properties":{"actual_start_date":{"type":"string","format":"date","title":"Actual Start Date"}},"type":"object","required":["actual_start_date"],"title":"PredictionCorrection"},"PreviousCycleOut":{"properties":{"month_range":{"type":"string","title":"Month Range"},"duration_days":{"type":"integer","title":"Duration Days"},"status":{"type":"string","title":"Status"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"}},"type":"object","required":["month_range","duration_days","status","start_date","end_date"],"title":"PreviousCycleOut"},"ProductOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"category":{"type":"string","title":"Category"},"price":{"type":"number","title":"Price"},"original_price":{"type":"number","title":"Original Price"},"size":{"type":"string","title":"Size"},"rating":{"type":"number","title":"Rating"},"reviews_count":{"type":"integer","title":"Reviews Count"},"description":{"type":"string","title":"Description"},"highlights":{"items":{"type":"string"},"type":"array","title":"Highlights"},"is_exclusive":{"type":"boolean","title":"Is Exclusive"},"is_upcoming":{"type":"boolean","title":"Is Upcoming"},"banner_tag":{"type":"string","title":"Banner Tag"},"image_url":{"type":"string","title":"Image Url","default":""},"gallery_urls":{"items":{"type":"string"},"type":"array","title":"Gallery Urls","default":[]}},"type":"object","required":["id","name","category","price","original_price","size","rating","reviews_count","description","highlights","is_exclusive","is_upcoming","banner_tag"],"title":"ProductOut"},"PublicKeyIn":{"properties":{"public_key":{"type":"string","maxLength":64,"minLength":40,"title":"Public Key"}},"type":"object","required":["public_key"],"title":"PublicKeyIn"},"PublicKeyOut":{"properties":{"user_id":{"type":"string","title":"User Id"},"public_key":{"type":"string","title":"Public Key"}},"type":"object","required":["user_id","public_key"],"title":"PublicKeyOut"},"RazorpayConfigResponse":{"properties":{"key_id":{"type":"string","title":"Key Id"},"currency":{"type":"string","title":"Currency"},"is_configured":{"type":"boolean","title":"Is Configured"},"is_test_mode":{"type":"boolean","title":"Is Test Mode","default":true}},"type":"object","required":["key_id","currency","is_configured"],"title":"RazorpayConfigResponse"},"RazorpayOrderCreateRequest":{"properties":{"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount","description":"Amount in INR (e.g. 149.0)"},"receipt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt"},"notes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["amount"],"title":"RazorpayOrderCreateRequest"},"RazorpayOrderResponse":{"properties":{"order_id":{"type":"string","title":"Order Id"},"amount":{"type":"integer","title":"Amount"},"currency":{"type":"string","title":"Currency"},"key_id":{"type":"string","title":"Key Id"},"name":{"type":"string","title":"Name","default":"PIAX"},"description":{"type":"string","title":"Description","default":"PIAX Order Payment"},"mock":{"type":"boolean","title":"Mock","default":false}},"type":"object","required":["order_id","amount","currency","key_id"],"title":"RazorpayOrderResponse"},"RazorpayVerifyRequest":{"properties":{"razorpay_order_id":{"type":"string","title":"Razorpay Order Id"},"razorpay_payment_id":{"type":"string","title":"Razorpay Payment Id"},"razorpay_signature":{"type":"string","title":"Razorpay Signature"}},"type":"object","required":["razorpay_order_id","razorpay_payment_id","razorpay_signature"],"title":"RazorpayVerifyRequest"},"RazorpayVerifyResponse":{"properties":{"verified":{"type":"boolean","title":"Verified"},"message":{"type":"string","title":"Message"}},"type":"object","required":["verified","message"],"title":"RazorpayVerifyResponse"},"ReleaseRequest":{"properties":{"reason":{"type":"string","maxLength":200,"title":"Reason","default":""}},"type":"object","title":"ReleaseRequest"},"RunOutPrediction":{"properties":{"total_pads":{"type":"integer","title":"Total Pads"},"covers_until_day":{"type":"string","title":"Covers Until Day"}},"type":"object","required":["total_pads","covers_until_day"],"title":"RunOutPrediction"},"SavedAddressCreate":{"properties":{"label":{"type":"string","title":"Label"},"flat_house_no":{"type":"string","title":"Flat House No"},"area_road":{"type":"string","title":"Area Road"},"directions":{"type":"string","title":"Directions","default":""},"recipient_name":{"type":"string","title":"Recipient Name"},"recipient_phone":{"type":"string","title":"Recipient Phone"},"latitude":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Longitude"}},"type":"object","required":["label","flat_house_no","area_road","recipient_name","recipient_phone"],"title":"SavedAddressCreate"},"SavedAddressOut":{"properties":{"label":{"type":"string","title":"Label"},"flat_house_no":{"type":"string","title":"Flat House No"},"area_road":{"type":"string","title":"Area Road"},"directions":{"type":"string","title":"Directions","default":""},"recipient_name":{"type":"string","title":"Recipient Name"},"recipient_phone":{"type":"string","title":"Recipient Phone"},"latitude":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Longitude"},"id":{"type":"string","title":"Id"}},"type":"object","required":["label","flat_house_no","area_road","recipient_name","recipient_phone","id"],"title":"SavedAddressOut"},"SavedAddressUpdate":{"properties":{"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"flat_house_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Flat House No"},"area_road":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area Road"},"directions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Directions"},"recipient_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Name"},"recipient_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Phone"},"latitude":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Longitude"}},"type":"object","title":"SavedAddressUpdate","description":"Every field optional: the app mostly uses this to attach a map pin to an\naddress that was typed in before location permission was granted."},"SlotOut":{"properties":{"time":{"type":"string","title":"Time"},"available":{"type":"boolean","title":"Available"}},"type":"object","required":["time","available"],"title":"SlotOut"},"StoreLocationOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"address":{"type":"string","title":"Address"},"distance":{"type":"string","title":"Distance"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"is_available_now":{"type":"boolean","title":"Is Available Now"},"image_url":{"type":"string","title":"Image Url","default":""}},"type":"object","required":["id","name","address","distance","latitude","longitude","is_available_now"],"title":"StoreLocationOut"},"SubscribeRequest":{"properties":{"plan_id":{"type":"string","title":"Plan Id"}},"type":"object","required":["plan_id"],"title":"SubscribeRequest"},"SubscriptionPlanOut":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"price_formatted":{"type":"string","title":"Price Formatted"},"price":{"type":"number","title":"Price"},"billing_period":{"type":"string","title":"Billing Period"},"perks":{"items":{"type":"string"},"type":"array","title":"Perks"},"is_featured":{"type":"boolean","title":"Is Featured"}},"type":"object","required":["id","title","price_formatted","price","billing_period","perks","is_featured"],"title":"SubscriptionPlanOut"},"SymptomInsightOut":{"properties":{"symptom_name":{"type":"string","title":"Symptom Name"},"description":{"type":"string","title":"Description"},"history_dots":{"items":{"type":"boolean"},"type":"array","title":"History Dots"},"trigger_pattern":{"type":"string","title":"Trigger Pattern"}},"type":"object","required":["symptom_name","description","history_dots","trigger_pattern"],"title":"SymptomInsightOut"},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"}},"type":"object","required":["access_token"],"title":"Token"},"UserOut":{"properties":{"id":{"type":"string","title":"Id"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"username":{"type":"string","title":"Username"},"name":{"type":"string","title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"age":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"last_period_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Last Period Date"},"average_cycle_length":{"type":"integer","title":"Average Cycle Length"},"period_reminders":{"type":"boolean","title":"Period Reminders"},"pad_change_alerts":{"type":"boolean","title":"Pad Change Alerts"},"water_reminders":{"type":"boolean","title":"Water Reminders"},"primary_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Address"},"saved_addresses":{"items":{"$ref":"#/components/schemas/SavedAddressOut"},"type":"array","title":"Saved Addresses","default":[]}},"type":"object","required":["id","email","username","name","phone","age","last_period_date","average_cycle_length","period_reminders","pad_change_alerts","water_reminders","primary_address"],"title":"UserOut"},"UserRegister":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"username":{"type":"string","maxLength":32,"minLength":3,"title":"Username"},"password":{"type":"string","minLength":8,"title":"Password"},"name":{"type":"string","title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"age":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age"}},"type":"object","required":["email","username","password","name"],"title":"UserRegister"},"UserSubscriptionOut":{"properties":{"id":{"type":"string","title":"Id"},"plan":{"$ref":"#/components/schemas/SubscriptionPlanOut"},"status":{"type":"string","title":"Status"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"renews_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Renews At"}},"type":"object","required":["id","plan","status","started_at","renews_at"],"title":"UserSubscriptionOut"},"UserUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":60,"minLength":1},{"type":"null"}],"title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"age":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age"},"last_period_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Last Period Date"},"average_cycle_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Average Cycle Length"},"period_reminders":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Period Reminders"},"pad_change_alerts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pad Change Alerts"},"water_reminders":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Water Reminders"},"primary_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Address"}},"type":"object","title":"UserUpdate"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/auth/login"}}},"HTTPBearer":{"type":"http","scheme":"bearer"}}}}