openapi: 3.0.3 info: title: 'Xenius public API Documentation' description: 'Xenius Api Documentation for public Use' version: 1.0.0 servers: - url: 'https://api.xenius.io' tags: - name: Authentication description: '' - name: Carts description: '' - name: 'Domain names' description: '' - name: Endpoints description: '' - name: Invoices description: '' - name: 'Office 365' description: '' - name: 'Shared hosting' description: '' components: securitySchemes: default: type: http scheme: bearer description: 'You can retrieve your token contacting support.' security: - default: [] paths: /v2/verify-token: get: summary: 'Verify Api-token' operationId: verifyApiToken description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Authentication /v2/carts/store-admind: post: summary: 'Create a new cart for Admind (POST)' operationId: createANewCartForAdmindPOST description: '' parameters: [] responses: 200: description: Success content: application/json: schema: type: array items: type: object properties: message: type: string example: 'Cart stored successfully' data: type: object properties: order_id: type: integer example: 1 contact_id: type: integer example: 1 example: - message: 'Cart stored successfully' data: order_id: 1 contact_id: 1 401: description: '' content: application/json: schema: oneOf: - description: '' type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. - description: Unauthorized type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. 404: description: 'Not Found' content: application/json: schema: type: object example: message: 'No :attribute found.' properties: message: type: string example: 'No :attribute found.' 409: description: Conflict content: application/json: schema: type: array items: type: object properties: message: type: string example: 'There are conflicting items.' errors: type: object properties: contact_id: type: array example: - 'The contact id field prohibits contact from being present.' items: type: string contact: type: array example: - 'The contact field prohibits contact id from being present.' items: type: string example: - message: 'There are conflicting items.' errors: contact_id: - 'The contact id field prohibits contact from being present.' contact: - 'The contact field prohibits contact id from being present.' 422: description: 'Unprocessable Content' content: application/json: schema: type: array items: type: object properties: message: type: string example: 'The selected :attribute is invalid' errors: type: object properties: ':attribute': type: array example: - 'The selected :attribute is invalid.' items: type: string example: - message: 'The selected :attribute is invalid' errors: ':attribute': - 'The selected :attribute is invalid.' tags: - Carts requestBody: required: true content: application/json: schema: type: object properties: domain_name: type: string description: 'The domain name that needs to be added to the cart.' example: xenius.be order_number: type: string description: 'The number of the order in Admind.' example: OR1234 contact_id: type: integer description: 'The contact ID that the order belongs to. This field is required when contact is not present. The id of an existing record in the tblcontacts table.' example: 1 contact: type: object description: 'The information to create the new contact. This field is required when contact_id is not present.' example: first_name: Anouk last_name: Leroy email: gilles.degroote@example.org address: 'Lauwerslaan 39' postalcode: '5537' town: Péruwelz country: PW phone: '+32.123457789' company: 'Aerts EBVBA' vat: null lang: NL gender: V properties: first_name: type: string description: 'The first name of the contact. This field is required when contact is present.' example: Anouk last_name: type: string description: 'The last name of the contact. This field is required when contact is present.' example: Leroy email: type: string description: 'The email of the contact. This field is required when contact is present. Het veld value moet een geldig e-mailadres zijn.' example: gilles.degroote@example.org address: type: string description: 'The address of the contact. This field is required when contact is present.' example: 'Lauwerslaan 39' postalcode: type: string description: 'The postal code of the contact. This field is required when contact is present.' example: '2080' town: type: string description: 'The town of the contact. This field is required when contact is present.' example: Péruwelz country: type: string description: 'The country of the contact. This field is required when contact is present.' example: BE phone: type: string description: 'The phone number of the contact. This field is required when contact is present.' example: '+32.123457789' lang: type: string description: 'The language of the contact. This field is required when contact is present.' example: NL enum: - NL - FR - EN gender: type: string description: 'The gender of the contact.' example: V enum: - M - V - X nullable: true company: type: string description: 'The company of the contact. This field is required when contact.vat is present.' example: 'Aerts EBVBA' nullable: true vat: type: string description: 'Vat will validated against VIES.' example: BE1234567 nullable: true required: - domain_name - order_number /v2/domain-names: get: summary: 'Show all domain names of the client (GET)' operationId: showAllDomainNamesOfTheClientGET description: 'Returns a list of domain names of the client.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: null status: active domain_name: lauwers.be expirationdate: '2024-12-30' days_until_expiration: 0 is_locked: false auto_renew: false external_id: (test)2925 nameservers: ns1: name: ns3.hostedby.eu ipv4: 185.27.175.217 ipv6: '2a00:f10:121:400:4c7:54ff:fe00:525' ns2: name: ns4.hostedby.eu ipv4: 185.59.16.34 ipv6: null ns3: name: ns2.hostedby.be ipv4: 151.80.147.144 ipv6: null properties: id: type: string example: null status: type: string example: active description: 'The status of the domain name' enum: - active - registered - deleted - expired - quarantaine - transferred - failed - status domain_name: type: string example: lauwers.be expirationdate: type: string example: '2024-12-30' days_until_expiration: type: integer example: 0 is_locked: type: boolean example: false auto_renew: type: boolean example: false external_id: type: string example: (test)2925 nameservers: type: object properties: ns1: type: object properties: name: type: string example: ns3.hostedby.eu ipv4: type: string example: 185.27.175.217 ipv6: type: string example: '2a00:f10:121:400:4c7:54ff:fe00:525' ns2: type: object properties: name: type: string example: ns4.hostedby.eu ipv4: type: string example: 185.59.16.34 ipv6: type: string example: null ns3: type: object properties: name: type: string example: ns2.hostedby.be ipv4: type: string example: 151.80.147.144 ipv6: type: string example: null required: - status tags: - 'Domain names' '/v2/domain-names/id/{id}': get: summary: 'Show a domain name of the client by id (GET)' operationId: showADomainNameOfTheClientByIdGET description: 'Returns a domain name of the client.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: null status: active domain_name: borremans.org expirationdate: '2024-12-30' days_until_expiration: 0 is_locked: false auto_renew: false external_id: (test)8634 nameservers: ns1: name: ns3.hostedby.eu ipv4: 185.27.175.217 ipv6: '2a00:f10:121:400:4c7:54ff:fe00:525' ns2: name: ns4.hostedby.eu ipv4: 185.59.16.34 ipv6: null ns3: name: ns2.hostedby.be ipv4: 151.80.147.144 ipv6: null properties: id: type: string example: null status: type: string example: active description: 'The status of the domain name' enum: - active - registered - deleted - expired - quarantaine - transferred - failed - status domain_name: type: string example: borremans.org expirationdate: type: string example: '2024-12-30' days_until_expiration: type: integer example: 0 is_locked: type: boolean example: false auto_renew: type: boolean example: false external_id: type: string example: (test)8634 nameservers: type: object properties: ns1: type: object properties: name: type: string example: ns3.hostedby.eu ipv4: type: string example: 185.27.175.217 ipv6: type: string example: '2a00:f10:121:400:4c7:54ff:fe00:525' ns2: type: object properties: name: type: string example: ns4.hostedby.eu ipv4: type: string example: 185.59.16.34 ipv6: type: string example: null ns3: type: object properties: name: type: string example: ns2.hostedby.be ipv4: type: string example: 151.80.147.144 ipv6: type: string example: null required: - status tags: - 'Domain names' parameters: - in: path name: id description: 'id of the domain name' example: 10 required: true schema: type: integer '/v2/domain-names/external-id/{external_id}': get: summary: 'Show a domain name of the client by external_id (GET)' operationId: showADomainNameOfTheClientByExternalIdGET description: 'Returns a domain name of the client.' parameters: - in: query name: client_id description: 'Required if an admin uses this endpoint. The client ID of the domain the external_id belongs to.' example: 1 required: false schema: type: integer description: 'Required if an admin uses this endpoint. The client ID of the domain the external_id belongs to.' example: 1 responses: 200: description: '' content: application/json: schema: type: object example: id: null status: active domain_name: borremans.org expirationdate: '2024-12-30' days_until_expiration: 0 is_locked: false auto_renew: false external_id: (test)4757 nameservers: ns1: name: ns3.hostedby.eu ipv4: 185.27.175.217 ipv6: '2a00:f10:121:400:4c7:54ff:fe00:525' ns2: name: ns4.hostedby.eu ipv4: 185.59.16.34 ipv6: null ns3: name: ns2.hostedby.be ipv4: 151.80.147.144 ipv6: null properties: id: type: string example: null status: type: string example: active description: 'The status of the domain name' enum: - active - registered - deleted - expired - quarantaine - transferred - failed - status domain_name: type: string example: borremans.org expirationdate: type: string example: '2024-12-30' days_until_expiration: type: integer example: 0 is_locked: type: boolean example: false auto_renew: type: boolean example: false external_id: type: string example: (test)4757 nameservers: type: object properties: ns1: type: object properties: name: type: string example: ns3.hostedby.eu ipv4: type: string example: 185.27.175.217 ipv6: type: string example: '2a00:f10:121:400:4c7:54ff:fe00:525' ns2: type: object properties: name: type: string example: ns4.hostedby.eu ipv4: type: string example: 185.59.16.34 ipv6: type: string example: null ns3: type: object properties: name: type: string example: ns2.hostedby.be ipv4: type: string example: 151.80.147.144 ipv6: type: string example: null required: - status tags: - 'Domain names' parameters: - in: path name: external_id description: 'external_id of the domain name' example: test_123 required: true schema: type: string '/v2/domain-names/{id}': patch: summary: "Update a domain's external id (PATCH)" operationId: updateADomainsExternalIdPATCH description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: id: null status: active domain_name: geerts.net expirationdate: '2024-12-30' days_until_expiration: 0 is_locked: false auto_renew: false external_id: (test)1342 nameservers: ns1: name: ns3.hostedby.eu ipv4: 185.27.175.217 ipv6: '2a00:f10:121:400:4c7:54ff:fe00:525' ns2: name: ns4.hostedby.eu ipv4: 185.59.16.34 ipv6: null ns3: name: ns2.hostedby.be ipv4: 151.80.147.144 ipv6: null properties: id: type: string example: null status: type: string example: active domain_name: type: string example: geerts.net expirationdate: type: string example: '2024-12-30' days_until_expiration: type: integer example: 0 is_locked: type: boolean example: false auto_renew: type: boolean example: false external_id: type: string example: (test)1342 nameservers: type: object properties: ns1: type: object properties: name: type: string example: ns3.hostedby.eu ipv4: type: string example: 185.27.175.217 ipv6: type: string example: '2a00:f10:121:400:4c7:54ff:fe00:525' ns2: type: object properties: name: type: string example: ns4.hostedby.eu ipv4: type: string example: 185.59.16.34 ipv6: type: string example: null ns3: type: object properties: name: type: string example: ns2.hostedby.be ipv4: type: string example: 151.80.147.144 ipv6: type: string example: null tags: - 'Domain names' requestBody: required: false content: application/json: schema: type: object properties: external_id: type: string description: 'The custom id a client can assign to the domain. validation.max Het veld value moet minstens 1 tekens bevatten.' example: domain_10 nullable: true /v2/tlds: get: summary: 'Show Tld prices by client (GET)' operationId: showTldPricesByClientGET description: 'Returns a list of the Tld prices of the client.' parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: object properties: tld: type: string example: .com price_excl: type: string example: '17.95' price_promo: type: string example: '12.50' example: - tld: .com price_excl: '17.95' price_promo: '12.50' tags: - 'Domain names' /up: get: summary: '' operationId: getUp description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "\n\n\n \n \n\n Xenius API\n\n \n \n \n\n \n \n\n \n\n\n
\n
\n
\n
\n \n \n
\n\n
\n

Application up

\n\n

\n HTTP request received.\n\n Response rendered in 251ms.\n

\n
\n
\n
\n
\n\n\n" tags: - Endpoints security: [] /v2/invoices: post: summary: 'Show invoices (POST)' operationId: showInvoicesPOST description: 'Get All invoices with the option to filter by payment status' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true data: - 'invoice number': '(test) VF202538334' 'invoice date': 08-11-2026 'due date': 08-11-2026 paid_at: 12-05-2025 total: 0 open: 0 is_paid: true 'payment link': 'https://www.factuursturen.be/pay?id=229962f8-1b6c-3492-aff4-c8e41ccd8023' - 'invoice number': '(test) VF202469277' 'invoice date': 19-11-2025 'due date': 19-11-2025 paid_at: 26-08-2025 total: 0 open: 0 is_paid: true 'payment link': 'https://www.factuursturen.be/pay?id=7acced95-7ff3-3f10-93c5-493b2882c436' meta: count: 2 links: first: '/?page=1' last: '/?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: pagination.previous active: false - url: '/?page=1' label: '1' active: true - url: null label: pagination.next active: false path: / per_page: 10 to: 2 total: 2 properties: data: type: object properties: success: type: boolean example: true data: type: array example: - 'invoice number': '(test) VF202538334' 'invoice date': 08-11-2026 'due date': 08-11-2026 paid_at: 12-05-2025 total: 0 open: 0 is_paid: true 'payment link': 'https://www.factuursturen.be/pay?id=229962f8-1b6c-3492-aff4-c8e41ccd8023' - 'invoice number': '(test) VF202469277' 'invoice date': 19-11-2025 'due date': 19-11-2025 paid_at: 26-08-2025 total: 0 open: 0 is_paid: true 'payment link': 'https://www.factuursturen.be/pay?id=7acced95-7ff3-3f10-93c5-493b2882c436' items: type: object properties: 'invoice number': type: string example: '(test) VF202538334' 'invoice date': type: string example: 08-11-2026 'due date': type: string example: 08-11-2026 paid_at: type: string example: 12-05-2025 total: type: integer example: 0 open: type: integer example: 0 is_paid: type: boolean example: true 'payment link': type: string example: 'https://www.factuursturen.be/pay?id=229962f8-1b6c-3492-aff4-c8e41ccd8023' meta: type: object properties: count: type: integer example: 2 links: type: object properties: first: type: string example: '/?page=1' last: type: string example: '/?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: pagination.previous active: false - url: '/?page=1' label: '1' active: true - url: null label: pagination.next active: false items: type: object properties: url: type: string example: null label: type: string example: pagination.previous active: type: boolean example: false path: type: string example: / per_page: type: integer example: 10 to: type: integer example: 2 total: type: integer example: 2 tags: - Invoices requestBody: required: false content: application/json: schema: type: object properties: invoice_number: type: string description: 'The Unique identifier of the invoice to get a specific invoice.' example: VF202200734 is_paid: type: boolean description: 'Optional parameter to get either the paid or not paid invoices.' example: false /v2/invoices/toggle-autorenew: patch: summary: 'Toggle auto-renewal (PATCH)' operationId: toggleAutoRenewalPATCH description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Invoices requestBody: required: true content: application/json: schema: type: object properties: external_ids: type: object description: 'The external IDs to change the renewal status.' example: - '1' - '2' - 3 - 4 properties: { } autorenew: type: boolean description: 'The new autorenew value.' example: false required: - external_ids - autorenew '/v2/office-365/{tenant}': get: summary: 'Show tenants (GET)' operationId: showTenantsGET description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Office 365' /v2/hostings/pricing: get: summary: 'Show prices of Shared-hostings (GET)' operationId: showPricesOfSharedHostingsGET description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: success: true data: - name: 'Cosmos drupal' is_promo: true price_monthly: 30.33 type: drupal-hosting aanrader: false meta: count: 1 properties: success: type: boolean example: true data: type: array example: - name: 'Cosmos drupal' is_promo: true price_monthly: 30.33 type: drupal-hosting aanrader: false items: type: object properties: name: type: string example: 'Cosmos drupal' is_promo: type: boolean example: true price_monthly: type: number example: 30.33 type: type: string example: drupal-hosting aanrader: type: boolean example: false meta: type: object properties: count: type: integer example: 1 tags: - 'Shared hosting' security: [] /v2/hostings: get: summary: 'Show all shared-hostings of the client (GET)' operationId: showAllSharedHostingsOfTheClientGET description: 'Returns a list of domain names of the client.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: success: true data: - client_id: 3022 accountname: '(test) El Amrani VZW' domain: michel.be creation_date: '2025-03-26 06:26:27' expiration_date: '2025-03-25T23:00:00.000000Z' product_package_id: 10 package_id: 262 server: 6 status: ACTIVE disk_used: 276 owner: root external_id: (test)1282 meta: count: 1 properties: success: type: boolean example: true data: type: array example: - client_id: 3022 accountname: '(test) El Amrani VZW' domain: michel.be creation_date: '2025-03-26 06:26:27' expiration_date: '2025-03-25T23:00:00.000000Z' product_package_id: 10 package_id: 262 server: 6 status: ACTIVE disk_used: 276 owner: root external_id: (test)1282 items: type: object properties: client_id: type: integer example: 3022 accountname: type: string example: '(test) El Amrani VZW' domain: type: string example: michel.be creation_date: type: string example: '2025-03-26 06:26:27' expiration_date: type: string example: '2025-03-25T23:00:00.000000Z' product_package_id: type: integer example: 10 package_id: type: integer example: 262 server: type: integer example: 6 status: type: string example: ACTIVE disk_used: type: integer example: 276 owner: type: string example: root external_id: type: string example: (test)1282 required: - status meta: type: object properties: count: type: integer example: 1 tags: - 'Shared hosting' patch: summary: "Update a shared-hosting's external id (PATCH)" operationId: updateASharedHostingsExternalIdPATCH description: 'Returns a shared-hosting of the client.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: client_id: 2799 accountname: '(test) Van Damme' domain: delhaye.org creation_date: '2025-02-22 03:35:03' expiration_date: '2025-02-21T23:00:00.000000Z' product_package_id: 4 package_id: 203 server: 6 status: ACTIVE disk_used: 190 owner: root external_id: (test)5902 properties: client_id: type: integer example: 2799 accountname: type: string example: '(test) Van Damme' domain: type: string example: delhaye.org creation_date: type: string example: '2025-02-22 03:35:03' expiration_date: type: string example: '2025-02-21T23:00:00.000000Z' product_package_id: type: integer example: 4 package_id: type: integer example: 203 server: type: integer example: 6 status: type: string example: ACTIVE disk_used: type: integer example: 190 owner: type: string example: root external_id: type: string example: (test)5902 tags: - 'Shared hosting' requestBody: required: false content: application/json: schema: type: object properties: external_id: type: string description: 'The custom id a client can assign to the domain. validation.max Het veld value moet minstens 1 tekens bevatten.' example: domain_10 nullable: true '/v2/hostings/id/{id}': get: summary: 'Show a shared-hosting of the client by id (GET)' operationId: showASharedHostingOfTheClientByIdGET description: 'return a list of shared-hostings of the client' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: client_id: 1546 accountname: '(test) El Amrani VZW' domain: michel.be creation_date: '2025-03-26 06:26:27' expiration_date: '2025-03-25T23:00:00.000000Z' product_package_id: 7 package_id: 262 server: 6 status: ACTIVE disk_used: 276 owner: root external_id: (test)2019 properties: client_id: type: integer example: 1546 accountname: type: string example: '(test) El Amrani VZW' domain: type: string example: michel.be creation_date: type: string example: '2025-03-26 06:26:27' expiration_date: type: string example: '2025-03-25T23:00:00.000000Z' product_package_id: type: integer example: 7 package_id: type: integer example: 262 server: type: integer example: 6 status: type: string example: ACTIVE disk_used: type: integer example: 276 owner: type: string example: root external_id: type: string example: (test)2019 tags: - 'Shared hosting' parameters: - in: path name: id description: 'id of the shared-hosting' example: 1 required: true schema: type: integer '/v2/hostings/external-id/{external_id}': get: summary: 'Show a shared-hosting of the client by external_id (GET)' operationId: showASharedHostingOfTheClientByExternalIdGET description: 'Returns a shared-hosting of the client.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: client_id: 3081 accountname: '(test) El Amrani VZW' domain: michel.be creation_date: '2025-03-26 06:26:27' expiration_date: '2025-03-25T23:00:00.000000Z' product_package_id: 5 package_id: 262 server: 6 status: ACTIVE disk_used: 276 owner: root external_id: (test)774 properties: client_id: type: integer example: 3081 accountname: type: string example: '(test) El Amrani VZW' domain: type: string example: michel.be creation_date: type: string example: '2025-03-26 06:26:27' expiration_date: type: string example: '2025-03-25T23:00:00.000000Z' product_package_id: type: integer example: 5 package_id: type: integer example: 262 server: type: integer example: 6 status: type: string example: ACTIVE description: 'The status of the shared-hosting' enum: - ACTIVE - SUSPENDED - TERMINATED disk_used: type: integer example: 276 owner: type: string example: root external_id: type: string example: (test)774 required: - status tags: - 'Shared hosting' parameters: - in: path name: external_id description: 'external_id of the shared-hosting' example: 10 required: true schema: type: string