{"openapi":"3.1.0","info":{"title":"Nordnic API Gateway","description":"Unified API for Netnod DNS, NameSRS domains, HostBill domain management, and FXS hosting automation.","version":"2.1.0"},"paths":{"/admin/auth/login":{"post":{"tags":["Admin"],"summary":"Login","description":"Login with email + password + optional TOTP code.","operationId":"login_admin_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/auth/logout":{"post":{"tags":["Admin"],"summary":"Logout","description":"Logout (invalidate session).","operationId":"logout_admin_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/admin/auth/accept-invite":{"post":{"tags":["Admin"],"summary":"Accept Invite","description":"Accept an invitation and set password.","operationId":"accept_invite_admin_auth_accept_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptInviteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/auth/me":{"get":{"tags":["Admin"],"summary":"Get Me","description":"Get current user info.","operationId":"get_me_admin_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/admin/auth/change-password":{"post":{"tags":["Admin"],"summary":"Change Password","description":"Change own password.","operationId":"change_password_admin_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/admin/auth/totp/setup":{"post":{"tags":["Admin"],"summary":"Totp Setup","description":"Generate TOTP secret and QR code for 2FA setup.","operationId":"totp_setup_admin_auth_totp_setup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/admin/auth/totp/enable":{"post":{"tags":["Admin"],"summary":"Totp Enable","description":"Verify TOTP code and enable 2FA.","operationId":"totp_enable_admin_auth_totp_enable_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnableTotpRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/admin/auth/totp/disable":{"post":{"tags":["Admin"],"summary":"Totp Disable","description":"Disable 2FA for current user.","operationId":"totp_disable_admin_auth_totp_disable_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/admin/users":{"get":{"tags":["Admin"],"summary":"List All Users","operationId":"list_all_users_admin_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/admin/users/invite":{"post":{"tags":["Admin"],"summary":"Invite User","description":"Invite a new user. Sends email with activation link.","operationId":"invite_user_admin_users_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/admin/users/{user_id}":{"put":{"tags":["Admin"],"summary":"Update User","operationId":"update_user_admin_users__user_id__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin"],"summary":"Delete User","operationId":"delete_user_admin_users__user_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/keys":{"post":{"tags":["Admin"],"summary":"Create Key","operationId":"create_key_admin_keys_post","security":[{"APIKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__admin__CreateKeyRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"List Keys","operationId":"list_keys_admin_keys_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"customer","in":"query","required":false,"schema":{"type":"string","title":"Customer"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/keys/{key_id}":{"delete":{"tags":["Admin"],"summary":"Revoke Key","operationId":"revoke_key_admin_keys__key_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/keys/{key_id}/permanent":{"delete":{"tags":["Admin"],"summary":"Delete Key","operationId":"delete_key_admin_keys__key_id__permanent_delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/logs":{"get":{"tags":["Admin"],"summary":"Get Logs","operationId":"get_logs_admin_logs_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"customer","in":"query","required":false,"schema":{"type":"string","title":"Customer"}},{"name":"path","in":"query","required":false,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stats":{"get":{"tags":["Admin"],"summary":"Get Stats","operationId":"get_stats_admin_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/portal/auth/login":{"post":{"tags":["User Portal"],"summary":"Login","operationId":"login_portal_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portal/auth/logout":{"post":{"tags":["User Portal"],"summary":"Logout","operationId":"logout_portal_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/portal/auth/me":{"get":{"tags":["User Portal"],"summary":"Get Me","operationId":"get_me_portal_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/portal/auth/change-password":{"post":{"tags":["User Portal"],"summary":"Change Password","operationId":"change_password_portal_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/portal/auth/totp/setup":{"post":{"tags":["User Portal"],"summary":"Totp Setup","operationId":"totp_setup_portal_auth_totp_setup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/portal/auth/totp/enable":{"post":{"tags":["User Portal"],"summary":"Totp Enable","operationId":"totp_enable_portal_auth_totp_enable_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnableTotpRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/portal/auth/totp/disable":{"post":{"tags":["User Portal"],"summary":"Totp Disable","operationId":"totp_disable_portal_auth_totp_disable_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/portal/profile":{"put":{"tags":["User Portal"],"summary":"Update Profile","operationId":"update_profile_portal_profile_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/portal/keys":{"get":{"tags":["User Portal"],"summary":"List My Keys","operationId":"list_my_keys_portal_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["User Portal"],"summary":"Create My Key","operationId":"create_my_key_portal_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__portal__CreateKeyRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/portal/keys/{key_id}":{"put":{"tags":["User Portal"],"summary":"Update My Key","operationId":"update_my_key_portal_keys__key_id__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["User Portal"],"summary":"Revoke My Key","operationId":"revoke_my_key_portal_keys__key_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/portal/keys/{key_id}/permanent":{"delete":{"tags":["User Portal"],"summary":"Delete My Key","operationId":"delete_my_key_portal_keys__key_id__permanent_delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/netnod/zones":{"get":{"tags":["Netnod DNS"],"summary":"List Zones","operationId":"list_zones_netnod_zones_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["Netnod DNS"],"summary":"Create Zone","operationId":"create_zone_netnod_zones_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZoneCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/netnod/zones/{zone_name}":{"get":{"tags":["Netnod DNS"],"summary":"Get Zone","operationId":"get_zone_netnod_zones__zone_name__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"zone_name","in":"path","required":true,"schema":{"type":"string","title":"Zone Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Netnod DNS"],"summary":"Update Zone","operationId":"update_zone_netnod_zones__zone_name__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"zone_name","in":"path","required":true,"schema":{"type":"string","title":"Zone Name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZoneUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Netnod DNS"],"summary":"Delete Zone","operationId":"delete_zone_netnod_zones__zone_name__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"zone_name","in":"path","required":true,"schema":{"type":"string","title":"Zone Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/netnod/zones/{zone_name}/status":{"get":{"tags":["Netnod DNS"],"summary":"Zone Status","operationId":"zone_status_netnod_zones__zone_name__status_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"zone_name","in":"path","required":true,"schema":{"type":"string","title":"Zone Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/netnod/tsig":{"get":{"tags":["Netnod DNS"],"summary":"List Tsig","description":"List all TSIG keys.","operationId":"list_tsig_netnod_tsig_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["Netnod DNS"],"summary":"Create Tsig","description":"Create a new TSIG key.","operationId":"create_tsig_netnod_tsig_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TsigCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/netnod/tsig/{tsig_name}":{"delete":{"tags":["Netnod DNS"],"summary":"Delete Tsig","description":"Delete a TSIG key.","operationId":"delete_tsig_netnod_tsig__tsig_name__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"tsig_name","in":"path","required":true,"schema":{"type":"string","title":"Tsig Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hostbill/health":{"get":{"tags":["HostBill Domains"],"summary":"Health","operationId":"health_hostbill_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/hostbill/domains/check":{"post":{"tags":["HostBill Domains"],"summary":"Check Domain","description":"Check single domain availability.","operationId":"check_domain_hostbill_domains_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainCheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/hostbill/domains/bulk-check":{"post":{"tags":["HostBill Domains"],"summary":"Bulk Check","description":"Check domain availability across multiple TLDs with pricing.","operationId":"bulk_check_hostbill_domains_bulk_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkCheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/hostbill/domains":{"get":{"tags":["HostBill Domains"],"summary":"List Domains","description":"List all domains.","operationId":"list_domains_hostbill_domains_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Status"}},{"name":"name","in":"query","required":false,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hostbill/domains/{domain_id}":{"get":{"tags":["HostBill Domains"],"summary":"Get Domain","description":"Get domain details.","operationId":"get_domain_hostbill_domains__domain_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"integer","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["HostBill Domains"],"summary":"Edit Domain","description":"Edit domain (autorenew, nameservers, status).","operationId":"edit_domain_hostbill_domains__domain_id__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"integer","title":"Domain Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainEditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hostbill/domains/{domain_id}/register":{"post":{"tags":["HostBill Domains"],"summary":"Register Domain","description":"Trigger domain registration on the registrar module.","operationId":"register_domain_hostbill_domains__domain_id__register_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"integer","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hostbill/domains/{domain_id}/transfer":{"post":{"tags":["HostBill Domains"],"summary":"Transfer Domain","description":"Trigger domain transfer on the registrar module.","operationId":"transfer_domain_hostbill_domains__domain_id__transfer_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"integer","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hostbill/domains/{domain_id}/renew":{"post":{"tags":["HostBill Domains"],"summary":"Renew Domain","description":"Trigger domain renewal.","operationId":"renew_domain_hostbill_domains__domain_id__renew_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"integer","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hostbill/domains/{domain_id}/synch":{"post":{"tags":["HostBill Domains"],"summary":"Synch Domain","description":"Synchronize domain data with registrar.","operationId":"synch_domain_hostbill_domains__domain_id__synch_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"integer","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hostbill/domains/{domain_id}/contacts":{"get":{"tags":["HostBill Domains"],"summary":"Get Contacts","description":"Get domain contacts (registrant, admin, tech, billing).","operationId":"get_contacts_hostbill_domains__domain_id__contacts_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"integer","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hostbill/domains/{domain_id}/dnssec":{"get":{"tags":["HostBill Domains"],"summary":"Get Dnssec","description":"Get DNSSEC records.","operationId":"get_dnssec_hostbill_domains__domain_id__dnssec_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"integer","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hostbill/orders/domain":{"post":{"tags":["HostBill Domains"],"summary":"Order Domain","description":"Create a domain order (register or transfer) for a client.\n\n1. Creates an order draft\n2. Adds the domain to the draft\nReturns the draft/order details.","operationId":"order_domain_hostbill_orders_domain_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDomainRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/hostbill/clients":{"get":{"tags":["HostBill Domains"],"summary":"List Clients","description":"List clients.","operationId":"list_clients_hostbill_clients_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Page"}},{"name":"email","in":"query","required":false,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hostbill/clients/{client_id}":{"get":{"tags":["HostBill Domains"],"summary":"Get Client","description":"Get client details.","operationId":"get_client_hostbill_clients__client_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"integer","title":"Client Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/bootstrap":{"post":{"summary":"Bootstrap","description":"Create the first admin user. Only works when no users exist.","operationId":"bootstrap_admin_bootstrap_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BootstrapRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/namesrs/{path}":{"put":{"summary":"Namesrs Proxy","description":"Proxy all /namesrs/* requests transparently to NameSRS API.","operationId":"namesrs_proxy_namesrs__path__put","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Namesrs Proxy","description":"Proxy all /namesrs/* requests transparently to NameSRS API.","operationId":"namesrs_proxy_namesrs__path__put","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Namesrs Proxy","description":"Proxy all /namesrs/* requests transparently to NameSRS API.","operationId":"namesrs_proxy_namesrs__path__put","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Namesrs Proxy","description":"Proxy all /namesrs/* requests transparently to NameSRS API.","operationId":"namesrs_proxy_namesrs__path__put","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AcceptInviteRequest":{"properties":{"token":{"type":"string","title":"Token"},"password":{"type":"string","title":"Password"}},"type":"object","required":["token","password"],"title":"AcceptInviteRequest"},"BootstrapRequest":{"properties":{"firstname":{"type":"string","title":"Firstname"},"lastname":{"type":"string","title":"Lastname"},"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["firstname","lastname","email","password"],"title":"BootstrapRequest"},"BulkCheckRequest":{"properties":{"sld":{"type":"string","title":"Sld"},"tlds":{"items":{"type":"string"},"type":"array","title":"Tlds","default":[]},"currency_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Currency Id"}},"type":"object","required":["sld"],"title":"BulkCheckRequest"},"ChangePasswordRequest":{"properties":{"password":{"type":"string","title":"Password"}},"type":"object","required":["password"],"title":"ChangePasswordRequest"},"DomainCheckRequest":{"properties":{"domain":{"type":"string","title":"Domain"}},"type":"object","required":["domain"],"title":"DomainCheckRequest"},"DomainEditRequest":{"properties":{"autorenew":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Autorenew"},"nameservers":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nameservers"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","title":"DomainEditRequest"},"EnableTotpRequest":{"properties":{"secret":{"type":"string","title":"Secret"},"code":{"type":"string","title":"Code"}},"type":"object","required":["secret","code"],"title":"EnableTotpRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InviteRequest":{"properties":{"firstname":{"type":"string","title":"Firstname"},"lastname":{"type":"string","title":"Lastname"},"email":{"type":"string","title":"Email"},"role":{"type":"string","title":"Role","default":"readonly"}},"type":"object","required":["firstname","lastname","email"],"title":"InviteRequest"},"LoginRequest":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"totp_code":{"type":"string","title":"Totp Code","default":""}},"type":"object","required":["email","password"],"title":"LoginRequest"},"Master":{"properties":{"ip":{"type":"string","title":"Ip"},"tsig":{"type":"string","title":"Tsig","default":""}},"type":"object","required":["ip"],"title":"Master"},"OrderDomainRequest":{"properties":{"client_id":{"type":"integer","title":"Client Id"},"sld":{"type":"string","title":"Sld"},"tld":{"type":"string","title":"Tld"},"period":{"type":"integer","title":"Period","default":1},"action":{"type":"string","title":"Action","default":"Register"},"eppcode":{"type":"string","title":"Eppcode","default":""},"nameservers":{"items":{"type":"string"},"type":"array","title":"Nameservers","default":[]}},"type":"object","required":["client_id","sld","tld"],"title":"OrderDomainRequest"},"ProfileUpdate":{"properties":{"firstname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firstname"},"lastname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastname"}},"type":"object","title":"ProfileUpdate"},"TsigCreate":{"properties":{"name":{"type":"string","title":"Name"},"algorithm":{"type":"string","title":"Algorithm","default":"hmac-sha256"},"secret":{"type":"string","title":"Secret","default":""}},"type":"object","required":["name"],"title":"TsigCreate"},"UpdateKeyRequest":{"properties":{"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"},"allowed_ips":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Allowed Ips"}},"type":"object","title":"UpdateKeyRequest"},"UpdateUserRequest":{"properties":{"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"active":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Active"}},"type":"object","title":"UpdateUserRequest"},"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"},"ZoneCreate":{"properties":{"name":{"type":"string","title":"Name"},"masters":{"items":{"$ref":"#/components/schemas/Master"},"type":"array","title":"Masters"},"product":{"type":"string","title":"Product","default":""},"endcustomer":{"type":"string","title":"Endcustomer","default":""}},"type":"object","required":["name","masters"],"title":"ZoneCreate"},"ZoneUpdate":{"properties":{"masters":{"anyOf":[{"items":{"$ref":"#/components/schemas/Master"},"type":"array"},{"type":"null"}],"title":"Masters"},"product":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product"},"endcustomer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endcustomer"}},"type":"object","title":"ZoneUpdate"},"app__admin__CreateKeyRequest":{"properties":{"customer":{"type":"string","title":"Customer"},"scope":{"type":"string","title":"Scope","default":"all"},"note":{"type":"string","title":"Note","default":""},"allowed_ips":{"type":"string","title":"Allowed Ips","default":""}},"type":"object","required":["customer"],"title":"CreateKeyRequest"},"app__portal__CreateKeyRequest":{"properties":{"scope":{"type":"string","title":"Scope","default":"all"},"note":{"type":"string","title":"Note","default":""},"allowed_ips":{"type":"string","title":"Allowed Ips","default":""}},"type":"object","title":"CreateKeyRequest"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}