basePath: /api/v2
definitions:
  Cluster:
    properties:
      createdAt:
        description: The time when this cluster was registered with Signadot.
        type: string
      name:
        description: The name of the cluster.
        type: string
      operator:
        $ref: '#/definitions/cluster.Operator'
    type: object
  ClusterToken:
    properties:
      createdAt:
        description: The time when this cluster was registered with Signadot.
        type: string
      id:
        description: The ID of this token
        type: string
      maskedValue:
        description: A Masked token value.
        type: string
      status:
        $ref: '#/definitions/ClusterTokenStatus'
      token:
        description: The token value.
        type: string
    type: object
  ClusterTokenStatus:
    properties:
      lastConnectedAt:
        description: The last time at which this token was used to connect.
        type: string
      lastConnectedIp:
        description: The last IP address from which this token connected.
        type: string
    type: object
  EmptyResponse:
    type: object
  ErrorResponse:
    properties:
      error:
        type: string
      requestId:
        type: string
    type: object
  ResourceInfo:
    properties:
      cluster:
        description: Cluster that the resource is created in
        type: string
      name:
        description: Name of the created resource
        type: string
      sandbox:
        description: Name of the sandbox containing the resource
        type: string
    type: object
  ResourcePlugin:
    properties:
      createdAt:
        description: The time at which the resource plugin was created
        type: string
      name:
        description: Name of the resource plugin
        type: string
      spec:
        $ref: '#/definitions/resourceplugin.Spec'
      status:
        $ref: '#/definitions/resourceplugin.Status'
      updatedAt:
        description: The time at which the resource plugin was last updated
        type: string
    type: object
  RouteGroup:
    properties:
      createdAt:
        type: string
      endpoints:
        items:
          $ref: '#/definitions/routeGroup.Endpoint'
        type: array
        x-omitempty: true
      name:
        type: string
      routingKey:
        type: string
      spec:
        $ref: '#/definitions/routeGroup.Spec'
      status:
        $ref: '#/definitions/routeGroup.Status'
      updatedAt:
        type: string
    type: object
  Sandbox:
    properties:
      createdAt:
        type: string
      endpoints:
        items:
          $ref: '#/definitions/sandbox.Endpoint'
        type: array
      name:
        description: Human-readable name of this sandbox
        type: string
      routingKey:
        type: string
      spec:
        $ref: '#/definitions/sandbox.Spec'
      status:
        $ref: '#/definitions/sandbox.Readiness'
      updatedAt:
        type: string
    type: object
  cluster.Operator:
    properties:
      version:
        description: |-
          The operator version of the cluster.  This may be
          nil if the cluster has not yet connected to Signadot.
        type: string
    type: object
  resourceplugin.Runner:
    properties:
      image:
        description: Image for the runner instance
        type: string
      namespace:
        description: Namespace to create this runner instance in
        type: string
      podTemplateOverlay:
        description: Pod template overlay
        type: string
    type: object
  resourceplugin.Spec:
    properties:
      create:
        description: Create refers to the `create` steps for spinning up the resource
        items:
          $ref: '#/definitions/resourceplugin.Step'
        type: array
      delete:
        description: Delete refers to the `delete` steps for spinning up the resource
        items:
          $ref: '#/definitions/resourceplugin.Step'
        type: array
      description:
        description: Description for the resource
        type: string
      runner:
        $ref: '#/definitions/resourceplugin.Runner'
    type: object
  resourceplugin.Status:
    properties:
      resources:
        description: Resources created using the resource plugin
        items:
          $ref: '#/definitions/ResourceInfo'
        type: array
    type: object
  resourceplugin.Step:
    properties:
      inputs:
        description: Inputs for the step
        items:
          $ref: '#/definitions/resourceplugin.StepInput'
        type: array
      name:
        description: Name for the step
        type: string
      outputs:
        description: Outputs for the step
        items:
          $ref: '#/definitions/resourceplugin.StepOut'
        type: array
      script:
        description: Script to execute in the step
        type: string
    type: object
  resourceplugin.StepInput:
    properties:
      as:
        $ref: '#/definitions/resourceplugin.StepInputTo'
      name:
        description: Name for the input
        type: string
      type:
        description: Type of input
        type: string
      valueFromSandbox:
        description: >-
          ValueFromSandbox defines whether or not to source value from the
          sandbox spec
        type: boolean
      valueFromStep:
        $ref: '#/definitions/resourceplugin.ValueFromStep'
    type: object
  resourceplugin.StepInputTo:
    properties:
      env:
        description: |-
          Inject the input as an env variable with name Env inside the
          main container
        type: string
      path:
        description: Expose the input as a file at Path inside the main container
        type: string
    type: object
  resourceplugin.StepOut:
    properties:
      description:
        description: Description for the output
        type: string
      name:
        description: Name of the output variable
        type: string
      type:
        description: Type of output
        type: string
      valueFromPath:
        description: Path within the main container from where the output will be read
        type: string
    type: object
  resourceplugin.ValueFromStep:
    properties:
      name:
        description: Name of the step
        type: string
      output:
        description: Name of the variable from the step
        type: string
    type: object
  routeGroup.Endpoint:
    properties:
      name:
        type: string
      target:
        type: string
      url:
        type: string
    type: object
  routeGroup.Match:
    properties:
      all:
        description: >-
          When All is non-nil, T matches a set of labels if and only if every
          element of All matches them.

          Only one field may be non-nil.
        items:
          $ref: '#/definitions/routeGroup.Match'
        type: array
        x-omitempty: true
      any:
        description: >-
          When Any is non-nil, T matches a set of labels if and only if some
          element of Any matches them.

          Only one field may be non-nil.
        items:
          $ref: '#/definitions/routeGroup.Match'
        type: array
        x-omitempty: true
      label:
        $ref: '#/definitions/routeGroup.MatchLabel'
    type: object
  routeGroup.MatchLabel:
    properties:
      key:
        description: |-
          Key is an exact match on a label key, glob
          characters are just considered normal characters.
        type: string
      value:
        description: |-
          Value is a glob match for the value of a
          sandbox label.  See https://pkg.go.dev/path/filepath#Match
          for the file glob syntax.
        type: string
    type: object
  routeGroup.Spec:
    properties:
      cluster:
        description: Cluster gives the cluster to which the route group applies.
        type: string
      description:
        description: Description provides a short description of the route group.
        type: string
      endpoints:
        description: |-
          Endpoints define endpoints which target different in-cluster
          services.
        items:
          $ref: '#/definitions/routeGroup.SpecEndpoint'
        type: array
      match:
        $ref: '#/definitions/routeGroup.Match'
      ttl:
        $ref: '#/definitions/routeGroup.TTL'
    type: object
  routeGroup.SpecEndpoint:
    properties:
      name:
        type: string
      target:
        type: string
    type: object
  routeGroup.Status:
    properties:
      matchedSandboxes:
        description: |-
          MatchedSandboxes gives the list of sandboxes whose labels
          were matched by the 'match' object in the spec.
        items:
          type: string
        type: array
      message:
        description: |-
          Message is a human readable explanation of why
          the sandbox is healthy or not.
        type: string
      ready:
        description: |-
          Ready indicates whether the sandbox is ready,
          meaning that it can be used for testing.
        type: boolean
      reason:
        description: |-
          Reason is a machine readable explanation of why
          the sandbox is healthy or not.
        type: string
      scheduledDeleteTime:
        description: >-
          ScheduledDeleteTime returns the formatted and computed ttl based on
          the Duration

          and OffsetFrom
        type: string
    type: object
  routeGroup.TTL:
    properties:
      duration:
        description: |-
          Duration represents the duration until routegroup's end of life.
          It should be an unsigned integer not exceeding 32 bits followed by
          a units character, which can be one of the following.
            - 'm' for minutes
            - 'h' for hours
            - 'd' for days
            - 'w' for weeks
        type: string
      offsetFrom:
        description: >-
          OffsetFrom indicates what the Duration is relative to.  It

          may be the empty string, "noMatchedSandboxes", "createdAt" or
          "updatedAt". The empty string

          defaults to meaning "noMatchedSandboxes".
        type: string
    type: object
  sandbox.CustomPatch:
    properties:
      type:
        type: string
      value:
        type: string
    type: object
  sandbox.Customizations:
    properties:
      env:
        description: Env var modifications that will be applied to the forked workload
        items:
          $ref: '#/definitions/sandbox.EnvVar'
        type: array
      images:
        description: One or more docker images that will be applied to the forked workload
        items:
          $ref: '#/definitions/sandbox.Image'
        type: array
      patch:
        $ref: '#/definitions/sandbox.CustomPatch'
    type: object
  sandbox.DefaultRouteGroup:
    properties:
      endpoints:
        items:
          $ref: '#/definitions/routeGroup.SpecEndpoint'
        type: array
    type: object
  sandbox.Endpoint:
    properties:
      baselineUrl:
        type: string
      host:
        type: string
      name:
        type: string
      port:
        type: integer
      protocol:
        type: string
      routeType:
        type: string
      target:
        type: string
      url:
        type: string
    type: object
  sandbox.EnvValueFrom:
    properties:
      fork:
        $ref: '#/definitions/sandbox.EnvValueFromFork'
      resource:
        $ref: '#/definitions/sandbox.EnvValueFromResource'
    type: object
  sandbox.EnvValueFromFork:
    properties:
      expression:
        type: string
      forkOf:
        $ref: '#/definitions/sandbox.ForkOf'
    type: object
  sandbox.EnvValueFromResource:
    properties:
      name:
        type: string
      outputKey:
        type: string
    type: object
  sandbox.EnvVar:
    properties:
      container:
        description: name of container to which it applies
        type: string
      name:
        description: environmental variable name
        type: string
      operation:
        description: upsert or delete
        type: string
      value:
        description: environmental variable value
        type: string
      valueFrom:
        $ref: '#/definitions/sandbox.EnvValueFrom'
    type: object
  sandbox.Fork:
    properties:
      customizations:
        $ref: '#/definitions/sandbox.Customizations'
      endpoints:
        description: Deprecated. Use defaultRouteGroup.Endpoints instead.
        items:
          $ref: '#/definitions/sandbox.ForkEndpoint'
        type: array
        x-omitempty: 'true'
      forkOf:
        $ref: '#/definitions/sandbox.ForkOf'
    type: object
  sandbox.ForkEndpoint:
    properties:
      name:
        description: Name of the endpoint
        type: string
      port:
        description: Port it will map to on the forked workload
        type: integer
      protocol:
        description: Protocol that this endpoint uses
        type: string
    type: object
  sandbox.ForkOf:
    properties:
      kind:
        description: >-
          Kind of entity that we want to route to. One of (Service or Deployment
          or Rollout).
        example: Deployment
        type: string
      name:
        description: Name of the entity within the Kubernetes cluster.
        example: my-frontend
        type: string
      namespace:
        description: Namespace within which the entity lives in the Kubernetes cluster.
        example: default
        type: string
    required:
      - kind
      - name
      - namespace
    type: object
  sandbox.HostEndpoint:
    properties:
      host:
        description: Hostname that this endpoint points to
        type: string
      name:
        description: Name of the endpoint
        type: string
      port:
        description: Port it will map to on the specified host
        type: integer
      protocol:
        description: Protocol that this endpoint uses
        type: string
    type: object
  sandbox.Image:
    properties:
      container:
        description: >-
          Container is the container this image must apply to in the forked
          workload
        type: string
      image:
        description: Name of the image (e.g. gcr.io/my-image/repo:my-tag)
        type: string
    type: object
  sandbox.LocalWorkloadStatus:
    properties:
      name:
        type: string
      tunnel:
        properties:
          health:
            properties:
              connected:
                type: boolean
              lastCheckTime:
                type: string
              lastConnectedTime:
                type: string
            type: object
        type: object
    type: object
  sandbox.Readiness:
    properties:
      local:
        items:
          $ref: '#/definitions/sandbox.LocalWorkloadStatus'
        type: array
      message:
        description: |-
          Message is a human readable explanation of why
          the sandbox is healthy or not.
        type: string
      ready:
        description: |-
          Ready indicates whether the sandbox is ready,
          meaning that it can be used for testing.
        type: boolean
      reason:
        description: |-
          Reason is a machine readable explanation of why
          the sandbox is healthy or not.
        type: string
    type: object
  sandbox.Resource:
    properties:
      name:
        type: string
      params:
        additionalProperties:
          type: string
        type: object
      plugin:
        type: string
    type: object
  sandbox.Spec:
    properties:
      cluster:
        description: Cluster within which this sandbox should be created
        type: string
      defaultRouteGroup:
        $ref: '#/definitions/sandbox.DefaultRouteGroup'
      description:
        description: Description of the purpose of this sandbox
        type: string
      endpoints:
        description: Deprecated. Use defaultRouteGroup.Endpoints instead.
        items:
          $ref: '#/definitions/sandbox.HostEndpoint'
        type: array
        x-omitempty: 'true'
      forks:
        description: Forks is the specification of each forked entity
        items:
          $ref: '#/definitions/sandbox.Fork'
        type: array
      labels:
        additionalProperties:
          type: string
        description: >-
          Labels are used to specify metadata associated with the sandbox as
          key-value pairs.
        type: object
      resources:
        description: Resources specifies each required resource to spin up the sandbox
        items:
          $ref: '#/definitions/sandbox.Resource'
        type: array
      ttl:
        $ref: '#/definitions/sandbox.TTL'
    required:
      - cluster
      - forks
    type: object
  sandbox.TTL:
    properties:
      duration:
        description: |-
          Duration represents the duration until sandbox end of life.
          It should be an unsigned integer not exceeding 32 bits followed by
          a units character, which can be one of the following.
            - 'm' for minutes
            - 'h' for hours
            - 'd' for days
            - 'w' for weeks
        type: string
      offsetFrom:
        description: |-
          OffsetFrom indicates what the Duration is relative to.  It
          may be the empty string, "createdAt" or "updatedAt".  The empty string
          defaults to meaning "createdAt".
        type: string
    type: object
host: api.signadot.com
info:
  contact: {}
  description: API for Signadot Sandboxes
  title: Signadot API
  version: '2.0'
paths:
  /orgs/{orgName}/clusters/:
    get:
      consumes:
        - application/json
      description: List clusters.
      operationId: list-clusters
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            items:
              $ref: '#/definitions/Cluster'
            type: array
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: List clusters
      tags:
        - Cluster
  /orgs/{orgName}/clusters/{clusterName}/:
    delete:
      consumes:
        - application/json
      description: Remove a Kubernetes cluster from Signadot.
      operationId: remove-cluster
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Cluster Name
          in: path
          name: clusterName
          required: true
          type: string
          x-example: my-cluster
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/EmptyResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: Remove a cluster
      tags:
        - Cluster
    get:
      consumes:
        - application/json
      description: Get a cluster.
      operationId: get-cluster
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Cluster Name
          in: path
          name: clusterName
          required: true
          type: string
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Cluster'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: Get a cluster
      tags:
        - Cluster
    put:
      consumes:
        - application/json
      description: Add a Kubernetes cluster to Signadot.
      operationId: add-cluster
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Cluster Name
          in: path
          name: clusterName
          required: true
          type: string
          x-example: my-cluster
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Cluster'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: Add a cluster
      tags:
        - Cluster
  /orgs/{orgName}/clusters/{clusterName}/tokens:
    post:
      consumes:
        - application/json
      description: Create a new token for connecting a cluster.
      operationId: create-cluster-token
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Cluster Name
          in: path
          name: clusterName
          required: true
          type: string
          x-example: my-new-cluster
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/ClusterToken'
      security:
        - ApiKeyAuth: []
      summary: Create cluster token
      tags:
        - Cluster
  /orgs/{orgName}/clusters/{clusterName}/tokens/:
    get:
      consumes:
        - application/json
      description: List the cluster tokens associated with a cluster.
      operationId: list-cluster-tokens
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Cluster Name
          in: path
          name: clusterName
          required: true
          type: string
          x-example: my-new-cluster
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            items:
              $ref: '#/definitions/ClusterToken'
            type: array
      security:
        - ApiKeyAuth: []
      summary: List cluster tokens
      tags:
        - Cluster
  /orgs/{orgName}/clusters/{clusterName}/tokens/{tokenId}:
    delete:
      consumes:
        - application/json
      description: Delete a cluster token associated with a cluster.
      operationId: delete-cluster-token
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Cluster Name
          in: path
          name: clusterName
          required: true
          type: string
          x-example: my-new-cluster
        - description: Token Id
          in: path
          name: tokenId
          required: true
          type: string
          x-example: kq6mtksk7mn5
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/EmptyResponse'
      security:
        - ApiKeyAuth: []
      summary: Delete cluster token
      tags:
        - Cluster
    get:
      consumes:
        - application/json
      description: Get a cluster token associated with a cluster.
      operationId: get-cluster-token
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Cluster Name
          in: path
          name: clusterName
          required: true
          type: string
          x-example: my-new-cluster
        - description: Token Id
          in: path
          name: tokenId
          required: true
          type: string
          x-example: kq6mtksk7mn5
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/ClusterToken'
      security:
        - ApiKeyAuth: []
      summary: Get a cluster token
      tags:
        - Cluster
  /orgs/{orgName}/resource-plugins:
    get:
      consumes:
        - application/json
      description: List all resource plugins under the specified Signadot org.
      operationId: list-resource-plugins
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            items:
              $ref: '#/definitions/ResourcePlugin'
            type: array
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: List resource plugins
      tags:
        - ResourcePlugins
  /orgs/{orgName}/resource-plugins/{pluginName}:
    delete:
      consumes:
        - application/json
      description: Delete the resource plugin by name
      operationId: delete-resource-plugin
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Resource plugin name
          in: path
          name: pluginName
          required: true
          type: string
          x-example: mariadb-plugin
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/EmptyResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: Delete a resource plugin
      tags:
        - ResourcePlugins
    get:
      consumes:
        - application/json
      description: Get the specified resource plugin by name
      operationId: get-resource-plugin
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Resource plugin name
          in: path
          name: pluginName
          required: true
          type: string
          x-example: mariadb-plugin
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/ResourcePlugin'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: Get the requested resource plugin
      tags:
        - ResourcePlugins
    put:
      consumes:
        - application/json
      description: Apply a resource plugin. Updates are not supported at this time.
      operationId: apply-resource-plugin
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Resource plugin name
          in: path
          name: pluginName
          required: true
          type: string
          x-example: mariadb-plugin
        - description: Request to create or update a resource plugin
          in: body
          name: data
          required: true
          schema:
            $ref: '#/definitions/ResourcePlugin'
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/EmptyResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: Apply a resource plugin
      tags:
        - ResourcePlugins
  /orgs/{orgName}/routegroups:
    get:
      consumes:
        - application/json
      description: List all routegroups under the specified Signadot org.
      operationId: list-routegroups
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            items:
              $ref: '#/definitions/RouteGroup'
            type: array
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: List routegroups
      tags:
        - RouteGroups
  /orgs/{orgName}/routegroups/{routegroupName}:
    delete:
      consumes:
        - application/json
      description: Delete a given routegroup.
      operationId: delete-routegroup
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: RouteGroup Name
          in: path
          name: routegroupName
          required: true
          type: string
          x-example: my-routegroup
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/EmptyResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: Delete a routegroup
      tags:
        - RouteGroups
    get:
      consumes:
        - application/json
      description: Fetch the details about a given routegroup.
      operationId: get-routegroup
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: RouteGroup Name
          in: path
          name: routegroupName
          required: true
          type: string
          x-example: my-routegroup
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/RouteGroup'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: Get a routegroup
      tags:
        - RouteGroups
    put:
      consumes:
        - application/json
      description: Creates or updates a routegroup with the provided parameters.
      operationId: apply-routegroup
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: RouteGroup Name
          in: path
          name: routegroupName
          required: true
          type: string
          x-example: my-routegroup
        - description: Request to create or update routegroup
          in: body
          name: data
          required: true
          schema:
            $ref: '#/definitions/RouteGroup'
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/RouteGroup'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: Create or update a routegroup
      tags:
        - RouteGroups
  /orgs/{orgName}/sandboxes:
    get:
      consumes:
        - application/json
      description: List all sandboxes under the specified Signadot org.
      operationId: list-sandboxes
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            items:
              $ref: '#/definitions/Sandbox'
            type: array
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: List sandboxes
      tags:
        - Sandboxes
  /orgs/{orgName}/sandboxes/{sandboxName}:
    delete:
      consumes:
        - application/json
      description: Delete a given sandbox.
      operationId: delete-sandbox
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Sandbox Name
          in: path
          name: sandboxName
          required: true
          type: string
          x-example: my-sandbox
        - description: force
          in: query
          name: force
          type: boolean
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/EmptyResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: Delete a sandbox
      tags:
        - Sandboxes
    get:
      consumes:
        - application/json
      description: Fetch the details about a given sandbox.
      operationId: get-sandbox
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Sandbox Name
          in: path
          name: sandboxName
          required: true
          type: string
          x-example: my-sandbox
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Sandbox'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: Get a sandbox
      tags:
        - Sandboxes
    put:
      consumes:
        - application/json
      description: Creates or updates a sandbox with the provided parameters.
      operationId: apply-sandbox
      parameters:
        - description: Signadot Org Name
          in: path
          name: orgName
          required: true
          type: string
          x-example: my-company
        - description: Sandbox Name
          in: path
          name: sandboxName
          required: true
          type: string
          x-example: my-sandbox
        - description: Request to create sandbox
          in: body
          name: data
          required: true
          schema:
            $ref: '#/definitions/Sandbox'
      produces:
        - application/json
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/Sandbox'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/ErrorResponse'
        '502':
          description: Bad Gateway
          schema:
            $ref: '#/definitions/ErrorResponse'
      security:
        - ApiKeyAuth: []
      summary: Create or update a sandbox
      tags:
        - Sandboxes
securityDefinitions:
  ApiKeyAuth:
    in: header
    name: signadot-api-key
    type: apiKey
swagger: '2.0'
