swagger: "2.0"
schemes:
  - http
host: api.ss.solarvps.com
basePath: /
info:
  contact:
    email: support@solarvps.com
  description: This is the Solar VPS Public API. You can find more at http://www.solarvps.com
  title: Solar VPS
  version: 1.0.0
  x-logo:
    url: https://solarvps.com/wp-content/themes/solarvps/images/logo-footer@2x.png
  x-origin:
    - format: swagger
      url: http://api.ss.solarvps.com/api-docs
      version: "1.2"
  x-providerName: solarvps.com
produces:
  - application/json
securityDefinitions:
  apiKey:
    in: query
    name: api_key
    type: apiKey
tags:
  - description: Operations about DNS Records
    name: contacts
  - description: Operations about DNS Records
    name: dns
  - description: Operations about DNS Domains
    name: domains
  - description: Operations about API Keys
    name: key
  - description: Operations about pods
    name: pods
  - description: Operations about SolarRay Monitoring
    name: solarray
  - description: Operations about Support / Billing / Sales Tickets
    name: tickets
paths:
  /contacts:
    get:
      description: Shows all contacts under the client account.
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: View all contacts under your account
      tags:
        - contacts
  "/dns/{domain}":
    get:
      description: Shows all your records for a specific domain. You can try example.com below.
      parameters:
        - description: Domain name you want to get records for
          in: path
          name: domain
          required: true
          type: string
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: View all your records for a given domain
      tags:
        - dns
  "/dns/{domain}/add":
    post:
      description: "You can try example.com below. Types allowed are: A CNAME NS TXT MX SRV SPF"
      parameters:
        - description: Domain you want to add records for
          in: path
          name: domain
          required: true
          type: string
        - description: Fully qualified DNS name
          in: query
          name: name
          required: true
          type: string
        - description: Type of DNS record
          in: query
          name: type
          required: true
          type: string
        - description: Content for DNS record
          in: query
          name: content
          required: true
          type: string
        - description: Time To Live for DNS record
          in: query
          name: ttl
          required: true
          type: string
        - description: Priority of DNS record
          in: query
          name: prio
          required: true
          type: string
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: Add dns record for given domain
      tags:
        - dns
  "/dns/{domain}/delete":
    post:
      description: Shows all your records for a specific domain. You can try example.com below.
      parameters:
        - description: Domain name you want to get records for
          in: path
          name: domain
          required: true
          type: string
        - description: Id of the DNS Record
          in: query
          name: id
          required: true
          type: string
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: Delete dns record for a given domain
      tags:
        - dns
  "/dns/{domain}/update":
    post:
      description: You can try example.com below.
      parameters:
        - description: Domain name to add record under
          in: path
          name: domain
          required: true
          type: string
        - description: Id of DNS record
          in: query
          name: id
          required: true
          type: string
        - description: Fully qualified name for the DNS record
          in: query
          name: name
          required: false
          type: string
        - description: Type for DNS record
          in: query
          name: type
          required: false
          type: string
        - description: Content for the DNS Record
          in: query
          name: content
          required: false
          type: string
        - description: Time To Live for DNS record
          in: query
          name: ttl
          required: false
          type: string
        - description: Priority of the DNS record
          in: query
          name: prio
          required: false
          type: string
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: Update dns record for a given domain
      tags:
        - dns
  /domains:
    get:
      description: Shows all your domains
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: View all your domains managed by SolarVPS Distributed DNS
      tags:
        - domains
  /domains/add:
    post:
      description: Adds domain to SolarVPS Distributed DNS
      parameters:
        - description: Domain to add to SolarVPS Distributed DNS
          in: query
          name: domain
          required: true
          type: string
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: Add domain to be managed by SolarVPS Distributed DNS
      tags:
        - domains
  /domains/delete:
    post:
      description: Deletes domain from SolarVPS Distributed DNS
      parameters:
        - description: Domain to delete from SolarVPS Distributed DNS
          in: query
          name: domain
          required: true
          type: string
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: Delete domain from SolarVPS Distributed DNS
      tags:
        - domains
  /key/generate:
    get:
      description: API Key is regenerated if it already exists
      parameters:
        - description: Email address used to login to SolarSystem
          in: query
          name: username
          required: true
          type: string
        - description: Password used to login to SolarSystem
          in: query
          name: password
          required: true
          type: string
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: Generate API Key
      tags:
        - key
  /key/get:
    get:
      description: Gets the API Key for user
      parameters:
        - description: Email address used to login to SolarSystem
          in: query
          name: username
          required: true
          type: string
        - description: Password used to login to SolarSystem
          in: query
          name: password
          required: true
          type: string
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: Get API Key
      tags:
        - key
  /pods:
    get:
      description: Shows all your pods
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: View all your pods
      tags:
        - pods
  "/pods/{podId}":
    get:
      description: Shows details of a specific pod. Enter 1 below to see an example
      parameters:
        - description: Id of the pod you want to perform actions on
          in: path
          name: podId
          required: true
          type: number
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: View information on a specific pod
      tags:
        - pods
  "/pods/{podId}/ping":
    get:
      description: Returns the ping response from your server.
      parameters:
        - description: Id of the pod you want to ping check
          in: path
          name: podId
          required: true
          type: number
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: Ping your specified pod
      tags:
        - pods
  "/pods/{podId}/{action}":
    get:
      description: Allowed actions are reboot, shutdown, boot
      parameters:
        - description: Id of the pod you want to perform actions on
          in: path
          name: podId
          required: true
          type: number
        - description: Action to perform on selected pod
          in: path
          name: action
          required: true
          type: string
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: Perform action on a specific pod
      tags:
        - pods
  /solarray:
    get:
      description: Shows all your monitors
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: View all your monitors
      tags:
        - solarray
  /solarray/critical:
    get:
      description: Shows all your critical notifications
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: View all your critical notifications
      tags:
        - solarray
  /tickets:
    get:
      description: Shows all your tickets
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: View all your tickets
      tags:
        - tickets
  "/tickets/{department}/add":
    post:
      description: Available departments are support, billing, sales
      parameters:
        - description: Department you want to open a ticket with
          in: path
          name: department
          required: true
          type: string
        - description: Subject of the ticket you are opening
          in: query
          name: subject
          required: true
          type: string
        - description: Message reply being sent
          in: query
          name: contents
          required: true
          type: string
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: Open ticket with desired department
      tags:
        - tickets
  "/tickets/{ticketId}":
    get:
      description: Shows all information of a specific ticketId
      parameters:
        - description: TicketId you want to see
          in: path
          name: ticketId
          required: true
          type: number
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: View details on a specific ticket
      tags:
        - tickets
  "/tickets/{ticketid}/update":
    post:
      parameters:
        - description: TicketId of the ticket you want to post an update to
          in: path
          name: ticketid
          required: true
          type: number
        - description: Message reply being sent
          in: query
          name: contents
          required: true
          type: string
      responses:
        "200":
          description: No response was specified
      security:
        - apiKey: []
      summary: Post a reply to a ticket
      tags:
        - tickets
