swagger: "2.0"
schemes:
  - https
host: ci.appveyor.com
basePath: /api
info:
  contact:
    email: team@appveyor.com
    name: AppVeyor Team
    url: https://www.appveyor.com/about/
  description: |
    AppVeyor is a hosted continuous integration service which runs on Microsoft
    Windows.  The AppVeyor REST API provides a RESTful way to interact with the
    AppVeyor service.  This includes managing projects, builds, deployments,
    and the teams that build them.

    Additional help and discussion of the AppVeyor REST API is available at
    http://help.appveyor.com/discussions

    This Swagger definition is an **unofficial** description of the AppVeyor
    REST API maintained at https://github.com/kevinoid/appveyor-swagger
    Please report any issues or suggestions for this Swagger definition at
    https://github.com/kevinoid/appveyor-swagger/issues/new

    #### API Conventions

    Fields which are missing from update operations (`PUT` requests) are
    typically reset to their default values.  So although most fields are not
    technically required, they should usually be specified in practice.
  license:
    name: AppVeyor End User License Agreement (EULA)
    url: https://www.appveyor.com/eula/
  termsOfService: https://www.appveyor.com/terms-of-service/
  title: AppVeyor REST API
  version: 1.0.0
  x-apisguru-categories:
    - developer_tools
  x-logo:
    url: https://www.appveyor.com/assets/img/appveyor-logo-256.png
  x-origin:
    - format: swagger
      url: https://raw.githubusercontent.com/kevinoid/appveyor-swagger/master/swagger.yaml
      version: "2.0"
  x-providerName: appveyor.com
  x-unofficialSpec: true
externalDocs:
  description: AppVeyor REST API Documentation
  url: https://www.appveyor.com/docs/api/
consumes:
  - application/json
produces:
  - application/json
  - application/xml
securityDefinitions:
  apiToken:
    description: |-
      API token can be acquired from https://ci.appveyor.com/api-keys
      This value must be passed to the server in the `Authorization` header as `"Bearer <token>"`.  Since [bearer token authentication support is not explicitly supported in OpenAPI 2.0](https://github.com/OAI/OpenAPI-Specification/issues/583), client code will vary.  Clients created with [swagger-codegen](https://github.com/swagger-api/swagger-codegen) should set `apiKeyPrefix` to `"Bearer"` and set `apiKey` to the token.  Other clients may need to set `apiKey` to the string `"Bearer <token>"`.
      Note that this should be [fixed in OpenAPI 3.0](https://github.com/OAI/OpenAPI-Specification/pull/807)), whenever that becomes available and supported.
      #### User-Level API Keys
      To use a user-level API key (prefixed with "v2."), `basePath` must be changed to `/api/account/{accountName}` where `{accountName}` is the name of the account for which requests will be made.
    in: header
    name: Authorization
    type: apiKey
security:
  - apiToken: []
parameters:
  accountName:
    description: |-
      AppVeyor account name on which to operate.
      Accounts for which a user has access are listed on the [Security page of
      the user profile](https://ci.appveyor.com/security) (when logged in).
      The user account is also the `accountName` property of `UserAccount`.
    in: path
    minLength: 1
    name: accountName
    required: true
    type: string
  all:
    default: false
    description: |-
      Include not only `successful`, but also jobs with `failed`, and
      `cancelled` status.
    in: query
    name: all
    type: boolean
  artifactFileName:
    description: |-
      File name (or path) of a build artifact file.
      Corresponds to the `fileName` property of `ArtifactModel`.
      URL-encoding of slashes in parameter values is optional.
    in: path
    minLength: 1
    name: artifactFileName
    required: true
    type: string
  badgeRepoProvider:
    description: Repository provider supported for badges
    enum:
      - bitBucket
      - gitHub
    in: path
    name: badgeRepoProvider
    required: true
    type: string
  branch:
    description: Repository Branch
    in: query
    minLength: 1
    name: branch
    type: string
  buildBranch:
    description: Build Branch
    in: path
    name: buildBranch
    required: true
    type: string
  buildVersion:
    description: Build Version (`version` property of `Build`)
    in: path
    name: buildVersion
    required: true
    type: string
  deploymentEnvironmentId:
    description: |
      Deployment Environment ID (`deploymentEnvironmentId` property of `DeploymentEnvironment`)
    in: path
    minimum: 0
    name: deploymentEnvironmentId
    required: true
    type: integer
  deploymentId:
    description: Deployment ID (`deploymentId` property of `Deployment`)
    in: path
    minimum: 0
    name: deploymentId
    required: true
    type: integer
  failingText:
    description: Text to show in badge when build is failing.
    in: query
    minLength: 1
    name: failingText
    type: string
  job:
    description: Name of the build job.
    in: query
    name: job
    type: string
  jobId:
    description: Build ID (`jobId` property of `BuildJob`)
    in: path
    name: jobId
    required: true
    type: string
  passingText:
    description: Text to show in badge when build is passing.
    in: query
    minLength: 1
    name: passingText
    type: string
  pendingText:
    description: Text to show in badge when build is pending.
    in: query
    minLength: 1
    name: pendingText
    type: string
  pr:
    description: |
      Include PR builds in the search results?
      `true` - take artifact from PR builds only;
      `false` - do not look for artifact in PR builds;
      default/unspecified - look for artifact in both PR an non-PR builds.
    in: query
    name: pr
    type: boolean
  projectSlug:
    description: Project Slug
    in: path
    name: projectSlug
    required: true
    type: string
  recordsNumber:
    description: Number of results to include in the response. getProjectDeployments is documented to have a maximum of 20. It currently returns 500 Internal Server Error for recordsNumber <= 5. In the past it has returned 500 Internal Server Error for many different values which did not match the value used by the ci.appveyor.com web interface at the time.  As of 2018-09-08, the value used by the web interface is 10.
    in: query
    minimum: 0
    name: recordsNumber
    required: true
    type: integer
  repoAccountName:
    description: Account name with repository provider
    in: path
    minLength: 1
    name: repoAccountName
    required: true
    type: string
  repoSlug:
    description: Slug (URL component) of repository.
    in: path
    minLength: 1
    name: repoSlug
    required: true
    type: string
  retina:
    default: false
    description: Return a larger image suitable for retina displays?  Exclusive with `svg`.
    in: query
    name: retina
    type: boolean
  roleId:
    description: Role ID
    in: path
    minimum: 0
    name: roleId
    required: true
    type: integer
  startBuildId:
    description: Maximum `buildId` to include in the results (exclusive).
    in: query
    minimum: 0
    name: startBuildId
    type: integer
  statusBadgeId:
    description: ID of the status badge (`statusBadgeId` from `ProjectWithConfiguration`).
    in: path
    minLength: 1
    name: statusBadgeId
    required: true
    type: string
  svg:
    default: false
    description: Return an SVG image instead of PNG?  Exclusive with `retina`.
    in: query
    name: svg
    type: boolean
  tag:
    description: A git (or other VCS) tag
    in: query
    minLength: 1
    name: tag
    type: string
  userId:
    description: User ID
    in: path
    minimum: 0
    name: userId
    required: true
    type: integer
  userInvitationId:
    description: User Invitation ID
    in: path
    minLength: 1
    name: userInvitationId
    required: true
    type: string
responses:
  Error:
    description: Error
    schema:
      $ref: "#/definitions/Error"
tags:
  - externalDocs:
      url: https://www.appveyor.com/docs/api/team/
    name: Collaborator
  - externalDocs:
      url: https://www.appveyor.com/docs/api/team/
    name: Role
  - externalDocs:
      url: https://www.appveyor.com/docs/api/team/
    name: User
  - externalDocs:
      url: https://www.appveyor.com/docs/api/projects-builds/
    name: Build
  - externalDocs:
      url: https://www.appveyor.com/docs/api/projects-builds/
    name: Project
  - externalDocs:
      url: https://www.appveyor.com/docs/api/environments-deployments/
    name: Deployment
  - externalDocs:
      url: https://www.appveyor.com/docs/api/environments-deployments/
    name: Environment
paths:
  /account/encrypt:
    post:
      operationId: encryptValue
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/EncryptRequest"
      produces:
        - text/plain
      responses:
        "200":
          description: Success
          examples:
            text/plain: wsnoY4v1v1Uofj0xf8E6FA==
          schema:
            type: string
        default:
          $ref: "#/responses/Error"
      summary: Encrypt a value for use in StoredValue.
      tags:
        - Project
  "/buildjobs/{jobId}/artifacts":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/samples/download-artifacts-advanced-ps/
      operationId: getBuildArtifacts
      responses:
        "200":
          description: Success
          examples:
            application/json:
              - fileName: README.md
                name: README.md
                size: 3600
                type: File
              - fileName: out/example.Release.x64.zip
                name: out\example.zip
                size: 15600
                type: Zip
          schema:
            items:
              $ref: "#/definitions/ArtifactModel"
            type: array
        default:
          $ref: "#/responses/Error"
      security: []
      summary: Get build artifacts
      tags:
        - Build
    parameters:
      - $ref: "#/parameters/jobId"
  "/buildjobs/{jobId}/artifacts/{artifactFileName}":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/samples/download-artifacts-advanced-ps/
      operationId: getBuildArtifact
      produces:
        - application/octet-stream
      responses:
        "200":
          description: Success
          schema:
            type: file
        default:
          $ref: "#/responses/Error"
      security: []
      summary: Download build artifact
      tags:
        - Build
    parameters:
      - $ref: "#/parameters/jobId"
      - $ref: "#/parameters/artifactFileName"
  "/buildjobs/{jobId}/log":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#download-build-log
      operationId: getBuildLog
      produces:
        - application/octet-stream
      responses:
        "200":
          description: |-
            Success.
            Note:  Response content is plain text sent with Content-Type
            application/octet-stream.
          schema:
            type: file
        default:
          $ref: "#/responses/Error"
      security: []
      summary: Download build log
      tags:
        - Build
    parameters:
      - $ref: "#/parameters/jobId"
  /builds:
    post:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#start-build-of-branch-most-recent-commit
      operationId: startBuild
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/BuildStartRequest"
      responses:
        "200":
          description: Success
          examples:
            application/json:
              authorName: Feodor Fitsner
              authorUsername: FeodorFitsner
              branch: master
              buildId: 136709
              buildNumber: 7
              commitId: c2892a70d60c96c1b65a7c665ab806b7731fea8a
              committed: 2014-08-15T22:05:54+00:00
              committerName: Feodor Fitsner
              committerUsername: FeodorFitsner
              created: 2014-08-16T00:40:38.1703914+00:00
              jobs: []
              message: replaced with command [skip ci]
              messages: []
              status: queued
              version: 1.0.7
          schema:
            $ref: "#/definitions/Build"
        default:
          $ref: "#/responses/Error"
      summary: Start build of branch most recent commit
      tags:
        - Build
    put:
      description: If `reRunIncomplete` is `true` and all jobs in the referenced build completed successfully, a 500 Internal Server Error is returned with the message "No failed or cancelled jobs in build with ID {buildId}".
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#re-run-build
      operationId: reRunBuild
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/ReRunBuildRequest"
      responses:
        "200":
          description: Success
          examples:
            application/json:
              authorName: Feodor Fitsner
              authorUsername: FeodorFitsner
              branch: master
              buildId: 136709
              buildNumber: 7
              commitId: c2892a70d60c96c1b65a7c665ab806b7731fea8a
              committed: 2014-08-15T22:05:54+00:00
              committerName: Feodor Fitsner
              committerUsername: FeodorFitsner
              created: 2014-08-16T00:40:38.1703914+00:00
              jobs: []
              message: replaced with command [skip ci]
              messages: []
              status: queued
              version: 1.0.7
          schema:
            $ref: "#/definitions/Build"
        default:
          $ref: "#/responses/Error"
      summary: Re-run build
      tags:
        - Build
  "/builds/{accountName}/{projectSlug}/{buildVersion}":
    delete:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#cancel-build
      operationId: cancelBuild
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Cancel build
      tags:
        - Build
    parameters:
      - $ref: "#/parameters/accountName"
      - $ref: "#/parameters/projectSlug"
      - $ref: "#/parameters/buildVersion"
  /collaborators:
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#get-collaborators
      operationId: getCollaborators
      responses:
        "200":
          description: Success
          examples:
            application/json:
              - accountId: 2
                accountName: FeodorFitsner
                created: 2014-02-03T20:29:26.6807307+00:00
                email: john@smith.com
                failedBuildNotification: all
                fullName: John Smith
                isCollaborator: true
                isOwner: false
                notifyWhenBuildStatusChangedOnly: true
                roleId: 3040
                roleName: My Role
                successfulBuildNotification: all
                updated: 2014-03-07T04:26:09.1051534+00:00
                userId: 2018
          schema:
            items:
              $ref: "#/definitions/UserAccount"
            type: array
        default:
          $ref: "#/responses/Error"
      summary: Get collaborators
      tags:
        - Collaborator
    put:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#update-collaborator
      operationId: updateCollaborator
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/CollaboratorUpdate"
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Update collaborator
      tags:
        - Collaborator
  "/collaborators/{userId}":
    delete:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#delete-collaborator
      operationId: deleteCollaborator
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Delete collaborator
      tags:
        - Collaborator
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#get-collaborator
      operationId: getCollaborator
      responses:
        "200":
          description: Success
          examples:
            application/json:
              roles:
                - created: 2013-09-26T19:23:39.3615105+00:00
                  isSystem: true
                  name: Administrator
                  roleId: 4
                - created: 2013-09-26T19:23:39.3645117+00:00
                  isSystem: true
                  name: User
                  roleId: 5
                - created: 2014-03-18T20:12:08.4749886+00:00
                  isSystem: false
                  name: My Role
                  roleId: 3040
                  updated: 2014-03-18T20:16:06.8803375+00:00
              user:
                accountId: 2
                accountName: FeodorFitsner
                created: 2014-02-03T20:29:26.6807307+00:00
                email: john@smith.com
                failedBuildNotification: all
                fullName: John Smith
                isCollaborator: true
                isOwner: false
                notifyWhenBuildStatusChangedOnly: true
                roleId: 3040
                roleName: My Role
                successfulBuildNotification: all
                updated: 2014-03-07T04:26:09.1051534+00:00
                userId: 2018
          schema:
            $ref: "#/definitions/UserAccountRolesResults"
        default:
          $ref: "#/responses/Error"
      summary: Get collaborator
      tags:
        - Collaborator
    parameters:
      - $ref: "#/parameters/userId"
  /deployments:
    post:
      externalDocs:
        url: https://www.appveyor.com/docs/api/environments-deployments/#start-deployment
      operationId: startDeployment
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/DeploymentStartRequest"
      responses:
        "200":
          description: Success
          examples:
            application/json:
              build:
                authorName: Feodor Fitsner
                authorUsername: FeodorFitsner
                branch: master
                buildId: 132746
                buildNumber: 38
                commitId: c397ba5d17dd17b994375405f560e4922207da1e
                committed: 2014-08-12T22:56:00+00:00
                committerName: Feodor Fitsner
                committerUsername: FeodorFitsner
                created: 2014-08-12T22:56:09.9208493+00:00
                finished: 2014-08-12T22:58:05.7595508+00:00
                jobs: []
                message: Removed Start-Website
                messages: []
                started: 2014-08-12T22:56:25.8575967+00:00
                status: success
                updated: 2014-08-12T22:58:05.7595508+00:00
                version: 1.0.38
              created: 2014-08-12T23:06:07.9009315+00:00
              deploymentId: 19475
              environment:
                created: 2014-04-01T17:56:41.30982+00:00
                deploymentEnvironmentId: 27
                name: agent test
                provider: Agent
                updated: 2014-08-12T22:35:51.9723883+00:00
              finished: 2014-08-12T23:06:25.0502019+00:00
              jobs:
                - created: 2014-08-12T23:06:07.9009315+00:00
                  finished: 2014-08-12T23:06:24.3361102+00:00
                  jobId: jnpbcc77s4w278e4
                  messagesCount: 0
                  name: Deployment
                  started: 2014-08-12T23:06:10.8776088+00:00
                  status: success
                  updated: 2014-08-12T23:06:24.9390847+00:00
              started: 2014-08-12T23:06:10.8776088+00:00
              status: success
              updated: 2014-08-12T23:06:25.0502019+00:00
          schema:
            $ref: "#/definitions/Deployment"
        default:
          $ref: "#/responses/Error"
      summary: Start deployment
      tags:
        - Deployment
  /deployments/stop:
    put:
      externalDocs:
        url: https://www.appveyor.com/docs/api/environments-deployments/#cancel-deployment
      operationId: cancelDeployment
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/DeploymentCancellation"
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Cancel deployment
      tags:
        - Deployment
  "/deployments/{deploymentId}":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/environments-deployments/#get-deployment
      operationId: getDeployment
      responses:
        "200":
          description: Success
          examples:
            application/json:
              deployment:
                build:
                  authorName: Feodor Fitsner
                  authorUsername: FeodorFitsner
                  branch: master
                  buildId: 132746
                  buildNumber: 38
                  commitId: c397ba5d17dd17b994375405f560e4922207da1e
                  committed: 2014-08-12T22:56:00+00:00
                  committerName: Feodor Fitsner
                  committerUsername: FeodorFitsner
                  created: 2014-08-12T22:56:09.9208493+00:00
                  finished: 2014-08-12T22:58:05.7595508+00:00
                  jobs: []
                  message: Removed Start-Website
                  messages: []
                  started: 2014-08-12T22:56:25.8575967+00:00
                  status: success
                  updated: 2014-08-12T22:58:05.7595508+00:00
                  version: 1.0.38
                created: 2014-08-12T23:06:07.9009315+00:00
                deploymentId: 19475
                environment:
                  created: 2014-04-01T17:56:41.30982+00:00
                  deploymentEnvironmentId: 27
                  name: agent test
                  provider: Agent
                  updated: 2014-08-12T22:35:51.9723883+00:00
                finished: 2014-08-12T23:06:25.0502019+00:00
                jobs:
                  - created: 2014-08-12T23:06:07.9009315+00:00
                    finished: 2014-08-12T23:06:24.3361102+00:00
                    jobId: jnpbcc77s4w278e4
                    messagesCount: 0
                    name: Deployment
                    started: 2014-08-12T23:06:10.8776088+00:00
                    status: success
                    updated: 2014-08-12T23:06:24.9390847+00:00
                started: 2014-08-12T23:06:10.8776088+00:00
                status: success
                updated: 2014-08-12T23:06:25.0502019+00:00
              project:
                accountId: 2
                accountName: appvyr
                builds: []
                created: 2014-05-08T18:38:57.9163293+00:00
                isPrivate: false
                name: simple-web
                projectId: 22321
                repositoryName: AppVeyor/simple-web
                repositoryScm: git
                repositoryType: gitHub
                securityDescriptor: {}
                skipBranchesWithoutAppveyorYml: false
                slug: simple-web
                updated: 2014-07-14T10:16:26.9351867+00:00
          schema:
            $ref: "#/definitions/ProjectDeployment"
        default:
          $ref: "#/responses/Error"
      summary: Get deployment
      tags:
        - Deployment
    parameters:
      - $ref: "#/parameters/deploymentId"
  /environments:
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/environments-deployments/#get-environments
      operationId: getEnvironments
      responses:
        "200":
          description: Success
          examples:
            application/json:
              - deploymentEnvironmentId: 14
                name: azure-blob-1
                provider: AzureBlob
              - deploymentEnvironmentId: 12
                name: azure-deploy-test
                provider: AzureCS
          schema:
            items:
              $ref: "#/definitions/DeploymentEnvironmentLookupModel"
            type: array
        default:
          $ref: "#/responses/Error"
      summary: Get environments
      tags:
        - Environment
    post:
      externalDocs:
        url: https://www.appveyor.com/docs/api/environments-deployments/#add-environment
      operationId: addEnvironment
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/DeploymentEnvironmentAddition"
      responses:
        "200":
          description: Success
          examples:
            application/json:
              created: 2014-08-15T23:57:16.1585268+00:00
              deploymentEnvironmentId: 3018
              environmentAccessKey: gi3ttevuk7a123
              name: production
              provider: FTP
              settings:
                environmentVariables:
                  - name: my-var
                    value:
                      isEncrypted: false
                      value: "123"
                providerSettings:
                  - name: server
                    value:
                      isEncrypted: false
                      value: ftp.myserver.com
                  - name: username
                    value:
                      isEncrypted: false
                      value: ftp-user
                  - name: password
                    value:
                      isEncrypted: true
                      value: password
          schema:
            $ref: "#/definitions/DeploymentEnvironmentWithSettings"
        default:
          $ref: "#/responses/Error"
      summary: Add environment
      tags:
        - Environment
    put:
      externalDocs:
        url: https://www.appveyor.com/docs/api/environments-deployments/#update-environment
      operationId: updateEnvironment
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/DeploymentEnvironmentWithSettings"
      responses:
        "200":
          description: Success
          examples:
            application/json:
              created: 2014-08-15T23:57:16.1585268+00:00
              deploymentEnvironmentId: 3018
              environmentAccessKey: gi3ttevuk7123
              name: production
              provider: FTP
              settings:
                environmentVariables:
                  - name: my-var
                    value:
                      isEncrypted: false
                      value: "123"
                providerSettings:
                  - name: server
                    value:
                      isEncrypted: false
                      value: ftp.myserver.com
                  - name: username
                    value:
                      isEncrypted: false
                      value: ftp-user
                  - name: password
                    value:
                      isEncrypted: true
                      value: password
              updated: 2014-08-16T00:00:37.6079863+00:00
          schema:
            $ref: "#/definitions/DeploymentEnvironmentWithSettings"
        default:
          $ref: "#/responses/Error"
      summary: Update environment
      tags:
        - Environment
  "/environments/{deploymentEnvironmentId}":
    delete:
      externalDocs:
        url: https://www.appveyor.com/docs/api/environments-deployments/#delete-environment
      operationId: deleteEnvironment
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Delete environment
      tags:
        - Environment
    parameters:
      - $ref: "#/parameters/deploymentEnvironmentId"
  "/environments/{deploymentEnvironmentId}/deployments":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/environments-deployments/#get-environment-deployments
      operationId: getEnvironmentDeployments
      responses:
        "200":
          description: Success
          examples:
            application/json:
              deployments:
                - deployment:
                    build:
                      authorName: Feodor Fitsner
                      authorUsername: FeodorFitsner
                      branch: master
                      buildId: 18665
                      buildNumber: 25
                      commitId: ed40bd27f732d162b2185d75921b1cd57191f83b
                      committed: 2014-05-08T19:11:38+00:00
                      committerName: Feodor Fitsner
                      committerUsername: FeodorFitsner
                      created: 2014-05-22T20:09:53.759355+00:00
                      finished: 2014-05-22T20:12:33.7806881+00:00
                      jobs: []
                      message: "Merge pull request #3 from FeodorFitsner/master"
                      messageExtended: Changes to AccountController
                      messages: []
                      started: 2014-05-22T20:12:11.4475134+00:00
                      status: success
                      updated: 2014-05-22T20:12:33.7806881+00:00
                      version: 1.0.25
                    created: 2014-06-02T18:20:07.2833871+00:00
                    deploymentId: 4120
                    environment:
                      created: 2014-01-23T18:13:52.2268502+00:00
                      deploymentEnvironmentId: 14
                      name: azure-blob-1
                      provider: AzureBlob
                      updated: 2014-06-02T18:13:32.5106126+00:00
                    finished: 2014-06-02T18:20:25.11916+00:00
                    jobs:
                      - created: 2014-07-27T09:59:57.0171035+00:00
                        finished: 2014-07-27T10:00:11.5995296+00:00
                        jobId: 1696fh3a2w5ng99y
                        messagesCount: 0
                        name: Deployment
                        started: 2014-07-27T09:59:58.3955159+00:00
                        status: success
                        updated: 2014-07-27T10:00:16.163082+00:00
                    started: 2014-06-02T18:20:07.9871288+00:00
                    status: success
                    updated: 2014-06-02T18:20:25.11916+00:00
                  project:
                    accountId: 2
                    accountName: FeodorFitsner
                    builds: []
                    created: 2014-05-06T16:38:14.7788393+00:00
                    isPrivate: false
                    name: simple-web
                    projectId: 15072
                    repositoryName: AppVeyor/simple-web
                    repositoryScm: git
                    repositoryType: gitHub
                    securityDescriptor: {}
                    skipBranchesWithoutAppveyorYml: false
                    slug: simple-web
                    updated: 2014-06-02T21:37:30.9378043+00:00
              environment:
                created: 2014-01-23T18:13:52.2268502+00:00
                deploymentEnvironmentId: 14
                name: azure-blob-1
                provider: AzureBlob
                updated: 2014-06-02T18:13:32.5106126+00:00
          schema:
            $ref: "#/definitions/DeploymentEnvironmentDeploymentsResults"
        default:
          $ref: "#/responses/Error"
      summary: Get environment deployments
      tags:
        - Environment
    parameters:
      - $ref: "#/parameters/deploymentEnvironmentId"
  "/environments/{deploymentEnvironmentId}/settings":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/environments-deployments/#get-environment-settings
      operationId: getEnvironmentSettings
      responses:
        "200":
          description: Success
          examples:
            application/json:
              environment:
                created: 2014-01-23T18:13:52.2268502+00:00
                deploymentEnvironmentId: 14
                environmentAccessKey: aaabbb12345
                name: azure-blob-1
                provider: AzureBlob
                settings:
                  environmentVariables: []
                  providerSettings:
                    - name: storage_account_name
                      value:
                        isEncrypted: false
                        value: myaccount
                    - name: storage_access_key
                      value:
                        isEncrypted: true
                        value: 4sc1c7/Qp5buQcZ8N486Ks46mLFbXJVqcJjyv98w==
                    - name: container
                      value:
                        isEncrypted: false
                        value: test
                    - name: folder
                      value:
                        isEncrypted: false
                        value: $(appveyor_build_version)
                    - name: artifact
                      value:
                        isEncrypted: false
                updated: 2014-06-02T18:13:32.5106126+00:00
          schema:
            $ref: "#/definitions/DeploymentEnvironmentSettingsResults"
        default:
          $ref: "#/responses/Error"
      summary: Get environment settings
      tags:
        - Environment
    parameters:
      - $ref: "#/parameters/deploymentEnvironmentId"
  /projects:
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#get-projects
      operationId: getProjects
      responses:
        "200":
          description: Success
          examples:
            application/json:
              - accountId: 2
                accountName: FeodorFitsner
                builds:
                  - authorName: Feodor Fitsner
                    authorUsername: FeodorFitsner
                    branch: master
                    buildId: 23864
                    buildNumber: 3
                    commitId: c2892a70d60c96c1b65a7c665ab806b7731fea8a
                    committed: 2014-08-15T22:05:54+00:00
                    committerName: Feodor Fitsner
                    committerUsername: FeodorFitsner
                    created: 2014-08-15T22:33:15.9833328+00:00
                    finished: 2014-08-15T22:37:00.6171479+00:00
                    jobs: []
                    message: replaced with command [skip ci]
                    messages: []
                    started: 2014-08-15T22:36:38.1757886+00:00
                    status: success
                    updated: 2014-08-15T22:37:00.6171479+00:00
                    version: 1.0.3
                created: 2014-08-15T22:04:19.2868375+00:00
                isPrivate: false
                name: appveyor-artifact-test
                nuGetFeed:
                  created: 2014-08-15T22:04:21.3111546+00:00
                  id: appveyor-artifact-test-j8kk0o
                  name: Project appveyor-artifact-test
                  publishingEnabled: false
                projectId: 19096
                repositoryBranch: master
                repositoryName: FeodorFitsner/appveyor-artifact-test
                repositoryScm: git
                repositoryType: gitHub
                skipBranchesWithoutAppveyorYml: false
                slug: appveyor-artifact-test
          schema:
            items:
              $ref: "#/definitions/Project"
            type: array
        default:
          $ref: "#/responses/Error"
      summary: Get projects
      tags:
        - Project
    post:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#add-project
      operationId: addProject
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/ProjectAddition"
      responses:
        "200":
          description: Success
          examples:
            application/json:
              accountId: 2
              accountName: appvyr
              builds: []
              created: 2014-08-16T00:52:15.6604826+00:00
              isPrivate: false
              name: demo-app
              projectId: 43682
              repositoryName: FeodorFitsner/demo-app
              repositoryScm: git
              repositoryType: gitHub
              skipBranchesWithoutAppveyorYml: false
              slug: demo-app-335
          schema:
            $ref: "#/definitions/Project"
        default:
          $ref: "#/responses/Error"
      summary: Add project
      tags:
        - Project
    put:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#update-project
      operationId: updateProject
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/ProjectWithConfiguration"
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Update project
      tags:
        - Project
  "/projects/status/{badgeRepoProvider}/{repoAccountName}/{repoSlug}":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/status-badges/
      operationId: getPublicProjectStatusBadge
      parameters:
        - $ref: "#/parameters/branch"
        - $ref: "#/parameters/svg"
        - $ref: "#/parameters/retina"
        - $ref: "#/parameters/passingText"
        - $ref: "#/parameters/failingText"
        - $ref: "#/parameters/pendingText"
      produces:
        - image/svg+xml
        - image/png
      responses:
        "200":
          description: Success
          schema:
            type: file
        default:
          $ref: "#/responses/Error"
      security: []
      summary: Get status badge image for a project with a public repository
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/badgeRepoProvider"
      - $ref: "#/parameters/repoAccountName"
      - $ref: "#/parameters/repoSlug"
  "/projects/status/{statusBadgeId}":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/status-badges/
      operationId: getProjectStatusBadge
      parameters:
        - $ref: "#/parameters/svg"
        - $ref: "#/parameters/retina"
        - $ref: "#/parameters/passingText"
        - $ref: "#/parameters/failingText"
        - $ref: "#/parameters/pendingText"
      produces:
        - image/svg+xml
        - image/png
      responses:
        "200":
          description: Success
          schema:
            type: file
        default:
          $ref: "#/responses/Error"
      security: []
      summary: Get project status badge image
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/statusBadgeId"
  "/projects/status/{statusBadgeId}/branch/{buildBranch}":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/status-badges/
      operationId: getProjectBranchStatusBadge
      parameters:
        - $ref: "#/parameters/svg"
        - $ref: "#/parameters/retina"
        - $ref: "#/parameters/passingText"
        - $ref: "#/parameters/failingText"
        - $ref: "#/parameters/pendingText"
      produces:
        - image/svg+xml
        - image/png
      responses:
        "200":
          description: Success
          schema:
            type: file
        default:
          $ref: "#/responses/Error"
      security: []
      summary: Get project branch status badge image
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/statusBadgeId"
      - $ref: "#/parameters/buildBranch"
  "/projects/{accountName}/{projectSlug}":
    delete:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#delete-project
      operationId: deleteProject
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Delete project
      tags:
        - Project
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#get-project-last-build
      operationId: getProjectLastBuild
      responses:
        "200":
          description: Success
          examples:
            application/json:
              build:
                authorName: Feodor Fitsner
                authorUsername: FeodorFitsner
                branch: master
                buildId: 134173
                buildNumber: 45
                commitId: 85da1fb810ae89744abad83e75c13483dd740258
                committed: 2014-07-03T07:56:15+00:00
                committerName: Feodor Fitsner
                committerUsername: FeodorFitsner
                created: 2014-08-14T05:39:26.2946368+00:00
                finished: 2014-08-14T05:42:45.5709599+00:00
                jobs:
                  - allowFailure: false
                    artifactsCount: 0
                    compilationErrorsCount: 0
                    compilationMessagesCount: 0
                    compilationWarningsCount: 0
                    created: 2014-08-14T05:39:27.3902557+00:00
                    failedTestsCount: 0
                    finished: 2014-08-14T05:42:45.1102797+00:00
                    jobId: 9r2qufuu8
                    messagesCount: 0
                    name: ""
                    passedTestsCount: 0
                    started: 2014-08-14T05:41:49.1061831+00:00
                    status: success
                    testsCount: 0
                    updated: 2014-08-14T05:42:45.477213+00:00
                message: AssemblyInfo patching
                messages: []
                started: 2014-08-14T05:41:49.1686804+00:00
                status: success
                updated: 2014-08-14T05:42:45.5709599+00:00
                version: 1.0.45
              project:
                accountId: 2
                accountName: appvyr
                builds: []
                created: 2014-07-19T10:23:03.8005134+00:00
                isPrivate: false
                name: nuget-test
                nuGetFeed:
                  created: 2014-07-19T10:23:05.5160273+00:00
                  id: nuget-test-23spw2w
                  name: Project nuget-test
                  publishingEnabled: false
                projectId: 38907
                repositoryBranch: master
                repositoryName: FeodorFitsner/nuget-test
                repositoryScm: git
                repositoryType: gitHub
                securityDescriptor: {}
                skipBranchesWithoutAppveyorYml: false
                slug: nuget-test
                updated: 2014-08-01T05:25:15.4119745+00:00
          schema:
            $ref: "#/definitions/ProjectBuildResults"
        default:
          $ref: "#/responses/Error"
      security: []
      summary: Get project last build
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/accountName"
      - $ref: "#/parameters/projectSlug"
  "/projects/{accountName}/{projectSlug}/artifacts/{artifactFileName}":
    get:
      description: The `job` parameter is mandatory if the build contains multiple jobs.
      externalDocs:
        url: https://www.appveyor.com/docs/packaging-artifacts/#permalink-to-the-last-successful-build-artifact
      operationId: getProjectArtifact
      produces:
        - application/octet-stream
      responses:
        "200":
          description: Success
          schema:
            type: file
        default:
          $ref: "#/responses/Error"
      security: []
      summary: Get last successful build artifact
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/accountName"
      - $ref: "#/parameters/projectSlug"
      - $ref: "#/parameters/artifactFileName"
      - $ref: "#/parameters/branch"
      - $ref: "#/parameters/tag"
      - $ref: "#/parameters/job"
      - $ref: "#/parameters/all"
      - $ref: "#/parameters/pr"
  "/projects/{accountName}/{projectSlug}/branch/{buildBranch}":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#get-project-last-branch-build
      operationId: getProjectLastBuildBranch
      responses:
        "200":
          description: Success
          examples:
            application/json:
              build:
                authorName: Feodor Fitsner
                authorUsername: FeodorFitsner
                branch: master
                buildId: 134173
                buildNumber: 45
                commitId: 85da1fb810ae89744abad83e75c13483dd740258
                committed: 2014-07-03T07:56:15+00:00
                committerName: Feodor Fitsner
                committerUsername: FeodorFitsner
                created: 2014-08-14T05:39:26.2946368+00:00
                finished: 2014-08-14T05:42:45.5709599+00:00
                jobs:
                  - allowFailure: false
                    artifactsCount: 0
                    compilationErrorsCount: 0
                    compilationMessagesCount: 0
                    compilationWarningsCount: 0
                    created: 2014-08-14T05:39:27.3902557+00:00
                    failedTestsCount: 0
                    finished: 2014-08-14T05:42:45.1102797+00:00
                    jobId: 9r2qufuu8
                    messagesCount: 0
                    name: ""
                    passedTestsCount: 0
                    started: 2014-08-14T05:41:49.1061831+00:00
                    status: success
                    testsCount: 0
                    updated: 2014-08-14T05:42:45.477213+00:00
                message: AssemblyInfo patching
                messages: []
                started: 2014-08-14T05:41:49.1686804+00:00
                status: success
                updated: 2014-08-14T05:42:45.5709599+00:00
                version: 1.0.45
              project:
                accountId: 2
                accountName: appvyr
                builds: []
                created: 2014-07-19T10:23:03.8005134+00:00
                isPrivate: false
                name: nuget-test
                nuGetFeed:
                  created: 2014-07-19T10:23:05.5160273+00:00
                  id: nuget-test-23spw2w
                  name: Project nuget-test
                  publishingEnabled: false
                projectId: 38907
                repositoryBranch: master
                repositoryName: FeodorFitsner/nuget-test
                repositoryScm: git
                repositoryType: gitHub
                securityDescriptor: {}
                skipBranchesWithoutAppveyorYml: false
                slug: nuget-test
                updated: 2014-08-01T05:25:15.4119745+00:00
          schema:
            $ref: "#/definitions/ProjectBuildResults"
        default:
          $ref: "#/responses/Error"
      security: []
      summary: Get project last branch build
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/accountName"
      - $ref: "#/parameters/projectSlug"
      - $ref: "#/parameters/buildBranch"
  "/projects/{accountName}/{projectSlug}/build/{buildVersion}":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#get-project-build-by-version
      operationId: getProjectBuildByVersion
      responses:
        "200":
          description: Success
          examples:
            application/json:
              build:
                authorName: Feodor Fitsner
                authorUsername: FeodorFitsner
                branch: master
                buildId: 134173
                buildNumber: 45
                commitId: 85da1fb810ae89744abad83e75c13483dd740258
                committed: 2014-07-03T07:56:15+00:00
                committerName: Feodor Fitsner
                committerUsername: FeodorFitsner
                created: 2014-08-14T05:39:26.2946368+00:00
                finished: 2014-08-14T05:42:45.5709599+00:00
                jobs:
                  - allowFailure: false
                    artifactsCount: 0
                    compilationErrorsCount: 0
                    compilationMessagesCount: 0
                    compilationWarningsCount: 0
                    created: 2014-08-14T05:39:27.3902557+00:00
                    failedTestsCount: 0
                    finished: 2014-08-14T05:42:45.1102797+00:00
                    jobId: 9r2qufuu8
                    messagesCount: 0
                    name: ""
                    passedTestsCount: 0
                    started: 2014-08-14T05:41:49.1061831+00:00
                    status: success
                    testsCount: 0
                    updated: 2014-08-14T05:42:45.477213+00:00
                message: AssemblyInfo patching
                messages: []
                started: 2014-08-14T05:41:49.1686804+00:00
                status: success
                updated: 2014-08-14T05:42:45.5709599+00:00
                version: 1.0.45
              project:
                accountId: 2
                accountName: appvyr
                builds: []
                created: 2014-07-19T10:23:03.8005134+00:00
                isPrivate: false
                name: nuget-test
                nuGetFeed:
                  created: 2014-07-19T10:23:05.5160273+00:00
                  id: nuget-test-23spw2w
                  name: Project nuget-test
                  publishingEnabled: false
                projectId: 38907
                repositoryBranch: master
                repositoryName: FeodorFitsner/nuget-test
                repositoryScm: git
                repositoryType: gitHub
                securityDescriptor: {}
                skipBranchesWithoutAppveyorYml: false
                slug: nuget-test
                updated: 2014-08-01T05:25:15.4119745+00:00
          schema:
            $ref: "#/definitions/ProjectBuildResults"
        default:
          $ref: "#/responses/Error"
      security: []
      summary: Get project build by version
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/accountName"
      - $ref: "#/parameters/projectSlug"
      - $ref: "#/parameters/buildVersion"
  "/projects/{accountName}/{projectSlug}/buildcache":
    delete:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#delete-project-build-cache
      operationId: deleteProjectBuildCache
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Delete project build cache
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/accountName"
      - $ref: "#/parameters/projectSlug"
  "/projects/{accountName}/{projectSlug}/deployments":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#get-project-deployments
      operationId: getProjectDeployments
      responses:
        "200":
          description: Success
          examples:
            application/json:
              deployments:
                - deployment:
                    build:
                      authorName: Feodor Fitsner
                      authorUsername: FeodorFitsner
                      branch: master
                      buildId: 132746
                      buildNumber: 38
                      commitId: c397ba5d17dd17b994375405f560e4922207da1e
                      committed: 2014-08-12T22:56:00+00:00
                      committerName: Feodor Fitsner
                      committerUsername: FeodorFitsner
                      created: 2014-08-12T22:56:09.9208493+00:00
                      finished: 2014-08-12T22:58:05.7595508+00:00
                      jobs: []
                      message: Removed Start-Website
                      messages: []
                      started: 2014-08-12T22:56:25.8575967+00:00
                      status: success
                      updated: 2014-08-12T22:58:05.7595508+00:00
                      version: 1.0.38
                    created: 2014-08-12T23:06:07.9009315+00:00
                    deploymentId: 19475
                    environment:
                      created: 2014-04-01T17:56:41.30982+00:00
                      deploymentEnvironmentId: 27
                      name: agent test
                      provider: Agent
                      updated: 2014-08-12T22:35:51.9723883+00:00
                    finished: 2014-08-12T23:06:25.0502019+00:00
                    jobs:
                      - created: 2014-08-12T23:06:07.9009315+00:00
                        finished: 2014-08-12T23:06:24.3361102+00:00
                        jobId: jnpbcc77s4w278e4
                        messagesCount: 0
                        name: Deployment
                        started: 2014-08-12T23:06:10.8776088+00:00
                        status: success
                        updated: 2014-08-12T23:06:24.9390847+00:00
                      - created: 2014-08-12T23:06:14.8148958+00:00
                        finished: 2014-08-12T23:06:21.9647266+00:00
                        jobId: nbgyf7pn65d4agyr
                        messagesCount: 0
                        name: TEST-AGENT-DEPL
                        started: 2014-08-12T23:06:14.8148958+00:00
                        status: success
                        updated: 2014-08-12T23:06:22.3768791+00:00
                    started: 2014-08-12T23:06:10.8776088+00:00
                    status: success
                    updated: 2014-08-12T23:06:25.0502019+00:00
                  environment:
                    created: 2014-04-01T17:56:41.30982+00:00
                    deploymentEnvironmentId: 27
                    name: agent test
                    provider: Agent
                    updated: 2014-08-12T22:35:51.9723883+00:00
              project:
                accountId: 2
                accountName: appvyr
                builds: []
                created: 2014-05-08T18:38:57.9163293+00:00
                isPrivate: false
                name: simple-web
                projectId: 22321
                repositoryName: AppVeyor/simple-web
                repositoryScm: git
                repositoryType: gitHub
                securityDescriptor: {}
                skipBranchesWithoutAppveyorYml: false
                slug: simple-web
                updated: 2014-07-14T10:16:26.9351867+00:00
          schema:
            $ref: "#/definitions/ProjectDeploymentsResults"
        default:
          $ref: "#/responses/Error"
      summary: Get project deployments
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/accountName"
      - $ref: "#/parameters/projectSlug"
      - $ref: "#/parameters/recordsNumber"
  "/projects/{accountName}/{projectSlug}/history":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#get-project-history
      operationId: getProjectHistory
      parameters:
        - $ref: "#/parameters/recordsNumber"
        - $ref: "#/parameters/startBuildId"
        - $ref: "#/parameters/branch"
      responses:
        "200":
          description: Success
          examples:
            application/json:
              builds:
                - authorName: Feodor Fitsner
                  authorUsername: FeodorFitsner
                  branch: master
                  buildId: 134174
                  buildNumber: 5
                  commitId: d19740243e3ec5497345de0f7d828e66a7cd1a6b
                  committed: 2014-08-10T14:08:16+00:00
                  committerName: Feodor Fitsner
                  committerUsername: FeodorFitsner
                  created: 2014-08-14T05:39:30.8845902+00:00
                  finished: 2014-08-14T05:43:47.4732355+00:00
                  jobs: []
                  message: Enabled diag mode
                  messages: []
                  started: 2014-08-14T05:42:17.2696755+00:00
                  status: success
                  updated: 2014-08-14T05:43:47.4732355+00:00
                  version: 1.0.5
                - authorName: Feodor Fitsner
                  authorUsername: FeodorFitsner
                  branch: master
                  buildId: 129289
                  buildNumber: 3
                  commitId: 28c6eec932c0e21eca5bb5571a722f850aa8bf6f
                  committed: 2014-08-09T00:33:34+00:00
                  committerName: Feodor Fitsner
                  committerUsername: FeodorFitsner
                  created: 2014-08-09T15:42:38.8315273+00:00
                  finished: 2014-08-09T15:44:15.5828009+00:00
                  jobs: []
                  message: Added appveyor.yml
                  messages: []
                  started: 2014-08-09T15:42:45.7878479+00:00
                  status: success
                  updated: 2014-08-09T15:44:15.5828009+00:00
                  version: 1.0.3
              project:
                accountId: 2
                accountName: appvyr
                builds: []
                created: 2014-08-09T00:30:43.3327131+00:00
                isPrivate: false
                name: wix-test
                projectId: 42438
                repositoryName: FeodorFitsner/wix-test
                repositoryScm: git
                repositoryType: gitHub
                skipBranchesWithoutAppveyorYml: false
                slug: wix-test
          schema:
            $ref: "#/definitions/ProjectHistory"
        default:
          $ref: "#/responses/Error"
      security: []
      summary: Get project history
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/accountName"
      - $ref: "#/parameters/projectSlug"
  "/projects/{accountName}/{projectSlug}/settings":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#get-project-settings
      operationId: getProjectSettings
      responses:
        "200":
          description: Success
          examples:
            application/json:
              images:
                - name: test-win2012-r2
                - name: Windows Server 2012
                - name: Windows Server 2012 R2
              project:
                accountId: 2
                accountName: appvyr
                builds: []
                created: 2014-05-08T18:38:57.9163293+00:00
                isPrivate: false
                name: simple-web
                projectId: 22321
                repositoryName: AppVeyor/simple-web
                repositoryScm: git
                repositoryType: gitHub
                securityDescriptor:
                  accessRightDefinitions:
                    - description: View
                      name: View
                    - description: Run build
                      name: RunBuild
                    - description: Update settings
                      name: Update
                    - description: Delete project
                      name: Delete
                  roleAces:
                    - accessRights:
                        - allowed: true
                          name: View
                        - allowed: true
                          name: RunBuild
                        - allowed: true
                          name: Update
                        - allowed: true
                          name: Delete
                      isAdmin: true
                      name: Administrator
                      roleId: 4
                    - accessRights:
                        - name: View
                        - name: RunBuild
                        - name: Update
                        - name: Delete
                      isAdmin: false
                      name: User
                      roleId: 5
                skipBranchesWithoutAppveyorYml: false
                slug: simple-web
                updated: 2014-07-14T10:16:26.9351867+00:00
              settings:
                accountId: 2
                accountName: appvyr
                builds: []
                configuration:
                  afterBuildScripts: []
                  afterDeployScripts: []
                  afterTestScripts: []
                  artifacts: []
                  assemblyFileVersionFormat: "{version}"
                  assemblyInfoFile: "**\\AssemblyInfo.*"
                  assemblyInformationalVersionFormat: "{version}"
                  assemblyVersionFormat: "{version}"
                  beforeBuildScripts: []
                  beforeDeployScripts: []
                  beforeTestScripts: []
                  buildMode: msbuild
                  buildScripts: []
                  configuration: []
                  deployMode: providers
                  deployScripts: []
                  deployments: []
                  environmentVariables: []
                  environmentVariablesMatrix: []
                  excludeBranches: []
                  hostsEntries: []
                  includeBranches: []
                  initScripts: []
                  installScripts: []
                  matrixAllowFailures: []
                  matrixFastFinish: false
                  msBuildVerbosity: minimal
                  notifications: []
                  onBuildErrorScripts: []
                  onBuildSuccessScripts: []
                  operatingSystem: []
                  packageAzureCloudServiceProjects: false
                  packageNuGetProjects: false
                  packageWebApplicationProjects: false
                  packageWebApplicationProjectsXCopy: false
                  patchAssemblyInfo: false
                  platform: []
                  services: []
                  shallowClone: false
                  testAssemblies: []
                  testCategories: []
                  testCategoriesMatrix: []
                  testMode: auto
                  testScripts: []
                created: 2014-05-08T18:38:57.9163293+00:00
                ignoreAppveyorYml: false
                isPrivate: false
                name: simple-web
                nextBuildNumber: 41
                nuGetFeed:
                  created: 2014-05-08T18:38:59.2455842+00:00
                  id: simple-web-0r50wgb1st6q
                  name: Project simple-web
                  publishingEnabled: false
                projectId: 22321
                repositoryBranch: master
                repositoryName: AppVeyor/simple-web
                repositoryScm: git
                repositoryType: gitHub
                securityDescriptor:
                  accessRightDefinitions:
                    - description: View
                      name: View
                    - description: Run build
                      name: RunBuild
                    - description: Update settings
                      name: Update
                    - description: Delete project
                      name: Delete
                  roleAces:
                    - accessRights:
                        - allowed: true
                          name: View
                        - allowed: true
                          name: RunBuild
                        - allowed: true
                          name: Update
                        - allowed: true
                          name: Delete
                      isAdmin: true
                      name: Administrator
                      roleId: 4
                    - accessRights:
                        - name: View
                        - name: RunBuild
                        - name: Update
                        - name: Delete
                      isAdmin: false
                      name: User
                      roleId: 5
                skipBranchesWithoutAppveyorYml: false
                slug: simple-web
                updated: 2014-07-14T10:16:26.9351867+00:00
                versionFormat: 1.0.{build}
                webhookId: k783di7br
                webhookUrl: https://ci.appveyor.com/api/github/webhook?id=k783di7br
          schema:
            $ref: "#/definitions/ProjectSettingsResults"
        default:
          $ref: "#/responses/Error"
      summary: Get project settings
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/accountName"
      - $ref: "#/parameters/projectSlug"
  "/projects/{accountName}/{projectSlug}/settings/build-number":
    parameters:
      - $ref: "#/parameters/accountName"
      - $ref: "#/parameters/projectSlug"
    put:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#update-project-build-number
      operationId: updateProjectBuildNumber
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/ProjectBuildNumberUpdate"
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Update project build number
      tags:
        - Project
  "/projects/{accountName}/{projectSlug}/settings/environment-variables":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#get-project-environment-variables
      operationId: getProjectEnvironmentVariables
      responses:
        "200":
          description: Success
          examples:
            application/json:
              - name: api_key
                value:
                  isEncrypted: true
                  value: very-secret-key-encrypted
              - name: var1
                value:
                  isEncrypted: false
                  value: current-value
          schema:
            items:
              $ref: "#/definitions/StoredNameValue"
            type: array
        default:
          $ref: "#/responses/Error"
      summary: Get project environment variables
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/accountName"
      - $ref: "#/parameters/projectSlug"
    put:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#update-project-environment-variables
      operationId: updateProjectEnvironmentVariables
      parameters:
        - in: body
          name: body
          required: true
          schema:
            items:
              $ref: "#/definitions/StoredNameValue"
            type: array
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Update project environment variables
      tags:
        - Project
  "/projects/{accountName}/{projectSlug}/settings/yaml":
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#get-project-settings-in-yaml
      operationId: getProjectSettingsYaml
      produces:
        - text/plain
      responses:
        "200":
          description: |
            Success

            The schema type of this response could be specified as `file` to
            denote opaque binary data.  The generated Java code for `file`
            saves the response as a temporary file, making it a little more
            difficult to use and less efficient for common cases.  If `string`
            causes problems for other generators, can switch to `file` type.
          examples:
            text/plain: |
              version: 1.0.{build}
              build:
                project: MySolution.sln
                verbosity: minimal
                publish_wap: true
                ...
          schema:
            type: string
        default:
          $ref: "#/responses/Error"
      summary: Get project settings in YAML
      tags:
        - Project
    parameters:
      - $ref: "#/parameters/accountName"
      - $ref: "#/parameters/projectSlug"
    put:
      consumes:
        - text/plain
      externalDocs:
        url: https://www.appveyor.com/docs/api/projects-builds/#update-project-settings-in-yaml
      operationId: updateProjectSettingsYaml
      parameters:
        - description: |
            The body of requests should contain YAML data.  It is unclear how
            to specify this since the OpenAPI spec requires `schema` without
            `type` for `in: body` parameters and does not allow `type: file` in
            `schema`.  See https://github.com/OAI/OpenAPI-Specification/issues/326
            swagger-codegen (for Java, probably others) allows a binary
            string body parameter with non-application/json `consumes` to be
            passed through in the request body without conversion to JSON.
          in: body
          name: body
          required: true
          schema:
            format: binary
            type: string
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Update project settings in YAML
      tags:
        - Project
  /roles:
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#get-roles
      operationId: getRoles
      responses:
        "200":
          description: Success
          examples:
            application/json:
              - created: 2013-09-26T19:23:39.3615105+00:00
                isSystem: true
                name: Administrator
                roleId: 4
              - created: 2013-09-26T19:23:39.3645117+00:00
                isSystem: true
                name: User
                roleId: 5
          schema:
            items:
              $ref: "#/definitions/Role"
            type: array
        default:
          $ref: "#/responses/Error"
      summary: Get roles
      tags:
        - Role
    post:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#add-role
      operationId: addRole
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/RoleAddition"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/RoleWithGroups"
        default:
          $ref: "#/responses/Error"
      summary: Add role
      tags:
        - Role
    put:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#update-role
      operationId: updateRole
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/RoleWithGroups"
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/RoleWithGroups"
        default:
          $ref: "#/responses/Error"
      summary: Update role
      tags:
        - Role
  "/roles/{roleId}":
    delete:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#delete-role
      operationId: deleteRole
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Delete role
      tags:
        - Role
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#get-role
      operationId: getRole
      responses:
        "200":
          description: Success
          examples:
            application/json:
              created: 2014-03-18T20:12:08.4749886+00:00
              groups:
                - name: Projects
                  permissions:
                    - allowed: false
                      description: Create, delete projects, update project settings
                      name: ManageProjects
                    - allowed: false
                      description: Update project settings
                      name: UpdateProjectSettings
                    - allowed: false
                      description: Run project builds
                      name: RunProjectBuild
                    - allowed: false
                      description: Delete project builds
                      name: DeleteProjectBuilds
                - name: Environments
                  permissions:
                    - allowed: false
                      description: Create, delete projects, update environment settings
                      name: ManageEnvironments
                    - allowed: false
                      description: Update environment settings
                      name: UpdateEnvironmentSettings
                    - allowed: false
                      description: Deploy to environment
                      name: DeployToEnvironment
                - name: Account
                  permissions:
                    - allowed: false
                      description: Update account details
                      name: UpdateAccountDetails
                - name: Users
                  permissions:
                    - allowed: false
                      description: Add new user
                      name: AddUser
                    - allowed: false
                      description: Update user details
                      name: UpdateUserDetails
                    - allowed: false
                      description: Delete user
                      name: DeleteUser
                - name: Roles
                  permissions:
                    - allowed: false
                      description: Add new role
                      name: AddRole
                    - allowed: false
                      description: Update role details
                      name: UpdateRoleDetails
                    - allowed: false
                      description: Delete role
                      name: DeleteRole
                - name: User
                  permissions:
                    - allowed: false
                      description: Generate API keys
                      name: ConfigureApiKeys
              isSystem: false
              name: My Role
              roleId: 3040
          schema:
            $ref: "#/definitions/RoleWithGroups"
        default:
          $ref: "#/responses/Error"
      summary: Get role
      tags:
        - Role
    parameters:
      - $ref: "#/parameters/roleId"
  /user/join-account:
    put:
      operationId: joinAccount
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/JoinAccountRequest"
      responses:
        "200":
          description: Success
          examples:
            application/json:
              accounts:
                - accountId: 2
                  allowCustomBuildEnvironment: false
                  blocked: false
                  created: 2016-12-30T05:00:43.038419+00:00
                  featureFlags: distv2
                  gitHubPlan: false
                  isCollaborator: true
                  isEnterprisePlan: false
                  isOwner: false
                  manualPayments: false
                  name: NuGet
                  permissions: []
                  planId: free
                  planStart: 2016-09-09T23:01:29.941128+00:00
                  planStatus: active
                  roleId: 5
                  roleName: User
                  unpaid: false
                  unverified: false
                  updated: 2017-01-01T21:21:10.1292694+00:00
                - accountId: 2
                  allowCustomBuildEnvironment: false
                  blocked: false
                  created: 2016-09-09T23:01:29.941128+00:00
                  featureFlags: distv2
                  gitHubPlan: false
                  isCollaborator: false
                  isEnterprisePlan: false
                  isOwner: true
                  manualPayments: false
                  name: nuget
                  permissions:
                    - ManageProjects
                    - UpdateProjectSettings
                    - RunProjectBuild
                    - ManageEnvironments
                    - UpdateEnvironmentSettings
                    - DeployToEnvironment
                    - ConfigureBuildEnvironment
                    - UpdateAccountDetails
                    - UpdateBillingDetails
                    - ManageApplicationAuthorizations
                    - AddUser
                    - UpdateUserDetails
                    - DeleteUser
                    - AddRole
                    - UpdateRoleDetails
                    - DeleteRole
                  planId: free
                  planStart: 2016-09-09T23:01:29.941128+00:00
                  planStatus: active
                  roleId: 4
                  roleName: Administrator
                  unpaid: false
                  unverified: false
                  updated: 2016-09-21T00:08:35.0728561+00:00
              setupRequired: false
              twoFactorAuthRequired: false
              user:
                created: 2016-09-09T23:01:29.941128+00:00
                email: nuget@appveyor.com
                fullName: NuGet
                gitHubUsername: nuget
                gravatarHash: 142e1aa89b96190de9f4ce6569ebb421
                pageSize: 10
                twoFactorAuthEnabled: false
                updated: 2017-01-03T02:06:50.0238036+00:00
                userId: 2019
          schema:
            $ref: "#/definitions/SessionModel"
        default:
          $ref: "#/responses/Error"
      summary: Join Account
      tags:
        - User
  /users:
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#get-users
      operationId: getUsers
      responses:
        "200":
          description: Success
          examples:
            application/json:
              - accountId: 2
                accountName: FeodorFitsner
                created: 2014-02-12T19:21:15.0618564+00:00
                email: nuget@appveyor.com
                failedBuildNotification: all
                fullName: NuGet
                isCollaborator: false
                isOwner: false
                notifyWhenBuildStatusChangedOnly: true
                roleId: 5
                roleName: User
                successfulBuildNotification: all
                updated: 2014-03-06T22:47:44.9706252+00:00
                userId: 2019
          schema:
            items:
              $ref: "#/definitions/UserAccount"
            type: array
        default:
          $ref: "#/responses/Error"
      summary: Get users
      tags:
        - User
    put:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#update-user
      operationId: updateUser
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/UserAccount"
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Update user
      tags:
        - User
  /users/invitations:
    get:
      operationId: getUserInvitations
      responses:
        "200":
          description: Success
          examples:
            application/json:
              - accountId: 2
                accountName: FeodorFitsner
                created: 2019-03-20T16:22:50.2504181+00:00
                email: nuget@appveyor.com
                roleId: 5
                roleName: User
                userInvitationId: 6i9w9rcp5us7lxnbdo63
          schema:
            items:
              $ref: "#/definitions/UserInvitationModel"
            type: array
        default:
          $ref: "#/responses/Error"
      summary: Get user invitations
      tags:
        - User
    post:
      operationId: inviteUser
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/InviteUserRequest"
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Invite user
      tags:
        - User
  "/users/invitations/{userInvitationId}":
    delete:
      operationId: cancelUserInvitation
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Cancel user invitation
      tags:
        - User
    parameters:
      - $ref: "#/parameters/userInvitationId"
  "/users/{userId}":
    delete:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#delete-user
      operationId: deleteUser
      responses:
        "204":
          description: Success
        default:
          $ref: "#/responses/Error"
      summary: Delete user
      tags:
        - User
    get:
      externalDocs:
        url: https://www.appveyor.com/docs/api/team/#get-user
      operationId: getUser
      responses:
        "200":
          description: Success
          examples:
            application/json:
              roles:
                - created: 2013-09-26T19:23:39.3615105+00:00
                  isSystem: true
                  name: Administrator
                  roleId: 4
                - created: 2013-09-26T19:23:39.3645117+00:00
                  isSystem: true
                  name: User
                  roleId: 5
              user:
                accountId: 2
                accountName: FeodorFitsner
                created: 2014-02-12T19:21:15.0618564+00:00
                email: nuget@appveyor.com
                failedBuildNotification: all
                fullName: NuGet
                isCollaborator: false
                isOwner: false
                notifyWhenBuildStatusChangedOnly: true
                roleId: 5
                roleName: User
                successfulBuildNotification: all
                updated: 2014-03-06T22:47:44.9706252+00:00
                userId: 2019
          schema:
            $ref: "#/definitions/UserAccountRolesResults"
        default:
          $ref: "#/responses/Error"
      summary: Get user
      tags:
        - User
    parameters:
      - $ref: "#/parameters/userId"
definitions:
  AccessRightName:
    enum:
      - Delete
      - Deploy
      - RunBuild
      - Update
      - View
    type: string
  AceAccessRight:
    properties:
      allowed:
        description: true to allow, false to deny, undefined to inherit
        type: boolean
      name:
        $ref: "#/definitions/AccessRightName"
    required:
      - name
    type: object
  AceAccessRightDefinition:
    properties:
      description:
        type: string
      name:
        $ref: "#/definitions/AccessRightName"
    required:
      - name
    type: object
  Artifact:
    properties:
      name:
        minLength: 0
        title: Deployment name
        type: string
      path:
        description: |
          Path glob of artifact files.
          Note that updateProject does not require path, but omitting path
          results in post-build error "Collecting artifacts... Value cannot
          be null.  Parameter name: input"
        type: string
      type:
        $ref: "#/definitions/ArtifactType"
    required:
      - path
    type: object
  ArtifactModel:
    properties:
      created:
        format: date-time
        type: string
      fileName:
        type: string
      name:
        title: Deployment name
        type: string
      size:
        minimum: 0
        type: integer
      type:
        $ref: "#/definitions/ArtifactType"
      url:
        description: |
          This property has not been observed in JSON responses, but is
          present and nil in XML responses.
        type: string
    type: object
  ArtifactType:
    description: |-
      Possible values from `Push-AppveyorArtifact` cmdlet `-Type` parameter.

      The web UI only allows selection of `Auto`, `WebDeployPackage`, and
      unspecified (which it sends as the empty string but functions like
      omitting the property) for `updateProject`.

      Any string can be sent and will be saved/returned, but only these
      values have a function (as far as I am aware).
    enum:
      - Auto
      - AzureCloudService
      - AzureCloudServiceConfig
      - ElasticBeanstalkPackage
      - File
      - NuGetPackage
      - OctopusPackage
      - SsdtPackage
      - WebDeployPackage
      - Zip
    type: string
  Build:
    allOf:
      - $ref: "#/definitions/BuildLookupModel"
      - $ref: "#/definitions/Timestamped"
      - properties:
          authorName:
            type: string
          authorUsername:
            type: string
          buildNumber:
            minimum: 0
            type: integer
          commitId:
            type: string
          committed:
            format: date-time
            type: string
          committerName:
            type: string
          committerUsername:
            type: string
          finished:
            format: date-time
            type: string
          isTag:
            type: boolean
          jobs:
            description: Always empty in getProjectHistory and startDeployment responses.
            items:
              $ref: "#/definitions/BuildJob"
            type: array
          messageExtended:
            type: string
          messages:
            items:
              $ref: "#/definitions/BuildMessage"
            type: array
          projectId:
            minimum: 0
            type: integer
          pullRequestId:
            minimum: 1
            type: integer
          pullRequestName:
            type: string
          started:
            format: date-time
            type: string
          status:
            $ref: "#/definitions/Status"
        type: object
  BuildCloudName:
    enum:
      - azure-westus
      - gce
      - pro-ubuntu
      - pro-ubuntu18
      - pro-vs2013
      - pro-win2016
      - pro-vs2017
      - ubuntu
    type: string
  BuildJob:
    allOf:
      - $ref: "#/definitions/Job"
      - properties:
          allowFailure:
            type: boolean
          artifactsCount:
            minimum: 0
            type: integer
          compilationErrorsCount:
            minimum: 0
            type: integer
          compilationMessagesCount:
            minimum: 0
            type: integer
          compilationWarningsCount:
            minimum: 0
            type: integer
          failedTestsCount:
            minimum: 0
            type: integer
          messagesCount:
            minimum: 0
            type: integer
          osType:
            $ref: "#/definitions/OSType"
          passedTestsCount:
            minimum: 0
            type: integer
          testsCount:
            minimum: 0
            type: integer
        type: object
  BuildLookupModel:
    properties:
      branch:
        type: string
      buildId:
        minimum: 0
        type: integer
      message:
        type: string
      version:
        type: string
    type: object
  BuildMessage:
    properties:
      category:
        $ref: "#/definitions/BuildMessageCategory"
      created:
        format: date-time
        type: string
      message:
        type: string
    type: object
  BuildMessageCategory:
    enum:
      - information
      - warning
    type: string
  BuildMode:
    enum:
      - msbuild
      - none
      - script
    type: string
  BuildNotificationFrequency:
    enum:
      - all
      - myCommits
      - none
    type: string
  BuildStartRequest:
    example:
      accountName: your-account-name
      branch: master
      environmentVariables:
        another_var: another value
        my_var: value
      projectSlug: project-slug-from-url
    properties:
      accountName:
        minLength: 1
        type: string
      branch:
        type: string
      commitId:
        type: string
      environmentVariables:
        additionalProperties:
          type: string
        type: object
      projectSlug:
        minLength: 1
        type: string
      pullRequestId:
        description: Can not be used with `branch` or `commitId`
        minimum: 1
        type: integer
    required:
      - accountName
      - projectSlug
    type: object
  BuildWorkerImage:
    properties:
      buildCloudName:
        $ref: "#/definitions/BuildCloudName"
      buildWorkerImageId:
        minimum: 0
        type: integer
      name:
        $ref: "#/definitions/BuildWorkerImageName"
      osType:
        $ref: "#/definitions/OSType"
    required:
      - buildWorkerImageId
      - name
    type: object
  BuildWorkerImageName:
    description: |-
      Defines the available build worker image templates used to provision a virtual machine for a build.  Images are updated regularly.  "Previous" selects the previous version of an image, for use as a temporary workaround for regressions.
      `Ubuntu` is the same as `Ubuntu1604`. `Previous Ubuntu` is the same as `Previous Ubuntu1604`.
      See https://www.appveyor.com/docs/build-environment/#build-worker-images for details.
    enum:
      - Previous Ubuntu
      - Previous Ubuntu1604
      - Previous Ubuntu1804
      - Previous Visual Studio 2013
      - Previous Visual Studio 2015
      - Previous Visual Studio 2017
      - Ubuntu
      - Ubuntu1604
      - Ubuntu1804
      - Visual Studio 2013
      - Visual Studio 2015
      - Visual Studio 2015 2
      - Visual Studio 2017
      - Visual Studio 2017 Preview
      - Visual Studio 2019 Preview
      - WMF 5
      - Windows Server 2019
    type: string
  CollaboratorUpdate:
    description: |
      Technically `userId` and `roleId` have default value 0 and are not
      required, but since user 0 and role 0 never exist it would always cause
      a 404 response.
    example:
      roleId: 3040
      userId: 2018
    properties:
      roleId:
        minimum: 0
        type: integer
      userId:
        minimum: 0
        type: integer
    required:
      - userId
      - roleId
    type: object
  DeployMode:
    enum:
      - providers
      - none
      - script
    type: string
  Deployment:
    allOf:
      - $ref: "#/definitions/DeploymentLookupModel"
      - $ref: "#/definitions/Timestamped"
      - properties:
          build:
            $ref: "#/definitions/Build"
          environment:
            $ref: "#/definitions/DeploymentEnvironment"
          jobs:
            items:
              $ref: "#/definitions/DeploymentJob"
            type: array
        type: object
  DeploymentCancellation:
    example:
      deploymentId: 123
    properties:
      deploymentId:
        minimum: 0
        type: integer
    required:
      - deploymentId
    type: object
  DeploymentEnvironment:
    allOf:
      - $ref: "#/definitions/DeploymentEnvironmentLookupModel"
      - $ref: "#/definitions/Timestamped"
      - properties:
          accountId:
            type: integer
          projectsMode:
            $ref: "#/definitions/DeploymentProjectSelectionMode"
          securityDescriptor:
            $ref: "#/definitions/SecurityDescriptor"
          tags:
            description: |-
              Comma-separated list of environment tags for dynamic grouping.
              Appears that any input is accepted.  The returned value only
              contains case-preserving but insensitive unique values where
              spaces around "," are removed but otherwise preserved.  Empty
              values and items are allowed.
            type: string
        type: object
  DeploymentEnvironmentAddition:
    example:
      name: production
      provider: FTP
      settings:
        environmentVariables:
          - name: my-var
            value:
              isEncrypted: false
              value: "123"
        providerSettings:
          - name: server
            value:
              isEncrypted: false
              value: ftp.myserver.com
          - name: username
            value:
              isEncrypted: false
              value: ftp-user
          - name: password
            value:
              isEncrypted: true
              value: password
    properties:
      name:
        type: string
      provider:
        $ref: "#/definitions/DeploymentProviderType"
      settings:
        $ref: "#/definitions/DeploymentEnvironmentSettings"
    required:
      - name
      - provider
      - settings
    type: object
  DeploymentEnvironmentDeploymentsResults:
    properties:
      deployments:
        items:
          $ref: "#/definitions/EnvironmentDeploymentModel"
        type: array
      environment:
        $ref: "#/definitions/DeploymentEnvironment"
    required:
      - environment
      - deployments
    type: object
  DeploymentEnvironmentLookupModel:
    properties:
      deploymentEnvironmentId:
        minimum: 0
        type: integer
      name:
        type: string
      provider:
        $ref: "#/definitions/DeploymentProviderType"
    type: object
  DeploymentEnvironmentProject:
    properties:
      isSelected:
        type: boolean
      name:
        type: string
      projectId:
        minimum: 0
        type: integer
    required:
      - projectId
      - name
      - isSelected
    type: object
  DeploymentEnvironmentSettings:
    properties:
      environmentVariables:
        items:
          $ref: "#/definitions/StoredNameValue"
        type: array
      notifications:
        items:
          $ref: "#/definitions/NotificationProviderSettings"
        type: array
      providerSettings:
        items:
          $ref: "#/definitions/StoredNameValue"
        type: array
    type: object
  DeploymentEnvironmentSettingsResults:
    properties:
      environment:
        $ref: "#/definitions/DeploymentEnvironmentWithSettings"
    type: object
  DeploymentEnvironmentWithSettings:
    allOf:
      - $ref: "#/definitions/DeploymentEnvironment"
      - properties:
          environmentAccessKey:
            type: string
          projects:
            description: |
              Projects available for selection in UI.
              Only present in response from getEnvironmentSettings.
            items:
              $ref: "#/definitions/DeploymentEnvironmentProject"
            type: array
          selectedProjects:
            description: Project IDs of selected projects
            items:
              minimum: 1
              type: integer
            type: array
          settings:
            $ref: "#/definitions/DeploymentEnvironmentSettings"
        type: object
    example:
      deploymentEnvironmentId: 3018
      environmentAccessKey: gi3ttevuk7123
      name: production
      settings:
        environmentVariables:
          - name: my-var
            value:
              isEncrypted: false
              value: "123"
        provider: FTP
        providerSettings:
          - name: server
            value:
              isEncrypted: false
              value: ftp.myserver.com
          - name: username
            value:
              isEncrypted: false
              value: ftp-user
          - name: password
            value:
              isEncrypted: true
              value: password
  DeploymentJob:
    allOf:
      - $ref: "#/definitions/Job"
      - properties:
          messagesCount:
            minimum: 0
            type: integer
        type: object
  DeploymentLookupModel:
    properties:
      build:
        $ref: "#/definitions/BuildLookupModel"
      deploymentId:
        minimum: 0
        type: integer
      finished:
        format: date-time
        type: string
      started:
        format: date-time
        type: string
      status:
        $ref: "#/definitions/Status"
    type: object
  DeploymentNotificationFrequency:
    enum:
      - all
      - none
    type: string
  DeploymentProjectSelectionMode:
    description: Project selection mode for deployment environments.
    enum:
      - 0
      - 1
      - 2
    type: integer
    x-enum-descriptions:
      - Any project can be deployed to the environment.
      - Only selected projects can be deployed to the environment.
      - All projects except the selected projects can be deployed to the environment.
    x-enum-varnames:
      - Any
      - Only Selected
      - All Except Selected
  DeploymentProvider:
    properties:
      onBranch:
        items:
          $ref: "#/definitions/StringValueObject"
        type: array
      onEnvironmentVariables:
        items:
          $ref: "#/definitions/StoredNameValue"
        type: array
      provider:
        $ref: "#/definitions/DeploymentProviderType"
      providerSettings:
        items:
          $ref: "#/definitions/StoredNameValue"
        type: array
    required:
      - provider
    type: object
  DeploymentProviderType:
    enum:
      - Agent
      - AzureBlob
      - AzureCS
      - AzureWebJob
      - BinTray
      - FTP
      - GitHub
      - NuGet
      - S3
      - SqlDatabase
      - WebDeploy
      - Webhook
    type: string
  DeploymentStartRequest:
    example:
      accountName: your-account-name
      buildJobId: sfke9239ydzf
      buildVersion: 1.2.0
      environmentName: environment-to-deploy
      environmentVariables:
        another_var: another value
        server: myserver.com
      projectSlug: project-slug-from-url
    properties:
      accountName:
        minLength: 1
        type: string
      buildJobId:
        description: Optional job id with artifacts if build contains multiple jobs.
        type: string
      buildVersion:
        description: Build to deploy
        minLength: 1
        type: string
      environmentName:
        minLength: 1
        type: string
      environmentVariables:
        additionalProperties:
          type: string
        type: object
      projectSlug:
        minLength: 1
        type: string
    required:
      - environmentName
      - accountName
      - projectSlug
      - buildVersion
    type: object
  EncryptRequest:
    example:
      plainValue: encryptme
    properties:
      plainValue:
        default: ""
        type: string
    type: object
  EnvironmentDeploymentModel:
    allOf:
      - $ref: "#/definitions/DeploymentLookupModel"
      - properties:
          project:
            $ref: "#/definitions/ProjectLookupModel"
        type: object
  Error:
    description: |
      Schema of object returned in 4XX and 5XX responses.
      Note:  The name is unfortunate, since it conflicts with `java.lang.Error`
      and other generic error classes.  It is the name used in XML responses,
      so it is used for consistency and possible future XML deserialization
      support.
    properties:
      message:
        type: string
      modelState:
        additionalProperties:
          items:
            type: string
          type: array
        description: |
          When present, this property is a map of property names in the format
          `request.<capitalized name>` to an `Array` of validation error
          message strings for the property.
        type: object
    required:
      - message
    type: object
  FeatureFlags:
    enum:
      - distv2
    type: string
  GroupName:
    enum:
      - Account
      - BuildEnvironment
      - Deny
      - Environments
      - Projects
      - Roles
      - User
      - Users
    type: string
  GroupPermissions:
    properties:
      name:
        $ref: "#/definitions/GroupName"
      permissions:
        items:
          $ref: "#/definitions/PermissionState"
        type: array
    required:
      - name
      - permissions
    type: object
  HostEntry:
    properties:
      host:
        minLength: 1
        type: string
      ip:
        minLength: 1
        type: string
    required:
      - host
      - ip
    type: object
  HttpMethodRestricted:
    enum:
      - GET
      - POST
    type: string
  InviteUserRequest:
    properties:
      email:
        format: email
        type: string
      roleId:
        minimum: 0
        type: integer
    required:
      - email
      - roleId
    type: object
  Job:
    allOf:
      - $ref: "#/definitions/Timestamped"
      - properties:
          finished:
            format: date-time
            type: string
          jobId:
            type: string
          name:
            type: string
          started:
            format: date-time
            type: string
          status:
            $ref: "#/definitions/Status"
        type: object
  JoinAccountRequest:
    properties:
      invitationId:
        minLength: 1
        type: string
    required:
      - invitationId
    type: object
  MSBuildVerbosity:
    enum:
      - quiet
      - minimal
      - normal
      - detailed
    type: string
  NotificationProviderSettings:
    properties:
      provider:
        $ref: "#/definitions/NotificationProviderType"
      settings:
        $ref: "#/definitions/NotificationSettings"
    required:
      - provider
      - settings
    type: object
  NotificationProviderType:
    enum:
      - Campfire
      - Email
      - GitHubPullRequest
      - HipChat
      - Slack
      - Webhook
      - VSOTeamRoom
    type: string
  NotificationSettings:
    description: |
      This type is the union of the settings types for each of the various
      notification types supported by the API.  The properties correspond to
      the following notification types:

      #### All Types
      - onBuildSuccess
      - onBuildFailure
      - onBuildStatusChanged

      #### Campfire
      - account
      - authToken
      - room
      - template

      #### Email
      - subjectTemplate
      - bodyTemplate
      - recipients
      - recipientsValue

      #### GitHubPullRequest
      - authToken
      - template

      #### HipChat
      - authToken
      - from
      - room
      - template
      - serverUrl

      #### Slack
      - incomingWebhookUrl
      - authToken
      - channel
      - template

      #### Webhook
      - method
      - url
      - headers
      - headersValue
      - addCustomRequestBody
      - customRequestBodyContentType
      - customRequestBody

      #### VSOTeamRoom
      - vsoAccount
      - username
      - password
      - room
      - template
    properties:
      $type:
        $ref: "#/definitions/NotificationSettingsType"
      account:
        type: string
      addCustomRequestBody:
        type: boolean
      authToken:
        $ref: "#/definitions/StoredValue"
      bodyTemplate:
        type: string
      channel:
        type: string
      customRequestBody:
        type: string
      customRequestBodyContentType:
        type: string
      from:
        type: string
      headers:
        items:
          $ref: "#/definitions/StoredNameValue"
        type: array
      headersValue:
        type: string
      incomingWebhookUrl:
        format: uri
        type: string
      method:
        $ref: "#/definitions/HttpMethodRestricted"
      onBuildFailure:
        type: boolean
      onBuildStatusChanged:
        type: boolean
      onBuildSuccess:
        type: boolean
      password:
        $ref: "#/definitions/StoredValue"
      recipients:
        items:
          $ref: "#/definitions/StringValueObject"
        type: array
      recipientsValue:
        type: string
      room:
        type: string
      serverUrl:
        format: uri
        type: string
      subjectTemplate:
        type: string
      template:
        type: string
      url:
        format: uri
        type: string
      username:
        type: string
      vsoAccount:
        type: string
    type: object
  NotificationSettingsType:
    enum:
      - Appveyor.Models.CampfireNotificationSettings, Appveyor.Models
      - Appveyor.Models.EmailNotificationSettings, Appveyor.Models
      - Appveyor.Models.GitHubPullRequestNotificationSettings, Appveyor.Models
      - Appveyor.Models.HipChatNotificationSettings, Appveyor.Models
      - Appveyor.Models.SlackNotificationSettings, Appveyor.Models
      - Appveyor.Models.WebhookNotificationSettings, Appveyor.Models
      - Appveyor.Models.VSOTeamRoomNotificationSettings, Appveyor.Models
    type: string
  NuGetFeed:
    allOf:
      - $ref: "#/definitions/Timestamped"
      - properties:
          accountId:
            minimum: 0
            type: integer
          id:
            type: string
          isPrivateProject:
            type: boolean
          name:
            type: string
          nuGetFeedId:
            type: integer
          projectId:
            minimum: 0
            type: integer
          publishingEnabled:
            type: boolean
        type: object
  OSServiceName:
    enum:
      - iis
      - mongodb
      - msmq
      - mssql2008r2sp2
      - mssql2008r2sp2rs
      - mssql2012sp1
      - mssql2012sp1rs
      - mssql2014
      - mssql2014rs
      - mssql2016
      - mysql
      - postgresql
    type: string
  OSType:
    enum:
      - Ubuntu
      - Windows
    type: string
  PermissionName:
    description: |
      Available permission names.  The names correspond to the following groups:
      #### AccountPermission
      - ManageApplicationAuthorizations
      - UpdateAccountDetails
      - UpdateBillingDetails
      #### BuildEnvironmentPermission
      - ConfigureBuildEnvironment
      #### DenyPermission
      - DenyAllProjectsEnvironments
      #### EnvironmentsPermission
      - DeployToEnvironment
      - ManageEnvironments
      - UpdateEnvironmentSettings
      #### ProjectsPermission
      - ManageProjects
      - RunProjectBuild
      - UpdateProjectSettings
      #### RolesPermission
      - AddRole
      - DeleteRole
      - UpdateRoleDetails
      #### UserPermission
      - ConfigureApiKeys
      #### UsersPermission
      - AddUser
      - DeleteUser
      - UpdateUserDetails
    enum:
      - ManageApplicationAuthorizations
      - UpdateAccountDetails
      - UpdateBillingDetails
      - ConfigureBuildEnvironment
      - DenyAllProjectsEnvironments
      - DeployToEnvironment
      - ManageEnvironments
      - UpdateEnvironmentSettings
      - ManageProjects
      - RunProjectBuild
      - UpdateProjectSettings
      - AddRole
      - DeleteRole
      - UpdateRoleDetails
      - ConfigureApiKeys
      - AddUser
      - DeleteUser
      - UpdateUserDetails
    type: string
  PermissionState:
    properties:
      allowed:
        description: |
          State of the named permission.  `true` to allow, `false` to deny,
          missing to inherit.
        type: boolean
      description:
        type: string
      name:
        $ref: "#/definitions/PermissionName"
    required:
      - name
    type: object
  PlanName:
    enum:
      - free
    type: string
  PlanStatus:
    enum:
      - active
    type: string
  PlatformName:
    enum:
      - ARM
      - Any CPU
      - x64
      - x86
    type: string
  Project:
    allOf:
      - $ref: "#/definitions/ProjectLookupModel"
      - $ref: "#/definitions/Timestamped"
      - properties:
          accountId:
            minimum: 0
            readOnly: true
            type: integer
          alwaysBuildClosedPullRequests:
            type: boolean
          builds:
            description: Only non-empty for response from getProjects.
            items:
              $ref: "#/definitions/Build"
            readOnly: true
            type: array
          currentBuildId:
            minimum: 0
            type: integer
          disablePullRequestWebhooks:
            type: boolean
          disablePushWebhooks:
            type: boolean
          enableDeploymentInPullRequests:
            type: boolean
          enableSecureVariablesInPullRequests:
            type: boolean
          enableSecureVariablesInPullRequestsFromSameRepo:
            type: boolean
          isGitHubApp:
            type: boolean
          isPrivate:
            type: boolean
          nuGetFeed:
            $ref: "#/definitions/NuGetFeed"
            description: Not present in response from addProject.
          repositoryBranch:
            description: Not present in response from addProject.
            type: string
          repositoryName:
            type: string
          repositoryScm:
            $ref: "#/definitions/RepositoryScm"
          repositoryType:
            $ref: "#/definitions/RepositoryProvider"
          rollingBuilds:
            type: boolean
          rollingBuildsDoNotCancelRunningBuilds:
            type: boolean
          rollingBuildsOnlyForPullRequests:
            type: boolean
          saveBuildCacheInPullRequests:
            type: boolean
          securityDescriptor:
            $ref: "#/definitions/SecurityDescriptor"
            description: Not present in response from addProject. Not always present in response from getProjects (only after updateProject or startBuild?).
          skipBranchesWithoutAppveyorYml:
            type: boolean
          tags:
            description: |-
              Comma-separated list of project tags for dynamic grouping.
              Appears that any input is accepted.  The returned value only
              contains case-preserving but insensitive unique values where
              spaces around "," are removed but otherwise preserved.  Empty
              values and items are allowed.
            type: string
        required:
          - repositoryName
        type: object
  ProjectAddition:
    description: "`repositoryAuthentication` is only used for git, mercurial, subversion `repositoryProvider`."
    example:
      repositoryName: FeodorFitsner/demo-app
      repositoryProvider: gitHub
    properties:
      repositoryAuthentication:
        $ref: "#/definitions/RepositoryAuthenticationType"
      repositoryName:
        description: URL when repositoryProvider is git, mercurial, subversion username/project when repositoryProvider is gitHub
        minLength: 1
        type: string
      repositoryPassword:
        description: Required if repositoryAuthentication is credentials
        format: password
        type: string
      repositoryProvider:
        $ref: "#/definitions/RepositoryProvider"
      repositoryUsername:
        description: Required if repositoryAuthentication is credentials
        type: string
    required:
      - repositoryProvider
      - repositoryName
    type: object
  ProjectBranchesMode:
    enum:
      - exclude
      - include
    type: string
  ProjectBuildNumberUpdate:
    example:
      nextBuildNumber: 35
    properties:
      nextBuildNumber:
        minimum: 0
        type: integer
    required:
      - nextBuildNumber
    type: object
  ProjectBuildResults:
    properties:
      build:
        $ref: "#/definitions/Build"
      project:
        $ref: "#/definitions/Project"
    type: object
  ProjectConfiguration:
    properties:
      afterBuildScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      afterDeployScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      afterTestScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      artifacts:
        items:
          $ref: "#/definitions/Artifact"
        type: array
      assemblyFileVersionFormat:
        type: string
      assemblyInfoFile:
        type: string
      assemblyInformationalVersionFormat:
        type: string
      assemblyVersionFormat:
        type: string
      beforeBuildScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      beforeDeployScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      beforePackageScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      beforeTestScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      branchesMode:
        $ref: "#/definitions/ProjectBranchesMode"
      buildCloud:
        items:
          $ref: "#/definitions/StringValueObject"
        type: array
      buildMode:
        $ref: "#/definitions/BuildMode"
      buildScripts:
        description: Only set/used when `buildMode` is `script`.
        items:
          $ref: "#/definitions/Script"
        type: array
      cacheEntries:
        items:
          $ref: "#/definitions/StringValueObject"
        type: array
      cloneDepth:
        minimum: 1
        type: integer
      cloneFolder:
        type: string
      cloneScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      configuration:
        items:
          $ref: "#/definitions/StringValueObject"
        type: array
      configureNuGetAccountSource:
        type: boolean
      configureNuGetProjectSource:
        type: boolean
      deployMode:
        $ref: "#/definitions/DeployMode"
      deployScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      deployments:
        items:
          $ref: "#/definitions/DeploymentProvider"
        type: array
      disableNuGetPublishForOctopusPackages:
        type: boolean
      disableNuGetPublishOnPullRequests:
        type: boolean
      doNotIncrementBuildNumberOnPullRequests:
        type: boolean
      dotnetCsprojAssemblyVersionFormat:
        type: string
      dotnetCsprojFile:
        type: string
      dotnetCsprojFileVersionFormat:
        type: string
      dotnetCsprojInformationalVersionFormat:
        type: string
      dotnetCsprojPackageVersionFormat:
        type: string
      dotnetCsprojVersionFormat:
        type: string
      environmentVariables:
        items:
          $ref: "#/definitions/StoredNameValue"
        type: array
      environmentVariablesMatrix:
        items:
          $ref: "#/definitions/StoredNameValueMatrix"
        type: array
      excludeBranches:
        items:
          $ref: "#/definitions/StringValueObject"
        type: array
      forceHttpsClone:
        type: boolean
      hostsEntries:
        items:
          $ref: "#/definitions/HostEntry"
        type: array
      hotFixScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      includeBranches:
        items:
          $ref: "#/definitions/StringValueObject"
        type: array
      includeNuGetReferences:
        type: boolean
      initScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      installScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      matrixAllowFailures:
        description: Although the names and values are not enforced, the combinations which are meaningful are documented at https://www.appveyor.com/docs/build-configuration/#allow-failing-jobs
        items:
          $ref: "#/definitions/StoredNameValueMatrix"
        type: array
      matrixExcept:
        items:
          $ref: "#/definitions/StoredNameValueMatrix"
        type: array
      matrixExclude:
        items:
          $ref: "#/definitions/StoredNameValueMatrix"
        type: array
      matrixFastFinish:
        type: boolean
      matrixOnly:
        items:
          $ref: "#/definitions/StoredNameValueMatrix"
        type: array
      maxJobs:
        minimum: 1
        type: integer
      msBuildInParallel:
        type: boolean
      msBuildProjectFileName:
        type: string
      msBuildVerbosity:
        $ref: "#/definitions/MSBuildVerbosity"
      notifications:
        items:
          $ref: "#/definitions/NotificationProviderSettings"
        type: array
      onBuildErrorScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      onBuildFinishScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      onBuildSuccessScripts:
        items:
          $ref: "#/definitions/Script"
        type: array
      onlyCommitsFiles:
        items:
          $ref: "#/definitions/StringValueObject"
        type: array
      operatingSystem:
        items:
          properties:
            value:
              $ref: "#/definitions/BuildWorkerImageName"
          required:
            - value
          type: object
        title: Build worker image
        type: array
      packageAspNetCoreProjects:
        type: boolean
      packageAzureCloudServiceProjects:
        type: boolean
      packageDotnetConsoleProjects:
        type: boolean
      packageNuGetProjects:
        type: boolean
      packageNuGetSymbols:
        type: boolean
      packageWebApplicationProjects:
        type: boolean
      packageWebApplicationProjectsBeanstalk:
        type: boolean
      packageWebApplicationProjectsOctopus:
        type: boolean
      packageWebApplicationProjectsXCopy:
        type: boolean
      patchAssemblyInfo:
        type: boolean
      patchDotnetCsproj:
        type: boolean
      platform:
        items:
          properties:
            value:
              $ref: "#/definitions/PlatformName"
          required:
            - value
          type: object
        type: array
      services:
        items:
          properties:
            value:
              $ref: "#/definitions/OSServiceName"
          required:
            - value
          type: object
        title: OS services to start during the build process
        type: array
      shallowClone:
        type: boolean
      skipBranchWithPullRequests:
        type: boolean
      skipCommitsFiles:
        items:
          $ref: "#/definitions/StringValueObject"
        type: array
      skipNonTags:
        type: boolean
      skipTags:
        type: boolean
      stacks:
        items:
          $ref: "#/definitions/UnknownType"
        maxItems: 0
        type: array
      testAssemblies:
        items:
          $ref: "#/definitions/StringValueObject"
        type: array
      testCategories:
        items:
          $ref: "#/definitions/StringValueObject"
        type: array
      testCategoriesMatrix:
        items:
          properties:
            categories:
              items:
                $ref: "#/definitions/StringValueObject"
              type: array
          type: object
        type: array
      testCategoriesMode:
        enum:
          - exclude
          - include
        type: string
      testMode:
        $ref: "#/definitions/TestMode"
      testScripts:
        description: Only set/used when `testMode` is `script`.
        items:
          $ref: "#/definitions/Script"
        type: array
      xamarinRegisterAndroidProduct:
        type: boolean
      xamarinRegisterIosProduct:
        type: boolean
    type: object
  ProjectDeployment:
    properties:
      deployment:
        $ref: "#/definitions/Deployment"
      project:
        $ref: "#/definitions/Project"
    required:
      - project
      - deployment
    type: object
  ProjectDeploymentModel:
    allOf:
      - $ref: "#/definitions/DeploymentLookupModel"
      - properties:
          environment:
            $ref: "#/definitions/DeploymentEnvironmentLookupModel"
        type: object
  ProjectDeploymentsResults:
    properties:
      deployments:
        items:
          $ref: "#/definitions/ProjectDeploymentModel"
        type: array
      project:
        $ref: "#/definitions/Project"
    type: object
  ProjectHistory:
    properties:
      builds:
        items:
          $ref: "#/definitions/Build"
        type: array
      project:
        $ref: "#/definitions/Project"
    type: object
  ProjectLookupModel:
    properties:
      accountName:
        readOnly: true
        type: string
      name:
        type: string
      projectId:
        minimum: 0
        type: integer
      slug:
        readOnly: true
        type: string
    required:
      - projectId
    type: object
  ProjectSettingsResults:
    example:
      build:
        project: MySolution.sln
        publish_wap: true
        verbosity: minimal
      version: 1.0.{build}
    properties:
      buildClouds:
        items:
          $ref: "#/definitions/StringValueObject"
        type: array
      defaultImageName:
        type: string
      images:
        items:
          $ref: "#/definitions/BuildWorkerImage"
        type: array
      project:
        $ref: "#/definitions/Project"
      settings:
        $ref: "#/definitions/ProjectWithConfiguration"
    type: object
  ProjectWithConfiguration:
    allOf:
      - $ref: "#/definitions/Project"
      - example:
          accountId: 2
          accountName: appvyr
          builds: []
          configuration:
            afterBuildScripts: []
            afterDeployScripts: []
            afterTestScripts: []
            artifacts: []
            assemblyFileVersionFormat: "{version}"
            assemblyInfoFile: "**\\AssemblyInfo.*"
            assemblyInformationalVersionFormat: "{version}"
            assemblyVersionFormat: "{version}"
            beforeBuildScripts: []
            beforeDeployScripts: []
            beforeTestScripts: []
            buildMode: msbuild
            buildScripts: []
            configuration: []
            deployMode: providers
            deployScripts: []
            deployments: []
            environmentVariables: []
            environmentVariablesMatrix: []
            excludeBranches: []
            hostsEntries: []
            includeBranches: []
            initScripts: []
            installScripts: []
            matrixAllowFailures: []
            matrixFastFinish: false
            msBuildVerbosity: minimal
            notifications: []
            onBuildErrorScripts: []
            onBuildSuccessScripts: []
            operatingSystem: []
            packageAzureCloudServiceProjects: false
            packageNuGetProjects: false
            packageWebApplicationProjects: false
            packageWebApplicationProjectsXCopy: false
            patchAssemblyInfo: false
            platform: []
            services: []
            shallowClone: false
            testAssemblies: []
            testCategories: []
            testCategoriesMatrix: []
            testMode: auto
            testScripts: []
          created: 2014-08-16T00:52:15.6604826+00:00
          ignoreAppveyorYml: false
          isPrivate: false
          name: demo-app
          nextBuildNumber: 1
          nuGetFeed:
            created: 2014-08-16T00:52:16.9886427+00:00
            id: demo-app-tw5iw2wk3bl1
            name: Project demo-app
            publishingEnabled: false
          projectId: 43682
          repositoryBranch: master
          repositoryName: FeodorFitsner/demo-app
          repositoryScm: git
          repositoryType: gitHub
          securityDescriptor:
            accessRightDefinitions:
              - description: View
                name: View
              - description: Run build
                name: RunBuild
              - description: Update settings
                name: Update
              - description: Delete project
                name: Delete
            roleAces:
              - accessRights:
                  - allowed: true
                    name: View
                  - allowed: true
                    name: RunBuild
                  - allowed: true
                    name: Update
                  - allowed: true
                    name: Delete
                isAdmin: true
                name: Administrator
                roleId: 4
              - accessRights:
                  - name: View
                  - name: RunBuild
                  - name: Update
                  - name: Delete
                isAdmin: false
                name: User
                roleId: 5
          skipBranchesWithoutAppveyorYml: false
          slug: demo-app-335
          versionFormat: 1.0.{build}
          webhookId: rca5vb5qqu
          webhookUrl: https://ci.appveyor.com/api/github/webhook?id=rca5vb5qqu
        properties:
          buildPriority:
            minimum: 1
            type: integer
          configuration:
            $ref: "#/definitions/ProjectConfiguration"
          customYmlName:
            type: string
          ignoreAppveyorYml:
            type: boolean
          nextBuildNumber:
            type: integer
          repositoryAuthentication:
            $ref: "#/definitions/RepositoryAuthenticationType"
          repositoryUsername:
            type: string
          scheduleCrontabExpression:
            description: Build schedule as an NCrontab Expression.  See https://github.com/atifaziz/NCrontab/wiki/Crontab-Expression
            externalDocs:
              url: https://www.appveyor.com/docs/build-configuration/#scheduled-builds
            type: string
          sshPublicKey:
            type: string
          statusBadgeId:
            type: string
          versionFormat:
            minLength: 7
            pattern: "[{]build[}]"
            type: string
          webhookId:
            type: string
          webhookUrl:
            format: uri
            type: string
        required:
          - versionFormat
          - configuration
        type: object
    type: object
  ReRunBuildRequest:
    example:
      buildId: 23864
      reRunIncomplete: true
    properties:
      buildId:
        minimum: 0
        type: integer
      reRunIncomplete:
        description: Set `reRunIncomplete` set to `false` (default value) for full build re-run. Set it set to `true` to rerun only failed or cancelled jobs in multijob build.
        type: boolean
    required:
      - buildId
    type: object
  RepositoryAuthenticationType:
    enum:
      - credentials
      - ssh
    type: string
  RepositoryProvider:
    enum:
      - bitBucket
      - git
      - gitHub
      - gitLab
      - kiln
      - mercurial
      - stash
      - subversion
      - vso
    type: string
  RepositoryScm:
    enum:
      - git
      - mercurial
      - subversion
    type: string
  Role:
    allOf:
      - $ref: "#/definitions/Timestamped"
      - properties:
          isSystem:
            readOnly: true
            type: boolean
          name:
            minLength: 1
            type: string
          roleId:
            minimum: 0
            type: integer
        required:
          - roleId
          - name
        type: object
    description: |
      Technically `roleId` has default value 0 and is not required, but
      since role 0 never exists it would always cause a 404 response.
  RoleAce:
    properties:
      accessRights:
        items:
          $ref: "#/definitions/AceAccessRight"
        type: array
      isAdmin:
        type: boolean
      name:
        type: string
      roleId:
        minimum: 0
        type: integer
    type: object
  RoleAddition:
    example:
      name: My Role
    properties:
      name:
        minLength: 1
        type: string
    required:
      - name
    type: object
  RoleWithGroups:
    allOf:
      - $ref: "#/definitions/Role"
      - properties:
          groups:
            items:
              $ref: "#/definitions/GroupPermissions"
            type: array
        type: object
    example:
      created: 2014-03-18T20:12:08.4749886+00:00
      groups:
        - name: Deny
          permissions:
            - allowed: false
              description: Deny all projects and environments, unless explicitly allowed
              name: DenyAllProjectsEnvironments
        - name: Projects
          permissions:
            - allowed: true
              description: Create, delete projects, update project settings
              name: ManageProjects
            - allowed: true
              description: Update project settings
              name: UpdateProjectSettings
            - allowed: false
              description: Run project builds
              name: RunProjectBuild
            - allowed: false
              description: Delete project builds
              name: DeleteProjectBuilds
        - name: Environments
          permissions:
            - allowed: false
              description: Create, delete projects, update environment settings
              name: ManageEnvironments
            - allowed: false
              description: Update environment settings
              name: UpdateEnvironmentSettings
            - allowed: false
              description: Deploy to environment
              name: DeployToEnvironment
        - name: Account
          permissions:
            - allowed: false
              description: Update account details
              name: UpdateAccountDetails
        - name: Users
          permissions:
            - allowed: false
              description: Add new user
              name: AddUser
            - allowed: false
              description: Update user details
              name: UpdateUserDetails
            - allowed: false
              description: Delete user
              name: DeleteUser
        - name: Roles
          permissions:
            - allowed: false
              description: Add new role
              name: AddRole
            - allowed: false
              description: Update role details
              name: UpdateRoleDetails
            - allowed: false
              description: Delete role
              name: DeleteRole
        - name: User
          permissions:
            - allowed: false
              description: Generate API keys
              name: ConfigureApiKeys
      isSystem: false
      name: My Role
      roleId: 3040
  Script:
    properties:
      language:
        $ref: "#/definitions/ScriptLanguage"
      script:
        type: string
    required:
      - script
    type: object
  ScriptLanguage:
    enum:
      - cmd
      - ps
      - pwsh
      - sh
    type: string
    x-enum-descriptions:
      - Command Prompt/Batch Script/cmd.exe
      - PowerShell
      - PowerShell Core
      - POSIX shell
  SecurityDescriptor:
    properties:
      accessRightDefinitions:
        items:
          $ref: "#/definitions/AceAccessRightDefinition"
        type: array
      roleAces:
        items:
          $ref: "#/definitions/RoleAce"
        type: array
    type: object
  SessionModel:
    properties:
      accounts:
        items:
          $ref: "#/definitions/SessionUserAccountModel"
        type: array
      setupRequired:
        type: boolean
      twoFactorAuthRequired:
        type: boolean
      user:
        $ref: "#/definitions/SessionUserModel"
    type: object
  SessionUserAccountModel:
    allOf:
      - $ref: "#/definitions/Timestamped"
      - properties:
          accountId:
            minimum: 0
            readOnly: true
            type: integer
          allowCustomBuildEnvironment:
            type: boolean
          blocked:
            type: boolean
          featureFlags:
            $ref: "#/definitions/FeatureFlags"
          gitHubPlan:
            type: boolean
          gitHubPlanOrg:
            type: string
          isCollaborator:
            readOnly: true
            type: boolean
          isEnterprisePlan:
            type: boolean
          isOwner:
            readOnly: true
            type: boolean
          manualPayments:
            type: boolean
          name:
            readOnly: true
            type: string
          permissions:
            items:
              $ref: "#/definitions/PermissionName"
            type: array
          planEnd:
            format: date-time
            readOnly: true
            type: string
          planId:
            $ref: "#/definitions/PlanName"
          planStart:
            format: date-time
            readOnly: true
            type: string
          planStatus:
            $ref: "#/definitions/PlanStatus"
          roleId:
            minimum: 0
            type: integer
          roleName:
            readOnly: true
            type: string
          timeZoneId:
            type: string
          unpaid:
            type: boolean
          unverified:
            type: boolean
        type: object
  SessionUserModel:
    allOf:
      - $ref: "#/definitions/Timestamped"
      - properties:
          bitBucketUsername:
            type: string
          email:
            format: email
            type: string
          fullName:
            type: string
          gitHubUsername:
            type: string
          gitLabUserId:
            type: string
          gravatarHash:
            type: string
          pageSize:
            minimum: 0
            readOnly: true
            type: integer
          twoFactorAuthEnabled:
            type: boolean
          userId:
            minimum: 0
            readOnly: true
            type: integer
          vsoUsername:
            type: string
        required:
          - userId
          - email
        type: object
  Status:
    enum:
      - cancelled
      - cancelling
      - failed
      - queued
      - running
      - starting
      - success
    type: string
  StoredNameValue:
    properties:
      name:
        minLength: 1
        type: string
      value:
        $ref: "#/definitions/StoredValue"
    required:
      - name
      - value
    type: object
  StoredNameValueMatrix:
    properties:
      variables:
        $ref: "#/definitions/StoredNameValue"
    type: object
  StoredValue:
    properties:
      isEncrypted:
        type: boolean
      value:
        description: |-
          Encrypted values can be created using the encryptValue operation.

          Empty environment variables are represented by missing (null) value
          rather than an empty string.
        type: string
    type: object
  StringValueObject:
    properties:
      value:
        type: string
    type: object
  TestMode:
    enum:
      - auto
      - none
      - script
    type: string
  Timestamped:
    properties:
      created:
        format: date-time
        readOnly: true
        type: string
      updated:
        format: date-time
        readOnly: true
        type: string
    type: object
  UnknownType:
    description: |
      A schema for values which have an undocumented/unknown type.

      Although the type of such values could be left unspecified according to
      JSON Schema (and by extension OpenAPI 2.0), such unspecified types cause
      tool failures (e.g. swagger-codegen).  So this type can be used as a
      placeholder to prevent errors and document the behavior.
    enum:
      - unknown
    type: string
  UserAccount:
    allOf:
      - $ref: "#/definitions/Timestamped"
      - properties:
          accountId:
            minimum: 0
            readOnly: true
            type: integer
          accountName:
            readOnly: true
            type: string
          email:
            format: email
            type: string
          fullName:
            type: string
          isCollaborator:
            readOnly: true
            type: boolean
          isOwner:
            readOnly: true
            type: boolean
          pageSize:
            minimum: 0
            readOnly: true
            type: integer
          password:
            format: password
            minLength: 1
            type: string
          roleId:
            minimum: 0
            type: integer
          roleName:
            readOnly: true
            type: string
          twoFactorAuthEnabled:
            type: boolean
          userId:
            minimum: 0
            type: integer
        required:
          - fullName
          - email
        type: object
    example:
      email: john@smith.com
      failedBuildNotification: all
      fullName: John Smith
      notifyWhenBuildStatusChangedOnly: true
      roleId: 4
      successfulBuildNotification: all
      userId: 3019
  UserAccountRolesResults:
    description: The roles property contains all roles, not only the role for which the user is a member.
    properties:
      roles:
        items:
          $ref: "#/definitions/Role"
        type: array
      user:
        $ref: "#/definitions/UserAccount"
    type: object
  UserAccountSettings:
    properties:
      failedBuildNotification:
        $ref: "#/definitions/BuildNotificationFrequency"
      failedDeploymentNotification:
        $ref: "#/definitions/DeploymentNotificationFrequency"
      notifyWhenBuildStatusChangedOnly:
        default: false
        description: |
          Note that this value is `true` on user creation, but behaves as
          `false` when not specified on update.
        type: boolean
      notifyWhenDeploymentStatusChangedOnly:
        default: false
        description: |
          Note that this value is `true` on user creation, but behaves as
          `false` when not specified on update.
        type: boolean
      successfulBuildNotification:
        $ref: "#/definitions/BuildNotificationFrequency"
      successfulDeploymentNotification:
        $ref: "#/definitions/DeploymentNotificationFrequency"
    required:
      - successfulBuildNotification
      - failedBuildNotification
      - successfulDeploymentNotification
      - failedDeploymentNotification
    type: object
  UserInvitationModel:
    properties:
      accountId:
        readOnly: true
        type: integer
      accountName:
        readOnly: true
        type: string
      created:
        format: date-time
        readOnly: true
        type: string
      email:
        format: email
        type: string
      roleId:
        minimum: 0
        type: integer
      roleName:
        readOnly: true
        type: string
      userInvitationId:
        minLength: 1
        readOnly: true
        type: string
    required:
      - userInvitationId
      - email
      - roleId
      - accountId
      - created
    type: object
