type Query {
  """
  This query provides basic information about your account such as `name`, `email`, `hostname` template and when the account was created.
  """
  account: Account!

  """List of all error codes."""
  errorCodes: [ErrorCode!]!

  """
  Invoice query provides information about a single invoice in your account. Use `InvoiceInput` to specify invoice number.
  """
  invoice(input: InvoiceInput!): Invoice!

  """Invoices query provides information about invoices in your account."""
  invoices(input: PaginatedInvoicesInput): PaginatedInvoiceResponse!

  """List of all available locations."""
  locations: [Location!]!

  """
  List of all available operating systems that can be installed on provisioned servers. Use the osImageId from these results when calling the provisionServer mutation.
  """
  operatingSystems: [OperatingSystem!]!

  """Get server links configuration task"""
  serverLinksConfigurationTask(input: ServerLinksConfigurationTaskInput!): ServerLinksConfigurationTask

  """Returns a paginated list of post-install scripts."""
  postInstallScripts(input: PaginatedPostInstallScriptsInput): PaginatedPostInstallScriptResponse!

  """
  List of available server configurations that match your filtering criteria. Each configuration represents a specific hardware setup with details about CPU, memory, storage, uplink, location, and pricing. Use the `configurationId` from these results when calling the [`provisionServer`](#mutation-provisionServer) mutation. You can filter configurations by region, CPU cores, memory, storage requirements, and other parameters to find the optimal server for your needs. Results are sorted by price, with the lowest priced configurations first, making it easy to find the most cost-effective option that meets your requirements. For more information, see [Server provisioning docs](#server-provisioning).
  """
  provisioningConfigurations(input: ProvisioningConfigurationsInput): [ProvisioningConfiguration!]!

  """Get a reverse DNS (PTR) record for a given IP"""
  reverseDnsRecord(input: ReverseDnsRecordInput!): ReverseDnsRecordResponse!

  """
  Server query provides information about a single server in your account. You can query name and location of the server, its power status, IPMI IP, its network settings and more. Use `ServerInput` to specify server's name, alias, IP or IPMI IP.
  """
  server(input: ServerInput!): Server!

  """
  Servers query provides a list of servers in your account.
You can filter by name, location, power status, IPMI IP, IP, alias, etc.
You can also sort results by various attributes. """ servers(input: PaginatedServersInput): PaginatedServerResponse! """ Subscription query provides basic information about your subscription, including `subtotal`, `currency`, `type`, `createdAt`, subscription items, and billing cycle. """ subscription(input: SubscriptionInput!): Subscription! """ Subscriptions query provides information about subscriptions in your account. """ subscriptions(input: PaginatedSubscriptionsInput): PaginatedSubscriptionResponse! """Get information about a single support request.""" supportRequest(input: SupportRequestInput!): SupportRequest! """Get a list of support requests.""" supportRequests(input: PaginatedSupportRequestsInput): [SupportRequest!]! """ Get traffic statistics over a specified time period, either aggregated or broken down by server. If no server is specified, stats are returned for all servers. """ traffic(input: TrafficInput!): Traffic! } type Account { name: String email: String! hostname: String createdAt: DateTime! } """ A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.This scalar is serialized to a string in ISO 8601 format and parsed from a string in ISO 8601 format. """ scalar DateTime """ List of all possible error codes that can be returned by the API. Error codes are accompanied by an error message. See Error handling section for more information. """ enum ErrorCode { """ An error occurred before the GraphQL server could attempt to parse given operation. For example, if the client sends a query with wrong `Content-type`, the server would return a `BAD_REQUEST` error. """ BAD_REQUEST """ Unable to process a request because it failed to validate the data provided in the request against the server's schema. This error typically occurs when the client sends a query or mutation that contains data that is not in the correct format or is missing required fields. For example, if the server's schema specifies that a certain field must be an integer, but the client sends a string value for that field, the server would return a `GRAPHQL_VALIDATION_FAILED` error. """ GRAPHQL_VALIDATION_FAILED """ Indicates that the server was unable to process a request because the client is not authorized to perform the requested action. This is typically returned when the client has not provided an authentication token or the token is invalid. """ NOT_AUTHORIZED """ The request is formally valid, but the server can't process it due to internal constraints. For example a password change that doesn't meet the minimum length requirement. """ VALIDATION_FAILED """ The server was unable to find the requested resource. For example, if you request a server `DP-999999`, but there is no such server associated with your account, the server would return a `NOT_FOUND` error. """ NOT_FOUND """ The server encountered an unexpected condition that prevented it from fulfilling the request. This is a general error code that can be caused by a wide range of issues, such as an unhandled exception or a server-side bug. We are monitoring all issues. """ INTERNAL_SERVER_ERROR """ The reverse DNS management API is currently under maintenance. Please try again in 5 minutes. """ REVERSE_DNS_API_NOT_AVAILABLE """ You do not have enough credit (DP Balance) to perform this action. Please top up your account. """ INSUFFICIENT_CREDIT_BALANCE """ The requested resource is out of stock. Please try again later or contact support for more information. """ OUT_OF_STOCK """ You've reached your API provisioning quota. Try again tomorrow or contact support to increase your quota. """ DAILY_PROVISIONING_QUOTA_EXCEEDED } type Invoice { """The unique invoice number.""" invoiceNumber: String! """The associated subscription related to the invoice.""" subscription: Subscription """The billing period covered by the invoice.""" period: Period! """The payment details associated with the invoice.""" payment: Payment """The items included in the invoice.""" invoiceItems: [InvoiceItem!]! """The total amount of the invoice, excluding any applicable taxes.""" subtotal: Float! """The total amount of the invoice, including VAT (Value Added Tax).""" total: Float! """The total VAT (Value Added Tax) amount of the invoice.""" totalVat: Float! """The currency of the invoice.""" currency: Currency! """The date when the invoice was created.""" createdAt: DateTime! """The due date for the invoice payment.""" dueDate: DateTime! """The type of the invoice.""" invoiceType: InvoiceType } """ Represents an active service agreement for one or more resources (such as servers or add-ons) that are billed together on a recurring basis. A subscription groups related items, tracks their billing cycle, and manages renewal, upgrades, or cancellations as a single unit. """ type Subscription { """Unique identifier of the subscription.""" name: String! """The type of subscription. Currently supported: `PREPAID` and `TRIAL`.""" type: SubscriptionType! """ The total cost of the subscription items, excluding any applicable taxes. """ subtotal: Float! """The currency in which the subscription is priced.""" currency: Currency! """ Information about subscription billing cycle. Only available for the subscription of the type `PREPAID`. """ billingCycle: BillingCycle """The date when the subscription was created.""" createdAt: DateTime! """ The individual items included in the subscription. Only contains recurring items. """ subscriptionItems: [SubscriptionItem!]! """Invoices associated with the subscription.""" invoices: [Invoice!]! } """Defines the payment model and lifecycle of a subscription.""" enum SubscriptionType { """A subscription paid in advance for the upcoming service period.""" PREPAID """A subscription billed after the service period has ended.""" POSTPAID """ A temporary trial subscription providing limited access before payment is required. """ TRIAL } """Supported currencies.""" enum Currency { """United States dollar.""" USD """Pound sterling.""" GBP """Euro.""" EUR } """Information about subscription billing cycle.""" type BillingCycle { """ The unit of time for each billing interval — daily, monthly, or yearly. """ unit: BillingIntervalUnit! """ How many units make up one billing interval; combined with `unit`, this defines your billing frequency. """ quantity: Int! """ Specifies the numerical day of the month on which the billing cycle starts for the monthly cycle, or the numerical month of the year in which the billing cycle starts for the yearly cycle. """ start: Int! } """Specifies the time unit for subscription billing intervals.""" enum BillingIntervalUnit { """A billing period that recurs every month.""" MONTH """A billing period that recurs every year.""" YEAR """A billing period that recurs every day.""" DAY } type SubscriptionItem { """A brief description of the subscription item.""" description: String """The price of the subscription item excluding any applicable taxes.""" price: Float! """The currency in which the subscription item is priced.""" currency: Currency! """The type of the subscription item.""" type: SubscriptionItemType! """Additional details about the subscription item.""" subscriptionItemDetail: SubscriptionItemDetail! } """Types of items available for subscription.""" enum SubscriptionItemType { """Regular recurring fee charged for server.""" SERVER """One time or recurring fee charged for IP address.""" IP """Additional fee which is not covered by other types.""" FEE """DDOS protection fee charge.""" DDOS """Recurring price charged for outgoing traffic usage.""" TRAFFIC """Any other subscription item (not charge) not covered by other types.""" OTHER } """Additional details about the subscription item.""" type SubscriptionItemDetail { """The associated server, if applicable.""" server: Server """The associated traffic plan, if applicable.""" trafficPlan: TrafficPlan } type Server { """ Server name is used to uniquely identify each server. Format: `DP-12345` """ name: String! """ Custom alias for your server. Can be set via [setServerAlias]({{Mutations.setServerAlias}}) or in the client panel. """ alias: String hostname: String location: Location! """How long your system has been running in days.""" uptime: Int! powerStatus: PowerStatus! status: ServerStatus! @deprecated(reason: "Use `statusV2` instead.") statusV2: ServerStatusV2! network: Network! hardware: Hardware! system: System! trafficPlan: TrafficPlan! tags: [ServerTag!]! """ Contains information related to the server subscription, including the price of the server. """ billing: Billing! } type Location { """Location name.""" name: String! """Location region.""" region: Region! """Location short name.""" short: String! """Location identifier.""" identifier: LocationIdentifier! } enum Region { """Middle East & Africa.""" MEA """Latin America.""" LA """Asia-Pacific.""" AP """North America.""" NA """Europe.""" EU } """Transliterated machine-readable version of location name.""" enum LocationIdentifier { """Amsterdam, Netherlands, Europe""" AMSTERDAM """Ashburn, United States, North America""" ASHBURN """Athens, Greece, Europe""" ATHENS """Atlanta, United States, North America""" ATLANTA """Auckland, New Zealand, Asia-Pacific""" AUCKLAND """Berlin, Germany, Europe""" BERLIN """Bogotá, Colombia, Latin America""" BOGOTA """Bordeaux, France, Europe""" BORDEAUX """Boston, United States, North America""" BOSTON """Bratislava, Slovakia, Europe""" BRATISLAVA """Brussels, Belgium, Europe""" BRUSSELS """Bucharest, Romania, Europe""" BUCHAREST """Budapest, Hungary, Europe""" BUDAPEST """Buenos Aires, Argentina, Latin America""" BUENOS_AIRES """Calgary, Canada, North America""" CALGARY """Chicago, United States, North America""" CHICAGO """Copenhagen, Denmark, Europe""" COPENHAGEN """Dallas, United States, North America""" DALLAS """Denver, United States, North America""" DENVER """Dublin, Ireland, Europe""" DUBLIN """Frankfurt, Germany, Europe""" FRANKFURT """Fujairah, United Arab Emirates, Middle East & Africa""" FUJAIRAH """Hong Kong, Asia-Pacific""" HONG_KONG """Houston, United States, North America""" HOUSTON """Istanbul, Turkey, Middle East & Africa""" ISTANBUL """Johannesburg, South Africa, Middle East & Africa""" JOHANNESBURG """Kuala Lumpur, Malaysia, Asia-Pacific""" KUALA_LUMPUR """Kyiv, Ukraine, Europe""" KYIV """Lagos, Nigeria, Middle East & Africa""" LAGOS """Lima, Peru, Latin America""" LIMA """Lisbon, Portugal, Europe""" LISBON """London, United Kingdom, Europe""" LONDON """Los Angeles, United States, North America""" LOS_ANGELES """Madrid, Spain, Europe""" MADRID """Manchester, United Kingdom, Europe""" MANCHESTER """Marseille, France, Europe""" MARSEILLE """McAllen, United States, North America""" MCALLEN """Melbourne, Australia, Asia-Pacific""" MELBOURNE """Miami, United States, North America""" MIAMI """Milan, Italy, Europe""" MILAN """Montréal, Canada, North America""" MONTREAL """New York, United States, North America""" NEW_YORK """Oslo, Norway, Europe""" OSLO """Palermo, Italy, Europe""" PALERMO """Paris, France, Europe""" PARIS """Prague, Czechia, Europe""" PRAGUE """Querétaro, Mexico, Latin America""" QUERETARO """San Jose, United States, North America""" SAN_JOSE """Santiago, Chile, Latin America""" SANTIAGO """São Paulo, Brazil, Latin America""" SAO_PAULO """Seattle, United States, North America""" SEATTLE """Seoul, South Korea, Asia-Pacific""" SEOUL """Singapore, Asia-Pacific""" SINGAPORE """Sofia, Bulgaria, Europe""" SOFIA """Stockholm, Sweden, Europe""" STOCKHOLM """Sydney, Australia, Asia-Pacific""" SYDNEY """Tel Aviv, Israel, Middle East & Africa""" TEL_AVIV """Tokyo, Japan, Asia-Pacific""" TOKYO """Toronto, Canada, North America""" TORONTO """Vancouver, Canada, North America""" VANCOUVER """Vienna, Austria, Europe""" VIENNA """Warsaw, Poland, Europe""" WARSAW """Zagreb, Croatia, Europe""" ZAGREB """Zürich, Switzerland, Europe""" ZURICH } """Power status of the device.""" enum PowerStatus { ON OFF UNKNOWN } """ Deprecated in favour of ServerStatusV2.
Information about the server's production status. """ enum ServerStatus { """ Server is being prepared for production. It may include hardware configuration, OS installation, and other tasks. """ PROVISIONING @deprecated(reason: "Use ServerStatusV2.PROVISIONING instead.") """Server is being installed with the OS.""" INSTALLING @deprecated(reason: "Use ServerStatusV2.WAITING instead.") """ Server is configured and available for use. Access details were delivered to the customer. """ IN_PRODUCTION @deprecated(reason: "Use ServerStatusV2.ACTIVE instead.") """ There is a maintenance task in progress such as OS reinstall, hardware replacement or reconfiguration. """ IN_MAINTENANCE @deprecated(reason: "Use ServerStatusV2.MAINTENANCE instead.") """ Server is disconnected from the network. This is usually due to unpaid invoices. """ DISCONNECTED @deprecated(reason: "This status is no longer used.") } """Information about the server's production status.""" enum ServerStatusV2 { """ Server is waiting for initial payment confirmation or other prerequisites before provisioning can proceed. This status typically appears when there are billing-related requirements that need to be fulfilled before the server can be deployed. """ WAITING """ Server is being prepared for production. This includes hardware allocation, operating system installation, and network configuration. During this state, the server is not yet accessible. """ PROVISIONING """ There is a maintenance task in progress such as OS reinstall, hardware replacement, reconfiguration or data center maintenance. """ MAINTENANCE """Server is unreachable by our monitoring.""" UNREACHABLE """ Server is in production and ready for use. Access details were delivered. """ ACTIVE } type Network { """List of IP addresses assigned to the server.""" ipAddresses: [IpAddress!]! """DDoS Shield protection setting.""" ddosShieldLevel: DdosShieldLevel! """IPMI (Intelligent Platform Management Interface) information.""" ipmi: Ipmi! """Whether the BGP session is estabilished for the server.""" hasBgp: Boolean """Overall server uplink capacity in Gbps.""" uplinkCapacity: Int! """ Indicates if the server uses link aggregation (LAG), which combines multiple physical network interfaces into a single logical connection. The aggregated connection appears as a single high-bandwidth link to the network. """ hasLinkAggregation: Boolean! } type IpAddress { """True if this IP address is the primary address for the server.""" isPrimary: Boolean! """ Whether or not the IP address is a BGP prefix. BGP prefixes are used to route traffic between different networks. """ isBgpPrefix: Boolean! """The type of IP address.""" type: IpAddressType! """ The netmask of the IP address. The netmask is used to determine which part of the IP address is the network address and which part is the host address. """ netMask: String """The default gateway for the IP address.""" gateway: String """The network address of the IP address.""" network: String """The broadcast address of the IP address.""" broadcast: String """The IP address itself.""" ip: String! """ The CIDR notation of the IP address. CIDR notation is a more compact way of representing IP addresses and netmasks. """ cidr: String! } """ Currently there are two versions of IP addresses in use on the Internet: IPv4 and IPv6. """ enum IpAddressType { """IPv4 address type.""" IPV4 """IPv6 address type.""" IPV6 } """Level of protection available for the DDoS Shield.""" enum DdosShieldLevel { """ Deployed automatically on our edge routers and detects and filters out DDoS attacks through firewall rules. Efficient against NTP, DNS, Memcached, and other simple amplification attacks. """ VOLUMETRIC """ Deployed on dedicated anti-DDoS hardware in each data center. It intercepts L4 protocol-based attacks such as TCP SYN floods and filters malicious packets using custom mitigation techniques. """ FULL """No DDoS protection.""" OFF } type Ipmi { """IPMI IP address.""" ip: String """IPMI username.""" username: String } type Hardware { """A list of CPUs installed in the server.""" cpus: [Cpu!]! hdds: [Hdd!]! @deprecated(reason: "Use `storage` instead.") """A list of storage devices installed in the server.""" storage: [Storage!]! """A list of RAM modules installed in the server.""" rams: [Ram!]! } type Cpu { count: Int! @deprecated(reason: "The number of CPUs is now determined by the length of the CPU list. This value is always 1.") """The model name of the CPU.""" name: String! """The number of physical cores in the CPU.""" cores: Int! """The number of logical threads that the CPU can execute concurrently.""" threads: Int! } type Hdd { """Number of storage units.""" count: Int! @deprecated(reason: "The number of storage devices is now determined by the length of the storage list. This value is always 1.") storage: Storage! } type Storage { """The storage capacity in GB.""" size: Int! """The type of the storage device (e.g., SSD, HDD).""" type: StorageType! } """Type of the storage device.""" enum StorageType { """ A SSD (Solid State Drive) is a type of storage that uses non-volatile memory to store data. SSDs are faster and more reliable than traditional HDDs, but they are also more expensive. """ SSD @deprecated(reason: "Use `SATA_SSD` instead.") """ A SSD (Solid State Drive) is a type of storage that uses non-volatile memory to store data. SSDs are faster and more reliable than traditional HDDs, but they are also more expensive. """ SATA_SSD """ An HDD (Hard Disk Drive) is a traditional type of storage that uses spinning disks to store data. HDDs are slower and less reliable than SSDs, but they are also less expensive. """ HDD """ An NVMe (Non-Volatile Memory Express) is a type of SSD that uses the PCIe interface to connect to the motherboard, rather than the SATA interface used by most SSDs. This allows for faster data transfer speeds. """ NVME """ A SATADOM (SATA Disk on Module) is a type of SSD that uses the same interface as a traditional HDD, but is much smaller and more durable. It is commonly used in servers that have limited space for storage devices. """ SATADOM """ An eMMC (Embedded MultiMediaCard) is a type of SSD that is integrated into a device. They are smaller and less expensive than other types of SSDs, but are also slower and have less storage capacity. """ EMMC } type Ram { count: Int! @deprecated(reason: "The number of RAMs is now determined by the length of the RAM list. This value is always 1.") """RAM size in GB.""" size: Int! } type System { raid: Raid! os: Os! @deprecated(reason: "Use `operatingSystem` instead.") operatingSystem: OperatingSystem! } """ RAID stands for redundant array of independent disks. It is a way of storing the same data on multiple hard drives to improve performance and increase data availability. """ enum Raid { OTHER NONE CUSTOM """ This type of RAID uses striping, which means that data is split across multiple disks and written in parallel. This can improve performance because multiple disks can be accessed at the same time. However, RAID 0 provides no data redundancy, so if one of the disks fails, all data on the array is lost. """ RAID_0 """ This type of RAID is also known as mirroring. It involves writing the same data to multiple disks, so that if one disk fails, the data can still be accessed from the other disk. This provides improved data availability, but does not improve performance. """ RAID_1 """ This type of RAID uses striping and parity, which is a method of error checking. Data is striped across multiple disks, and a parity block is also written to each disk. This allows the array to continue functioning even if one of the disks fails, because the missing data can be reconstructed using the parity information. However, writing data to a RAID 5 array can be slower than writing to a single disk. """ RAID_5 """ This is similar to RAID 5, but it uses double parity, which provides even greater data protection. It can continue functioning even if two disks fail at the same time. However, this comes at the cost of reduced performance. """ RAID_6 """ This is a combination of RAID 1 and RAID 0. It involves mirroring data across multiple disks, and then striping the mirrored data across even more disks. This provides both improved performance and data availability. However, it requires at least four disks. """ RAID_10 } type Os { """Name of the operating system.""" name: String! } type OperatingSystem { """The unique identifier for the operating system image.""" osImageId: ID! """The name of the operating system.""" name: String! } type TrafficPlan { """The name of the traffic plan.""" name: String! """Specifies the type of the traffic plan.""" type: TrafficPlanType! """Specifies whether the traffic plan is pooled or dedicated.""" scope: TrafficPlanScope! """Specifies the traffic plan’s bandwidth limit in Gbps, if applicable.""" bandwidth: Float } """The type of the traffic plan.""" enum TrafficPlanType { P95 METERED PEAK_UNMETERED PEAK_METERED } """ The scope of the traffic plan, either POOLED (shared) or SERVER (dedicated). """ enum TrafficPlanScope { POOLED SERVER } type ServerTag { key: String! value: String! } type Billing { subscriptionItem: SubscriptionItem! } """Object representing a period of time.""" type Period { """The starting date of the period.""" from: DateTime! """The ending date of the period.""" to: DateTime! } """ Information about subscription billing cycle. Only available for the subscription of the type Prepaid. """ type Payment { """Status of the payment.""" status: PaymentStatus! """ The day on which the payment was made, following the ISO 8601 standard. Null if the payment is not yet made. """ paidOn: DateTime """ Provides information about the payment method associated with the payment. Null if the payment is not yet made. """ method: PaymentMethod } """description""" enum PaymentStatus { """Payment has been made and received.""" PAID """Payment has not been made or received.""" NOT_PAID """Payment is past due date.""" PAST_DUE } """The payment method.""" enum PaymentMethod { """Bank transfer.""" BANK_TRANSFER """Card payment.""" CARD """Payment with DP balance.""" DP_BALANCE """PayPal payment.""" PAYPAL """Cancelled via Credit note.""" CREDIT_NOTE """Payment via BitPay.""" BITPAY } type InvoiceItem { """The description of the item on the invoice.""" description: String! """Item quantity.""" quantity: Float! """Item unit price.""" unitPrice: Float! """ The total price for the item on the invoice, excluding any taxes or fees. """ amount: Float! """The VAT (Value Added Tax) percentage applied to the item.""" vatPercent: Float! """The currency in which the invoice item is listed.""" currency: Currency! """The type of the invoice item.""" type: InvoiceItemType } """Types of items which can appear on invoice.""" enum InvoiceItemType { """Regular recurring fee charged for server.""" SERVER """One time or recurring fee charged for IP address.""" IP """Additional fee which is not covered by other types.""" FEE """Discount applied to subscription.""" DISCOUNT """DDOS protection fee charge.""" DDOS """Charge for BGP service setup.""" BGP """Credit added to subscription to be used in further charges.""" CREDIT """Recurring price charged for outgoing traffic usage.""" TRAFFIC """Extra fee, if the traffic usage exceeds the used plan.""" TRAFFIC_OVERAGE """Any other subscription item (not charge) not covered by other types.""" OTHER } """Type of the invoice, the type can change based on further actions.""" enum InvoiceType { """ A preliminary payment request, typically issued for services to be rendered in the upcoming billing period. Draft invoices are not intended for tax reporting or compliance purposes. """ DRAFT """ An invoice provided to the customer after a service has been provided, used for tax reporting and compliance purposes. Draft invoices are typically converted to tax invoices upon receiving payment for the services rendered. """ TAX } input InvoiceInput { """Unique alpha numeric code identifying invoice.""" invoiceNumber: String! } type PaginatedInvoiceResponse { """Total number of items in the full result set.""" entriesTotalCount: Int! """Total number of pages which constitute the full result set.""" pageCount: Int! """Current page index which was returned, the first index is 0.""" currentPageIndex: Int! """Number of items per page.""" pageSize: Int! """Index of the next page, when none is available `null`.""" nextPageIndex: Int """ Index of the previous page, first index is 0, if currently on first page, the value will be `null`. """ previousPageIndex: Int """Indicates whether this is the last page.""" isLastPage: Boolean! """Indicates whether this is the first page.""" isFirstPage: Boolean! """Resulting paginated items.""" entries: [Invoice!]! } input PaginatedInvoicesInput { """First page has pageIndex value `0`.""" pageIndex: Int = 0 """The maximum number of results per page is `50`.""" pageSize: Int! = 50 filter: InvoicesInput } input InvoicesInput { """Array of invoice numbers for filtering.""" invoiceNumber_in: [String!] """Array of supported currencies for filtering.""" currency_in: [Currency!] """Array of payment statuses for filtering.""" paymentStatus_in: [PaymentStatus!] } type ServerLinksConfigurationTask { """ Task ID of the server links configuration task. This ID is used to identify the task in the system. """ taskId: ID! status: ServerLinksConfigurationStatus! } """Server links configuration task status.""" enum ServerLinksConfigurationStatus { """ Task is pending and has not started yet. This status is set when the task is created. """ PENDING """ Task is currently in progress. This status is set when the task is started and is being executed. """ IN_PROGRESS """ Task has been completed successfully. This status is set when the task is completed without any errors. """ SUCCESS """ Task has failed. This status is set when the task encounters an error and cannot be completed. Please try again later or contact support for more information. """ FAILED } input ServerLinksConfigurationTaskInput { taskId: ID! } type PaginatedPostInstallScriptResponse { """Total number of items in the full result set.""" entriesTotalCount: Int! """Total number of pages which constitute the full result set.""" pageCount: Int! """Current page index which was returned, the first index is 0.""" currentPageIndex: Int! """Number of items per page.""" pageSize: Int! """Index of the next page, when none is available `null`.""" nextPageIndex: Int """ Index of the previous page, first index is 0, if currently on first page, the value will be `null`. """ previousPageIndex: Int """Indicates whether this is the last page.""" isLastPage: Boolean! """Indicates whether this is the first page.""" isFirstPage: Boolean! """Resulting paginated items.""" entries: [PostInstallScript!]! } type PostInstallScript { """Post-install script ID.""" id: ID! """Post-install script name.""" name: String! """Creation timestamp.""" createdAt: DateTime! """Last update timestamp.""" updatedAt: DateTime! """Script content as plain text.""" content: String! """ When enabled, the script runs automatically on installations that come through an account manager or support. """ isAutoSelected: Boolean! } input PaginatedPostInstallScriptsInput { """First page has pageIndex value `0`.""" pageIndex: Int = 0 """The maximum number of results per page is `50`.""" pageSize: Int! = 50 filter: PostInstallScriptsInput } input PostInstallScriptsInput { """Array of post-install script names for filtering.""" name_in: [String!] } type ProvisioningConfiguration { """The unique identifier for the server configuration.""" configurationId: ID! """The amount of memory allocated in GB.""" memory: Int! """List of storage devices with details about capacity and type.""" storage: [Storage!]! """List of CPUs with their specifications.""" cpus: [Cpu!]! """ A benchmark score from the [CPU Benchmark](https://www.cpubenchmark.net) database that reflects the multicore performance of this specific CPU configuration (including socket count). Multi-socket configurations are benchmarked separately from single-socket systems. Higher values indicate stronger performance. The score may not exist for very new or less common CPU configurations. """ cpuBenchmarkScore: Int """List of GPUs if present.""" gpus: [Gpu!]! """Network port capacity.""" uplink: Uplink! """Per-month hardware cost for the server configuration.""" monthlyHwPrice: Money! """Per-day hardware cost for the server configuration.""" dailyHwPrice: Money! """Location information of the server.""" location: Location! """ Number of servers with this configuration that are immediately available for provisioning. """ stockCount: Int! } type Gpu { """The model name of the GPU.""" name: String! """The memory capacity (vram) of the GPU in GB.""" memory: Int! } type Uplink { """ A list of network ports that comprise the uplink, each defining its capacity. """ ports: [Port!]! } type Port { """The capacity of the port in Gbps.""" capacity: Float! } type Money { """The monetary amount represented as a decimal number.""" amount: Decimal! """The currency code (e.g., USD, EUR) for the monetary amount.""" currency: Currency! } """Scalar type for high-precision decimal numbers.""" scalar Decimal input ProvisioningConfigurationsInput { """Filter by CPU name.""" cpuName_in: [String!] """Filter by the number of CPUs.""" cpuCount: IntRange """Filter by the number of CPU cores.""" cpuCores: IntRange """Filter by the number of CPU threads.""" cpuThreads: IntRange """ Filter servers based on their multithread CPU benchmark score for the specific CPU configuration (including socket count). (Integer Range) *Note: Scores may not be available for all configurations. Source for the data: [cpubenchmark.net](https://www.cpubenchmark.net)* """ cpuBenchmarkScore: IntRange """Filter by the amount of RAM in GB.""" memory: IntRange """Filter by the number of GPUs.""" gpuCount: IntRange """Filter by the GPU memory (VRAM) in GB.""" gpuMemory: IntRange """ Filter by storage requirements. An array of storage requirements, where each requirement must be met by the server configuration. """ storageRequirements: [ProvisioningStorageRequirementInput!] """Filter by the total uplink capacity in Gbps.""" uplinkTotalCapacity: IntRange """Filter by the monthly hardware price amount.""" monthlyHwPriceAmount: DecimalRange """Filter by the daily hardware price amount.""" dailyHwPriceAmount: DecimalRange """Filter by location identifier.""" locationIdentifier_in: [LocationIdentifier!] """Filter by region.""" region_in: [Region!] """Filter by the number of servers in stock.""" stockCount: IntRange } input IntRange { """The inclusive minimum value of the integer range.""" min: Int """The inclusive maximum value of the integer range.""" max: Int } input ProvisioningStorageRequirementInput { """Storage type.""" type_in: [StorageInputType!] """Total storage size in GB.""" totalSize: IntRange """Number of storage devices.""" count: IntRange } enum StorageInputType { HDD SATA_SSD NVME } input DecimalRange { """The inclusive minimum value of the decimal range.""" min: Decimal """The inclusive maximum value of the decimal range.""" max: Decimal } type ReverseDnsRecordResponse { """IP address of the reverse DNS (PTR) record""" ip: IpAddress! """ Hostname of the reverse DNS (PTR) record, or `null`, when there is no such record. """ hostname: String } input ReverseDnsRecordInput { """ IP address for the reverse DNS (PTR) record. Currently only IPv4 addresses are supported. """ ip: String! } input ServerInput { """Unique server identifier. Format: `DP-12345`.""" name: String """ Make sure all server aliases are unique, otherwise you will get an error. """ alias: String """One of the IP adresses of the server""" ip: String """The IPMI IP address""" ipmiIp: String """The key-value tag pair which is unique for the server""" tag: ServerTagInput } input ServerTagInput { """ The key of the tag. Can only contain alphanumeric characters, hyphens, underscores and periods. Maximal length is 100 characters. """ key: String! """The value of the tag. Maximum length of 150 characters.""" value: String! } type PaginatedServerResponse { """Total number of items in the full result set.""" entriesTotalCount: Int! """Total number of pages which constitute the full result set.""" pageCount: Int! """Current page index which was returned, the first index is 0.""" currentPageIndex: Int! """Number of items per page.""" pageSize: Int! """Index of the next page, when none is available `null`.""" nextPageIndex: Int """ Index of the previous page, first index is 0, if currently on first page, the value will be `null`. """ previousPageIndex: Int """Indicates whether this is the last page.""" isLastPage: Boolean! """Indicates whether this is the first page.""" isFirstPage: Boolean! """Resulting paginated items.""" entries: [Server!]! } input PaginatedServersInput { """First page has pageIndex value `0`.""" pageIndex: Int = 0 """The maximum number of results per page is `50`.""" pageSize: Int! = 50 filter: ServersInput } input ServersInput { """The name of the server.""" name_in: [String!] """The alias of the server.""" alias_in: [String!] """The location of the server.""" location_in: [String!] """The region of the server.""" region_in: [String!] """The status of the server.""" serverStatus_in: [ServerStatus!] @deprecated(reason: "Use serverStatusV2_in instead.") """The status of the server.""" serverStatusV2_in: [ServerStatusV2!] """The power status of the server.""" powerStatus_in: [PowerStatus!] """One of the IP adresses is assigned to the server.""" ip_in: [String!] """ One of the IP adresses is assigned to the server, has to be adressed to IPMI interface. """ ipmiIp_in: [String!] """ Server has at least one of the tags included here (must match both key and value). """ tags_in: [ServerTagInput!] """ Server has all of the tags included here (must match both key and value). """ tags_each: [ServerTagInput!] @deprecated(reason: "Use tag_value condition instead, it's equivalent.") """Server has tags listed in this filter.""" tag_key: [String!] """ Server has all of the tags included here (must match both key and value). """ tag_value: [ServerTagInput!] } input SubscriptionInput { """Unique alpha numeric code identifying subscription.""" name: String! } type PaginatedSubscriptionResponse { """Total number of items in the full result set.""" entriesTotalCount: Int! """Total number of pages which constitute the full result set.""" pageCount: Int! """Current page index which was returned, the first index is 0.""" currentPageIndex: Int! """Number of items per page.""" pageSize: Int! """Index of the next page, when none is available `null`.""" nextPageIndex: Int """ Index of the previous page, first index is 0, if currently on first page, the value will be `null`. """ previousPageIndex: Int """Indicates whether this is the last page.""" isLastPage: Boolean! """Indicates whether this is the first page.""" isFirstPage: Boolean! """Resulting paginated items.""" entries: [Subscription!]! } input PaginatedSubscriptionsInput { """First page has pageIndex value `0`.""" pageIndex: Int = 0 """The maximum number of results per page is `50`.""" pageSize: Int! = 50 filter: SubscriptionsInput } input SubscriptionsInput { """Array of subscription names for filtering.""" name_in: [String!] """Array of supported currencies for filtering.""" currency_in: [Currency!] """Array of subscription types for filtering.""" type_in: [SubscriptionType!] } type SupportRequest { """The integer ID of the support request.""" id: Int! """The subject of the support request.""" subject: String! """The status of the support request.""" status: SupportRequestStatus! """The date the support request was created.""" createdAt: DateTime! """The date the support request was last updated.""" updatedAt: DateTime! """Number of replies in the request.""" numberOfReplies: Int! """The date of the last reply in the request.""" lastReplyAt: DateTime! """The name of the support ticket author.""" fullName: String! """The email of the support request author.""" email: String! """Category of the support request.""" category: SupportRequestCategory """The messages contained in the support request.""" posts: [Post!] } """Status of the support request.""" enum SupportRequestStatus { """The support request is open.""" OPEN """The support request is closed and no longer being resolved.""" CLOSED } """Category of the support request.""" enum SupportRequestCategory { """ The support request is a new request which has not been assigned category yet. """ NEW """The support request is a sales inquiry.""" SALES_INQUIRY """The support request is a network issue.""" NETWORK_ISSUE """The support request is a technical issue.""" TECHNICAL_ISSUE """The support request is an abuse report.""" ABUSE_REPORT """The support request is a customer care issue.""" CUSTOMER_CARE } type Post { """The integer ID of the post.""" id: Int! """The text contents of the post.""" contents: String! """The date the post was created.""" createdAt: DateTime! """The email of the post author.""" email: String! """The name of the post author.""" fullName: String! """The author group of the post author, staff or user.""" postBy: SupportRequestPostBy! } """Author group of the post author, staff or user.""" enum SupportRequestPostBy { """The post was created by a user.""" USER """The post was created by a DataPacket staff member.""" STAFF } input SupportRequestInput { """The integer ID of the support request.""" id: Int! } input PaginatedSupportRequestsInput { """First page has pageIndex value `0`.""" pageIndex: Int = 0 """The maximum number of results per page is `50`.""" pageSize: Int! = 50 filter: SupportRequestsInput } input SupportRequestsInput { """Status of the support request.""" status: SupportRequestStatus """Category of the support request.""" categories_in: [SupportRequestCategory!] } type Traffic { """ Aggregated traffic statistics for selected servers over the specified time period. """ aggregated: AggregatedTraffic! """ Traffic statistics for each selected server over the specified time period. """ perServer: [PerServerTraffic!]! } type AggregatedTraffic { """Traffic statistics for inbound traffic.""" statisticsIn: TrafficStatistics """Traffic statistics for outbound traffic.""" statisticsOut: TrafficStatistics } type TrafficStatistics { """Average traffic in bits per second.""" average: Float! """Last recorded traffic value in bits per second.""" last: Float! """95th percentile traffic value in bits per second.""" p95: Float! """Sum of all traffic values in bits.""" sum: Float! """Maximum traffic value (peak) in bits.""" maximum: Float! } type PerServerTraffic { """The server for which these traffic statistics apply.""" server: Server! """Traffic statistics for this server over the specified time period.""" traffic: AggregatedTraffic! } input TrafficInput { """The date from which the traffic should be displayed.""" from: DateTime! """ The date to which the traffic should be displayed, must be date after the `to` value. """ to: DateTime! filter: TrafficServersInput } input TrafficServersInput { name_in: [String!] alias_in: [String!] location_in: [String!] region_in: [String!] ip_in: [String!] ipmiIp_in: [String!] } type Mutation { """ Sets the default server-scoped traffic plan used by the `provisionServer` mutation when provisioning a server. You can also configure this anytime under “Provisioning Settings” in your Client Panel. """ setDefaultTrafficPlan(input: SetDefaultTrafficPlanInput!): Boolean! """ Configure server links. This operation is asynchronous and a taskId is returned, which can be used to check if the operation has finished. The operation usually takes a few minutes to complete. """ configureServerLinks(input: ConfigureServerLinksInput!): ServerLinksConfigurationTask! """ Creates a new post-install script. Post-install scripts must be plain text (no binaries), up to 10 MB in size, and have a 30-minute execution timeout. For more information, see the [Provisioning settings](https://app.datapacket.com/settings/provisioning#post-install-scripts) section of the Client Panel. """ createPostInstallScript(input: CreatePostInstallScriptInput!): PostInstallScript! """Updates an existing post-install script.""" updatePostInstallScript(input: UpdatePostInstallScriptInput!): PostInstallScript! """Deletes the specified post-install script.""" deletePostInstallScript(input: DeletePostInstallScriptInput!): Boolean! """ Provision a new server instance using the specified configuration and parameters. You must provide a `configurationId` (obtained from the [`provisioningConfigurations`](#query-provisioningConfigurations) query), `billingPeriod` (`MONTHLY` or `DAILY`), `osImageId` (from the [`operatingSystems`](#query-operatingSystems) query), and `sshKeyNames`. The server will initially be in `PROVISIONING` or `WAITING` status, and will transition to `ACTIVE` once ready. The response contains the resulting server instance with details like IP addresses and network configuration. For more information [see the Provision the server docs](#3-provision-the-server). """ provisionServer(input: ProvisionServerInput!): ProvisionServerResponse! """ Set a reverse DNS (PTR) record for a given IP. Set hostname to `null` to delete the record. """ setReverseDnsRecord(input: SetReverseDnsRecordInput!): SetReverseDnsRecordResponse! """This mutation allows you to change IPMI password of a server.""" changeServerIpmiPassword(input: ChangeIpmiPasswordInput!): ChangeServerIpmiPasswordResponse! """ Perform an IPMI server power action such as power on, power off or reboot. Please note that because IPMI may take a while to respond, this API call is asynchronous. As a result, we cannot guarantee that the requested action will be performed successfully. """ performServerPowerAction(input: PerformServerPowerActionInput!): PerformServerPowerActionResponse! """Set custom alias for your server.""" setServerAlias(input: SetServerAliasInput!): SetServerAliasResponse! """Sets a boot device for server via IPMI.""" setServerBootDevice(input: SetServerBootDeviceInput!): SetServerBootDeviceResponse! """Set primary IP to your server.""" setServerPrimaryIp(input: SetServerPrimaryIpInput!): SetServerPrimaryIpResponse! """ This mutation sets tags for the server. Tags not provided will be deleted. """ setServerTags(input: SetServerTagsInput!): Boolean! """ Update or set a single tag for the server. If the provided `value` argument is omitted or null, the tag will be deleted. """ setServerTag(input: SetServerTagInput!): Boolean! """Create a new support request.""" createSupportRequest(input: CreateSupportRequestInput!): Boolean! """Create reply to an existing support request.""" supportRequestReply(input: SupportRequestReplyInput!): Boolean! } input SetDefaultTrafficPlanInput { """Specifies the type of the default traffic plan.""" type: DefaultTrafficPlanType! """ Specifies the default traffic plan’s bandwidth limit in GB. It must be 0.1, 0.2, ..., 1 or an integer between 2 and 40. """ bandwidth: Float! } enum DefaultTrafficPlanType { P95 PEAK_UNMETERED } input ConfigureServerLinksInput { server: ServerInput! """ Enable or disable link aggregation. Link aggregation combines multiple physical network connections into a single logical connection (also knowns as LAG). """ linkAggregation: Boolean! } input CreatePostInstallScriptInput { """Post-install script name.""" name: String! """Script content as plain text.""" content: String! """ When enabled, the script runs automatically on installations that come through an account manager or support. """ isAutoSelected: Boolean } input UpdatePostInstallScriptInput { """Post-install script ID.""" id: ID! """Post-install script name.""" name: String """Script content as plain text.""" content: String """ When enabled, the script runs automatically on installations that come through an account manager or support. """ isAutoSelected: Boolean } input DeletePostInstallScriptInput { """Post-install script ID.""" id: ID! } type ProvisionServerResponse { """Server instance details after successful provisioning.""" server: Server! } input ProvisionServerInput { """Server configuration id.""" configurationId: ID! """Specifies the billing method for the provisioned server.""" billingPeriod: ProvisioningBillingPeriod! """The identifier of the image to be used for provisioning.""" osImageId: ID! """ List of SSH keys to be injected into the server during provisioning. Specify the titles of the SSH keys. You can find them in the [Security settings](https://app.datapacket.com/settings/security) of the client panel. """ sshKeyNames: [String!] """ Disable link aggregation. Link aggregation combines multiple physical network connections into a single logical connection (also knowns as LAG). """ disableLinkAggregation: Boolean """ You can use a post-install script to customize your server installation to fit your requirements—like installing extra packages, joining your cluster, or changing default access credentials. This script will execute at the end of the server installation, right before we hand the server over to you. We'll include the status of the script execution in the email with your access details. If the script fails, the email will specify the exit code. If you don't explicitly specify a script name, no script will be run. Post-install scripts have a 10-minute execution timeout and only plain text files are allowed. You can manage your post-install scripts in the [Provisioning settings](https://app.datapacket.com/settings/provisioning#post-install-scripts) section of the Client panel. """ postInstallScriptName: String } """ See [Billing period](#billing-period) in the Server Provisioning section for more information. """ enum ProvisioningBillingPeriod { """ Daily billing with post-paid charges and per-TB traffic pricing. Requires $100 minimum balance. See [Daily billing](#daily-billing---daily) for more information. """ DAILY """Monthly billing with payment before service period (pre-paid)""" MONTHLY } type SetReverseDnsRecordResponse { """IP address of the reverse DNS (PTR) record""" ip: IpAddress! } input SetReverseDnsRecordInput { """ IP address for the reverse DNS (PTR) record. Currently only IPv4 addresses are supported. """ ip: String! """ Hostname for the PTR record or `null` to delete the current record. Must end with a dot. """ hostname: String } type ChangeServerIpmiPasswordResponse { server: Server! } """ It is not a security best practice to limit the maximum length of a password, but there are different limits set by individual manufacturers. Therefore, we have to set the maximum length to 16 characters. """ input ChangeIpmiPasswordInput { server: ServerInput! """Minimum 10, maximum 16 characters long, at least one number.""" password: String! } type PerformServerPowerActionResponse { server: Server! } input PerformServerPowerActionInput { action: PowerAction! server: ServerInput! } """ IPMI power actions that can be performed on a server. For detailed information, see the IPMI specification. """ enum PowerAction { """Power on the server.""" ON """ Power off the server. WARNING: This command does not initiate a clean shutdown of the operating system prior to powering down the system """ OFF """This command will perform a hard reset.""" RESET """Initiate a soft-shutdown of OS via ACPI.""" SOFT """ Power cycle involves cutting power to the system for at least one second and then restoring it. """ CYCLE } type SetServerAliasResponse { server: Server! } input SetServerAliasInput { """ Choose unique value so you can use the alias in `ServerInput`. Set to `null` to remove alias. """ alias: String server: ServerInput! } type SetServerBootDeviceResponse { server: Server! } input SetServerBootDeviceInput { bootDevice: BootDevice! server: ServerInput! } """Type of the server boot device.""" enum BootDevice { """Set boot from BIOS default boot device.""" DISK """Set boot from PXE.""" PXE """Set boot from BIOS default boot device, request Safe Mode.""" SAFE_MODE """Set boot from diagnostic partition.""" DIAGNOSTIC """Set boot into BIOS setup.""" BIOS } type SetServerPrimaryIpResponse { server: Server! } input SetServerPrimaryIpInput { ip: String! server: ServerInput! } input SetServerTagsInput { """The server to set the tags for.""" server: ServerInput! """ The tags to set. A server is allowed to have maximum of 10 tags. Note that both key and value are trimmed of whitespace at the start and end. """ tags: [ServerTagInput!]! } input SetServerTagInput { """The server to set the tag for.""" server: ServerInput! """ The key of the tag. Can only contain alphanumeric characters, hyphens, underscores and periods. The maximum length is 100 characters. """ key: String! """The value of the tag. Maximum length of 150 characters.""" value: String } input CreateSupportRequestInput { message: String! """Subject of the support request.""" subject: SupportRequestSubject! """Priority requested for of the support request.""" priority: SupportRequestPriority! """Unique server identifier. Format: `DP-12345`.""" servers: [String!] """ Network issues only - Location of the source for the faulty network requests. """ sources: [String!] """ Network issues only - Location of the destination for the faulty network requests. """ destinations: [String!] } """Subject of the support request.""" enum SupportRequestSubject { """The support request is a hardware issue such as faulty hardware.""" HARDWARE_ISSUE """The support request is a hardware issue different from HARDWARE_ISSUE.""" HARDWARE_OTHER """The support request is a network routing issue.""" NETWORK_ROUTING """The support request is a network BGP issue.""" NETWORK_BGP """The support request is a network additional IPs issue.""" NETWORK_ADDITIONAL_IPS """ The support request is a network issue different from NETWORK_ROUTING, NETWORK_BGP, NETWORK_ADDITIONAL_IPS. """ NETWORK_OTHER """The support request is a sales server order issue.""" SALES_SERVER_ORDER """The support request is an inquiry about pricing.""" SALES_PRICING """ The support request is a sales bandwidth plan issue, such as upgrade or downgrade of server bandwidth plan. """ SALES_BANDWIDTH_PLAN """ The support request is a sales issue different from SALES_SERVER_ORDER, SALES_PRICING, SALES_BANDWIDTH_PLAN. """ SALES_OTHER """The support request is a cancellation issue.""" SALES_CANCELLATION """ The support request is a sales server upgrade issue, such as RAM or Storage upgrade. """ SALES_SERVER_UPGRADE } """Priority requested for of the support request.""" enum SupportRequestPriority { """ The support request is to be answered by the following day (within 12-24 hours). """ NORMAL """The support request is to be answered within 2-6 hours.""" HIGH """The support request is to be answered as soon as possible.""" URGENT } input SupportRequestReplyInput { """The integer ID of the support request to add message to.""" id: Int! """The text of the message to add to the post.""" message: String! }