openapi: 3.0.3 info: title: 'Xenius public API Documentation' description: 'Xenius Api Documentation for public Use' version: 1.0.0 servers: - url: 'https://staging.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 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 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 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 nullable: false order_number: type: string description: 'The number of the order in Admind.' example: OR1234 nullable: false 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 nullable: false 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 nullable: false properties: first_name: type: string description: 'The first name of the contact. This field is required when contact is present.' example: Anouk nullable: false last_name: type: string description: 'The last name of the contact. This field is required when contact is present.' example: Leroy nullable: false 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 nullable: false address: type: string description: 'The address of the contact. This field is required when contact is present.' example: 'Lauwerslaan 39' nullable: false postalcode: type: string description: 'The postal code of the contact. This field is required when contact is present.' example: '2080' nullable: false town: type: string description: 'The town of the contact. This field is required when contact is present.' example: Péruwelz nullable: false country: type: string description: 'The country of the contact. This field is required when contact is present.' example: BE nullable: false phone: type: string description: 'The phone number of the contact. This field is required when contact is present.' example: '+32.123457789' nullable: false lang: type: string description: 'The language of the contact. This field is required when contact is present.' example: NL nullable: false enum: - NL - FR - EN gender: type: string description: 'The gender of the contact.' example: V nullable: true enum: - M - V - X 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: collin.net expirationdate: '2024-12-30' days_until_expiration: 0 is_locked: false auto_renew: false external_id: (test)184 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: collin.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)184 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 nullable: false 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: vanacker.net expirationdate: '2024-12-30' days_until_expiration: 0 is_locked: false auto_renew: false external_id: (test)8293 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: vanacker.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)8293 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 example: - tld: .com price_excl: '14.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 489ms.\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) VF202523488' 'invoice date': 10-01-2026 'due date': 10-01-2026 paid_at: null total: 0 open: 0 is_paid: false 'payment link': 'https://www.factuursturen.be/pay?id=53cc2c10-f1d5-373a-929d-18b8108463e9' - 'invoice number': '(test) VF202506721' 'invoice date': 25-03-2026 'due date': 25-03-2026 paid_at: 11-03-2025 total: 0 open: 7682.27 is_paid: false 'payment link': 'https://www.factuursturen.be/pay?id=dd3afc25-3b49-34c8-9e3f-7edeebdc67a6' 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) VF202523488' 'invoice date': 10-01-2026 'due date': 10-01-2026 paid_at: null total: 0 open: 0 is_paid: false 'payment link': 'https://www.factuursturen.be/pay?id=53cc2c10-f1d5-373a-929d-18b8108463e9' - 'invoice number': '(test) VF202506721' 'invoice date': 25-03-2026 'due date': 25-03-2026 paid_at: 11-03-2025 total: 0 open: 7682.27 is_paid: false 'payment link': 'https://www.factuursturen.be/pay?id=dd3afc25-3b49-34c8-9e3f-7edeebdc67a6' items: type: object properties: 'invoice number': type: string example: '(test) VF202523488' 'invoice date': type: string example: 10-01-2026 'due date': type: string example: 10-01-2026 paid_at: type: string example: null total: type: integer example: 0 open: type: integer example: 0 is_paid: type: boolean example: false 'payment link': type: string example: 'https://www.factuursturen.be/pay?id=53cc2c10-f1d5-373a-929d-18b8108463e9' 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 nullable: false is_paid: type: boolean description: 'Optional parameter to get either the paid or not paid invoices.' example: false nullable: 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 nullable: false properties: { } autorenew: type: boolean description: 'The new autorenew value.' example: false nullable: 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 magento' is_promo: true price_monthly: 32.55 type: magento-hosting aanrader: false meta: count: 1 properties: success: type: boolean example: true data: type: array example: - name: 'Cosmos magento' is_promo: true price_monthly: 32.55 type: magento-hosting aanrader: false items: type: object properties: name: type: string example: 'Cosmos magento' is_promo: type: boolean example: true price_monthly: type: number example: 32.55 type: type: string example: magento-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: 3359 accountname: '(test) El Amrani VZW' domain: michel.be creation_date: '2024-11-23 02:02:46' expiration_date: '2024-11-22T23:00:00.000000Z' product_package_id: 2 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: 3359 accountname: '(test) El Amrani VZW' domain: michel.be creation_date: '2024-11-23 02:02:46' expiration_date: '2024-11-22T23:00:00.000000Z' product_package_id: 2 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: 3359 accountname: type: string example: '(test) El Amrani VZW' domain: type: string example: michel.be creation_date: type: string example: '2024-11-23 02:02:46' expiration_date: type: string example: '2024-11-22T23:00:00.000000Z' product_package_id: type: integer example: 2 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: 2157 accountname: '(test) Van Damme' domain: delhaye.org creation_date: '2024-10-21 00:11:22' expiration_date: '2024-10-20T22:00:00.000000Z' product_package_id: 5 package_id: 262 server: 6 status: ACTIVE disk_used: 190 owner: root external_id: (test)5902 properties: client_id: type: integer example: 2157 accountname: type: string example: '(test) Van Damme' domain: type: string example: delhaye.org creation_date: type: string example: '2024-10-21 00:11:22' expiration_date: type: string example: '2024-10-20T22: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 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: 1051 accountname: '(test) El Amrani VZW' domain: michel.be creation_date: '2024-11-23 02:02:46' expiration_date: '2024-11-22T23:00:00.000000Z' product_package_id: 5 package_id: 262 server: 6 status: ACTIVE disk_used: 276 owner: root external_id: (test)2019 properties: client_id: type: integer example: 1051 accountname: type: string example: '(test) El Amrani VZW' domain: type: string example: michel.be creation_date: type: string example: '2024-11-23 02:02:46' expiration_date: type: string example: '2024-11-22T23: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 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: 1824 accountname: '(test) El Amrani VZW' domain: michel.be creation_date: '2024-11-23 02:02:46' expiration_date: '2024-11-22T23:00:00.000000Z' product_package_id: 11 package_id: 262 server: 6 status: ACTIVE disk_used: 276 owner: root external_id: (test)774 properties: client_id: type: integer example: 1824 accountname: type: string example: '(test) El Amrani VZW' domain: type: string example: michel.be creation_date: type: string example: '2024-11-23 02:02:46' expiration_date: type: string example: '2024-11-22T23:00:00.000000Z' product_package_id: type: integer example: 11 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