{"openapi":"3.1.0","info":{"title":"Rivervo Partner API","version":"1.0.0","description":"For Rivervo partners (resellers): buy, renew and manage hosting, business email and servers for your clients, paid from your partner balance at your partner prices. Every change needs an Idempotency-Key header. Amounts are integer US cents. Errors: {\"error\": {\"code\", \"message\"}}. Guide: docs/partner-api.md."},"servers":[{"url":"https://api.rivervo.com/api/partner/v1"}],"security":[{"bearer":[]}],"tags":[{"name":"Account"},{"name":"Catalog"},{"name":"Orders"},{"name":"Hosting"},{"name":"Servers"},{"name":"Email"}],"paths":{"/me":{"get":{"tags":["Account"],"summary":"The partner, its balance and discounts","operationId":"getMe","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Partner"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/balance/transactions":{"get":{"tags":["Account"],"summary":"Partner balance movements (newest first)","operationId":"listTransactions","parameters":[{"name":"from","in":"query","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","schema":{"type":"string","format":"date"}},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Transaction"}},"meta":{"$ref":"#/components/schemas/PageMeta"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/prices":{"get":{"tags":["Catalog"],"summary":"Every price for you: retail and partner, per term and region (cache it; ETag / If-None-Match)","operationId":"getPrices","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/PriceList"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/catalog/regions":{"get":{"tags":["Catalog"],"summary":"Regions and locations for servers","operationId":"listRegions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Region"}}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/catalog/os":{"get":{"tags":["Catalog"],"summary":"Operating systems for servers","operationId":"listOperatingSystems","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["ubuntu-24.04","ubuntu-22.04","debian-12","debian-11","centos-stream-9","centos-stream-10","rocky-9","rocky-10","almalinux-9","almalinux-10","fedora-43","opensuse-16"]}}}}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/catalog/vps-plans":{"get":{"tags":["Catalog"],"summary":"Server plans","operationId":"listVpsPlans","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VpsPlan"}}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/catalog/vps-availability":{"get":{"tags":["Catalog"],"summary":"Where each server plan can be made right now (refreshed every 5 minutes)","operationId":"getVpsAvailability","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"plan_id":{"type":"integer"},"name":{"type":"string"},"available_locations":{"type":"array","items":{"type":"string","enum":["de-nuremberg","de-falkenstein","fi-helsinki","us-east","us-west","sg-singapore"]}}}}},"cached_at":{"type":"string","format":"date-time","description":"When the stock was taken; it is kept 5 minutes."}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/catalog/hosting-plans":{"get":{"tags":["Catalog"],"summary":"Hosting plans and terms","operationId":"listHostingPlans","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"terms_months":{"type":"array","items":{"type":"integer"}}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/catalog/mail-plans":{"get":{"tags":["Catalog"],"summary":"Email plans","operationId":"listMailPlans","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"plan":{"type":"string"},"name":{"type":"string"},"mailbox_quota_gb":{"type":"integer"},"min_mailboxes":{"type":"integer"},"monthly":{"type":"boolean"}}}}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/orders":{"get":{"tags":["Orders"],"summary":"Your orders (every change you made through the API)","operationId":"listOrders","parameters":[{"name":"status","in":"query","schema":{"type":"string","enum":["processing","completed","failed"]}},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Order"}},"meta":{"$ref":"#/components/schemas/PageMeta"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/orders/{id}":{"get":{"tags":["Orders"],"summary":"One order","operationId":"getOrder","parameters":[{"name":"id","in":"path","required":true,"description":"The order id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Order"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/hosting":{"get":{"tags":["Hosting"],"summary":"Your hosting accounts","operationId":"listHosting","parameters":[{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Hosting"}},"meta":{"$ref":"#/components/schemas/PageMeta"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"post":{"tags":["Hosting"],"summary":"Create a hosting account (paid from the partner balance)","operationId":"createHosting","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domain","plan_id","term_months"],"properties":{"domain":{"type":"string"},"plan_id":{"type":"integer"},"term_months":{"type":"integer"}}}}}},"responses":{"202":{"description":"Accepted: the order is processing; follow it with GET /orders/{id} or the webhook.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Hosting"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/hosting/{id}":{"get":{"tags":["Hosting"],"summary":"One hosting account","operationId":"getHosting","parameters":[{"name":"id","in":"path","required":true,"description":"The hosting id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Hosting"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"delete":{"tags":["Hosting"],"summary":"Delete a hosting account (no refund)","operationId":"deleteHosting","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The hosting id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"deleted":{"type":"boolean"}}},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/hosting/{id}/renew":{"post":{"tags":["Hosting"],"summary":"Renew (default: its own term)","operationId":"renewHosting","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The hosting id.","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"term_months":{"type":"integer"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Hosting"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/hosting/{id}/change-plan":{"post":{"tags":["Hosting"],"summary":"Change plan (charged now)","operationId":"changeHostingPlan","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The hosting id.","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["plan_id","term_months"],"properties":{"plan_id":{"type":"integer"},"term_months":{"type":"integer"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Hosting"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/hosting/{id}/reset-password":{"post":{"tags":["Hosting"],"summary":"New password for the hosting account (shown in this answer only)","operationId":"resetHostingPassword","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The hosting id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"}}},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/hosting/{id}/login-link":{"post":{"tags":["Hosting"],"summary":"One-time sign-in link to the website control panel (2 minutes)","operationId":"hostingLoginLink","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The hosting id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"url":{"type":"string"},"expires_in":{"type":"integer"}}},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/vps":{"get":{"tags":["Servers"],"summary":"Your servers","operationId":"listVps","parameters":[{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Vps"}},"meta":{"$ref":"#/components/schemas/PageMeta"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"post":{"tags":["Servers"],"summary":"Create a server (one month, paid from the partner balance)","operationId":"createVps","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["plan_id","location"],"properties":{"plan_id":{"type":"integer"},"location":{"type":"string","enum":["de-nuremberg","de-falkenstein","fi-helsinki","us-east","us-west","sg-singapore"]},"os":{"type":"string","enum":["ubuntu-24.04","ubuntu-22.04","debian-12","debian-11","centos-stream-9","centos-stream-10","rocky-9","rocky-10","almalinux-9","almalinux-10","fedora-43","opensuse-16"]},"ssh_public_key":{"type":"string"},"wait":{"type":"boolean","default":false,"description":"The location has no room now (out_of_stock): buy anyway; the server is made as soon as there is room (status waiting_for_room until then, the order stays processing). If no room appears by waiting_until, the payment is returned to the partner balance and the order fails with out_of_stock."}}}}}},"responses":{"202":{"description":"Accepted: the order is processing; follow it with GET /orders/{id} or the webhook.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Vps"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/vps/{id}":{"get":{"tags":["Servers"],"summary":"One server","operationId":"getVps","parameters":[{"name":"id","in":"path","required":true,"description":"The server id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Vps"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"delete":{"tags":["Servers"],"summary":"Delete a server (no refund)","operationId":"deleteVps","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The server id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"deleted":{"type":"boolean"}}},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/vps/{id}/power/{action}":{"post":{"tags":["Servers"],"summary":"Power on, off (graceful) or reboot","operationId":"powerVps","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The server id.","schema":{"type":"integer"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","enum":["on","off","reboot"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Vps"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/vps/{id}/rebuild":{"post":{"tags":["Servers"],"summary":"Reinstall the server from its image (data lost; the new root password is in this answer only)","operationId":"rebuildVps","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The server id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Vps"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/vps/{id}/renew":{"post":{"tags":["Servers"],"summary":"Renew one month (plan and add-ons)","operationId":"renewVps","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The server id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Vps"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/mail/subscription":{"get":{"tags":["Email"],"summary":"Your email subscription (one per account, shared by all its domains)","operationId":"getMailSubscription","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"oneOf":[{"$ref":"#/components/schemas/MailSubscription"},{"type":"null"}]}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"post":{"tags":["Email"],"summary":"Buy the email subscription (paid now from the partner balance)","operationId":"createMailSubscription","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["plan","period","mailboxes"],"properties":{"plan":{"type":"string"},"period":{"type":"string","enum":["monthly","yearly"]},"mailboxes":{"type":"integer"},"domain":{"type":"string"}}}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MailSubscription"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/mail/subscription/renew":{"post":{"tags":["Email"],"summary":"Renew the email subscription","operationId":"renewMailSubscription","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"period":{"type":"string","enum":["monthly","yearly"]}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MailSubscription"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/mail/subscription/mailboxes":{"put":{"tags":["Email"],"summary":"Set the number of paid mailboxes (more: charged for the rest of the period)","operationId":"setMailboxCount","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["mailboxes"],"properties":{"mailboxes":{"type":"integer"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MailSubscription"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/mail/subscription/storage":{"put":{"tags":["Email"],"summary":"Extra storage on every mailbox (GB)","operationId":"setMailStorage","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["gb_per_mailbox"],"properties":{"gb_per_mailbox":{"type":"integer"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MailSubscription"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/mail/domains":{"get":{"tags":["Email"],"summary":"Domains on your email subscription","operationId":"listMailDomains","parameters":[{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MailDomain"}},"meta":{"$ref":"#/components/schemas/PageMeta"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"post":{"tags":["Email"],"summary":"Add a client domain","operationId":"addMailDomain","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string"}}}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MailDomain"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/mail/domains/{id}":{"get":{"tags":["Email"],"summary":"One email domain","operationId":"getMailDomain","parameters":[{"name":"id","in":"path","required":true,"description":"The email domain id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/MailDomain"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"delete":{"tags":["Email"],"summary":"Remove a domain with its mailboxes and mail","operationId":"removeMailDomain","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The email domain id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"deleted":{"type":"boolean"}}},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/mail/domains/{id}/dns":{"get":{"tags":["Email"],"summary":"DNS records the domain needs and the mail settings for clients","operationId":"getMailDns","parameters":[{"name":"id","in":"path","required":true,"description":"The email domain id.","schema":{"type":"integer"}},{"name":"refresh","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/MailDns"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/mail/domains/{id}/mailboxes":{"get":{"tags":["Email"],"summary":"Mailboxes of a domain","operationId":"listMailboxes","parameters":[{"name":"id","in":"path","required":true,"description":"The email domain id.","schema":{"type":"integer"}},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Mailbox"}},"meta":{"$ref":"#/components/schemas/PageMeta"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"post":{"tags":["Email"],"summary":"Create a mailbox","operationId":"createMailbox","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The email domain id.","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["local_part","password"],"properties":{"local_part":{"type":"string"},"password":{"type":"string","minLength":8},"first_name":{"type":"string"},"last_name":{"type":"string"}}}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Mailbox"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/mail/mailboxes/{id}":{"patch":{"tags":["Email"],"summary":"Change a mailbox password or name","operationId":"updateMailbox","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The mailbox id.","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":8},"first_name":{"type":"string"},"last_name":{"type":"string"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Mailbox"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}},"delete":{"tags":["Email"],"summary":"Delete a mailbox with its mail","operationId":"deleteMailbox","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The mailbox id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"deleted":{"type":"boolean"}}},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/mail/domains/{id}/aliases":{"get":{"tags":["Email"],"summary":"Aliases and forwards of a domain","operationId":"listMailAliases","parameters":[{"name":"id","in":"path","required":true,"description":"The email domain id.","schema":{"type":"integer"}},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MailAlias"}},"meta":{"$ref":"#/components/schemas/PageMeta"}}}}}},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"post":{"tags":["Email"],"summary":"Create an alias or forward","operationId":"createMailAlias","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The email domain id.","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["local_part","destinations"],"properties":{"local_part":{"type":"string"},"destinations":{"type":"array","items":{"type":"string","format":"email"}}}}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MailAlias"},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/mail/aliases/{id}":{"delete":{"tags":["Email"],"summary":"Delete an alias","operationId":"deleteMailAlias","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"name":"id","in":"path","required":true,"description":"The alias id.","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"deleted":{"type":"boolean"}}},"order":{"$ref":"#/components/schemas/Order"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}}},"webhooks":{"order.completed":{"post":{"summary":"An order finished","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookOrder"}}}},"responses":{"200":{"description":"Any 2xx = received"}}}},"order.failed":{"post":{"summary":"An order failed (nothing charged, or refunded)","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookOrder"}}}},"responses":{"200":{"description":"Any 2xx = received"}}}},"balance.low":{"post":{"summary":"The partner balance crossed a threshold (accounts with credit)","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookBalance"}}}},"responses":{"200":{"description":"Any 2xx = received"}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"A Partner API token from your Rivervo manager."}},"parameters":{"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":true,"description":"Your unique key for this change (1\u2013128 of A\u2013Z a\u2013z 0\u20139 - _ . :). The same key with the same request returns the first answer (header Idempotent-Replayed: true) and never charges twice; with another request: 409 idempotency_conflict.","schema":{"type":"string","maxLength":128}},"Page":{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},"PerPage":{"name":"per_page","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}},"responses":{"Error":{"description":"An error: codes unauthenticated, forbidden, ip_not_allowed, partner_inactive, not_found, method_not_allowed, conflict, idempotency_conflict, idempotency_in_progress, idempotency_key_required, bad_request, not_available, validation_failed, refused, out_of_stock, insufficient_funds, rate_limited, upstream_failed, internal_error (also refused, provisioning_timeout on orders).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"fields":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}},"order":{"$ref":"#/components/schemas/Order"}}},"PageMeta":{"type":"object","properties":{"total":{"type":"integer"},"per_page":{"type":"integer"},"current_page":{"type":"integer"},"last_page":{"type":"integer"}}},"Partner":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string"},"status":{"type":"string"},"currency":{"type":"string"},"balance_cents":{"type":"integer"},"credit_allowed":{"type":"boolean"},"credit_limit_cents":{"type":"integer"},"available_cents":{"type":"integer"},"discounts_pct":{"type":"object","properties":{"hosting":{"type":"number"},"mail":{"type":"number"},"vps":{"type":"number"},"domains":{"type":"number"}}}}},"Transaction":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string"},"amount_cents":{"type":"integer"},"retail_cents":{"type":["integer","null"]},"balance_after_cents":{"type":["integer","null"]},"currency":{"type":"string"},"resource":{"type":["object","null"],"properties":{"type":{"type":"string"},"id":{"type":"integer"}}},"receipt_no":{"type":["string","null"]},"created_at":{"type":["string","null"],"format":"date-time"}}},"Order":{"type":"object","properties":{"id":{"type":"integer"},"action":{"type":"string"},"status":{"type":"string","enum":["processing","completed","failed"]},"idempotency_key":{"type":"string"},"resource":{"type":["object","null"],"properties":{"type":{"type":"string"},"id":{"type":"integer"}}},"charged_cents":{"type":["integer","null"]},"retail_cents":{"type":["integer","null"]},"currency":{"type":"string"},"error":{"type":["object","null"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}},"created_at":{"type":["string","null"],"format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"}}},"Price":{"type":"object","properties":{"retail_cents":{"type":"integer"},"partner_cents":{"type":"integer"}}},"PriceList":{"type":"object","properties":{"currency":{"type":"string"},"updated_at":{"type":["string","null"],"format":"date-time"},"discounts_pct":{"type":"object"},"hosting":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"terms":{"type":"array","items":{"type":"object","properties":{"months":{"type":"integer"},"retail_cents":{"type":"integer"},"partner_cents":{"type":"integer"}}}}}}},"mail":{"type":"array","items":{"type":"object","properties":{"plan":{"type":"string"},"name":{"type":"string"},"mailbox_quota_gb":{"type":"integer"},"min_mailboxes":{"type":"integer"},"per_mailbox":{"type":"object","properties":{"monthly":{"oneOf":[{"$ref":"#/components/schemas/Price"},{"type":"null"}]},"yearly":{"$ref":"#/components/schemas/Price"}}},"extra_storage_per_gb_per_mailbox":{"type":"object","properties":{"monthly":{"$ref":"#/components/schemas/Price"},"yearly":{"$ref":"#/components/schemas/Price"}}}}}},"vps":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/VpsPlan"},{"type":"object","properties":{"monthly":{"$ref":"#/components/schemas/Price"}}}]}},"vps_addons":{"type":"object","properties":{"backups":{"type":"object","properties":{"percent_of_plan":{"type":"integer"},"note":{"type":"string"}}},"volume_per_gb_monthly":{"$ref":"#/components/schemas/Price"},"monitoring_monthly":{"$ref":"#/components/schemas/Price"}}},"domains":{"type":"array","items":{"type":"object","properties":{"tld":{"type":"string"},"register":{"type":"object","properties":{"1y":{"$ref":"#/components/schemas/Price"},"2y":{"$ref":"#/components/schemas/Price"},"3y":{"$ref":"#/components/schemas/Price"}}},"renew_1y":{"$ref":"#/components/schemas/Price"},"transfer_1y":{"$ref":"#/components/schemas/Price"}}}}}},"Region":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"locations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"country":{"type":"string"},"city":{"type":"string"}}}}}},"VpsPlan":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"cpu":{"type":"integer"},"ram_gb":{"type":"number"},"disk_gb":{"type":"integer"},"traffic_tb":{"type":"number"},"cpu_type":{"type":"string","enum":["shared","dedicated"]},"arch":{"type":"string","enum":["x86","arm"]},"region":{"type":"string"},"locations":{"type":"array","items":{"type":"string"},"description":"Where the plan is sold."},"available_locations":{"type":"array","items":{"type":"string"},"description":"Where it can be made right now (in GET /catalog/vps-plans and GET /prices only; refreshed every 5 minutes). Elsewhere in `locations` POST /vps answers out_of_stock unless \"wait\": true."}}},"Hosting":{"type":"object","properties":{"id":{"type":"integer"},"domain":{"type":"string"},"username":{"type":"string"},"plan":{"type":["object","null"],"properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"term_months":{"type":["integer","null"]},"status":{"type":"string","enum":["provisioning","active","expired","suspended","deleted"]},"paid_until":{"type":["string","null"],"format":"date-time"},"renews_from_partner_balance":{"type":"boolean"},"created_at":{"type":["string","null"],"format":"date-time"}}},"Vps":{"type":"object","properties":{"id":{"type":"integer"},"hostname":{"type":"string"},"plan":{"$ref":"#/components/schemas/VpsPlan"},"location":{"type":["object","null"],"properties":{"id":{"type":"string"},"region":{"type":"string"},"country":{"type":"string"},"city":{"type":"string"}}},"os":{"type":"string"},"status":{"type":"string","description":"provisioning, waiting_for_room, active, suspended, archived \u2026"},"waiting_until":{"type":["string","null"],"format":"date-time","description":"Only while waiting_for_room: refunded if no room appears by then."},"ipv4":{"type":["string","null"]},"ipv6":{"type":["string","null"]},"reverse_dns":{"type":["string","null"],"description":"The name the server's addresses resolve back to (<name>.rivervo.app); null until it is set."},"paid_until":{"type":["string","null"],"format":"date-time"},"renews_from_partner_balance":{"type":"boolean"},"root_password":{"type":"string","description":"Only in the rebuild answer."},"created_at":{"type":["string","null"],"format":"date-time"}}},"MailSubscription":{"type":"object","properties":{"id":{"type":"integer"},"plan":{"type":["object","null"],"properties":{"key":{"type":"string"},"name":{"type":"string"},"mailbox_quota_gb":{"type":"integer"}}},"period":{"type":"string"},"mailboxes_paid":{"type":"integer"},"mailboxes_used":{"type":"integer"},"extra_storage_gb_per_mailbox":{"type":"integer"},"status":{"type":"string"},"paid_until":{"type":["string","null"],"format":"date-time"},"renews_from_partner_balance":{"type":"boolean"},"domains":{"type":"array","items":{"$ref":"#/components/schemas/MailDomain"}},"created_at":{"type":["string","null"],"format":"date-time"}}},"MailDomain":{"type":"object","properties":{"id":{"type":"integer"},"domain":{"type":"string"},"status":{"type":"string"},"dns_verified":{"type":"boolean"},"mailboxes":{"type":"integer"},"created_at":{"type":["string","null"],"format":"date-time"}}},"MailDns":{"type":"object","properties":{"domain":{"type":"string"},"status":{"type":"string","enum":["pending","partial","verified"]},"records":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"host":{"type":["string","null"]},"value":{"type":["string","null"]},"priority":{"type":["integer","null"]},"purpose":{"type":["string","null"]},"available":{"type":"boolean","description":"false: ask support for this record."}}}},"settings":{"type":"object","properties":{"imap_host":{"type":["string","null"]},"imap_port":{"type":["integer","null"]},"smtp_host":{"type":["string","null"]},"smtp_port":{"type":["integer","null"]},"webmail_url":{"type":["string","null"]}}},"verified_at":{"type":["string","null"],"format":"date-time"}}},"Mailbox":{"type":"object","properties":{"id":{"type":"integer"},"address":{"type":"string"},"first_name":{"type":["string","null"]},"last_name":{"type":["string","null"]},"quota_gb":{"type":["integer","null"]},"status":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"}}},"MailAlias":{"type":"object","properties":{"id":{"type":"integer"},"address":{"type":"string"},"destinations":{"type":"array","items":{"type":"string"}},"created_at":{"type":["string","null"],"format":"date-time"}}},"WebhookOrder":{"type":"object","properties":{"id":{"type":"string"},"event":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"data":{"type":"object","properties":{"order":{"$ref":"#/components/schemas/Order"}}}}},"WebhookBalance":{"type":"object","properties":{"id":{"type":"string"},"event":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"data":{"type":"object","properties":{"stage":{"type":"string"},"balance_cents":{"type":"integer"},"credit_limit_cents":{"type":"integer"},"available_cents":{"type":"integer"}}}}}}}}