All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ke.appveyor.appveyor-swagger.0.2.10.source-code.swagger.yaml Maven / Gradle / Ivy

Go to download

AppVeyor REST API Client generated from the unofficial Swagger API definition in Java.

The newest version!
swagger: '2.0'

# API metadata
info:
  title: AppVeyor REST API
  version: 0.20170106.0
  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.
  contact:
    name: AppVeyor Team
    email: [email protected]
    url: https://www.appveyor.com/about/
  termsOfService: https://www.appveyor.com/terms-of-service/
  license:
    name: AppVeyor End User License Agreement (EULA)
    url: https://www.appveyor.com/eula/
  x-logo:
    url: https://www.appveyor.com/assets/img/appveyor-logo-256.png
  x-unofficialSpec: true

# Link to published docs
externalDocs:
  description: AppVeyor REST API Documentation
  url: https://www.appveyor.com/docs/api/

# Domain of the service
host: ci.appveyor.com

# Protocols the API supports
schemes:
  - https

# Path prefix for API paths
basePath: /api

# Supported request types (Content-Type)
consumes:
  - application/json

# Supported response types (Accept)
produces:
  - application/json
  - application/xml

securityDefinitions:
  # OpenAPI v3.0 definition:
  #apiToken:
  #  type: http
  #  scheme: bearer
  apiToken:
    description: >-
      API token can be acquired from https://ci.appveyor.com/api-token

      This value must be passed to the server in the `Authorization` header
      as `"Bearer "`.  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 "`.

      Note that this should be [fixed in OpenAPI
      3.0](https://github.com/OAI/OpenAPI-Specification/pull/807)), whenever
      that becomes available and supported.
    type: apiKey
    in: header
    name: Authorization

security:
  - apiToken: []

tags:
- 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/team/
- name: Build
  externalDocs:
    url: https://www.appveyor.com/docs/api/projects-builds/
- name: Project
  externalDocs:
    url: https://www.appveyor.com/docs/api/projects-builds/
- name: Deployment
  externalDocs:
    url: https://www.appveyor.com/docs/api/environments-deployments/
- name: Environment
  externalDocs:
    url: https://www.appveyor.com/docs/api/environments-deployments/

parameters:
  ### {{{ Teams
  roleId:
    name: roleId
    in: path
    description: Role ID
    type: integer
    required: true
    minimum: 0
  userId:
    name: userId
    in: path
    description: User ID
    type: integer
    required: true
    minimum: 0

  ### }}}
  ### {{{ Projects and Builds
  accountName:
    name: accountName
    in: path
    description: AppVeyor account name (`accountName` property of `UserAccount`)
    type: string
    required: true
    minLength: 1
  all:
    name: all
    in: query
    description: |-
      Include not only `successful`, but also jobs with `failed`, and
      `cancelled` status.
    type: boolean
    default: false
  artifactFileName:
    name: artifactFileName
    in: path
    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.
    type: string
    required: true
    minLength: 1
  badgeRepoProvider:
    name: badgeRepoProvider
    in: path
    description: Repository provider supported for badges
    type: string
    # Note: Values are case-insensitive.
    #       Match capitalization of RepositoryProvider for ease of use.
    enum:
    - bitBucket
    - gitHub
    required: true
  branch:
    name: branch
    in: query
    description: Repository Branch
    type: string
    minLength: 1
  buildBranch:
    name: buildBranch
    in: path
    description: Build Branch
    type: string
    required: true
  buildVersion:
    name: buildVersion
    in: path
    description: Build Version (`version` property of `Build`)
    type: string
    required: true
  job:
    name: job
    in: query
    description: Name of the build job.
    type: string
  jobId:
    name: jobId
    in: path
    description: Build ID (`jobId` property of `BuildJob`)
    type: string
    required: true
  pr:
    name: pr
    in: query
    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.
    type: boolean
  projectSlug:
    name: projectSlug
    in: path
    description: Project Slug
    type: string
    required: true
  repoAccountName:
    name: repoAccountName
    in: path
    description: Account name with repository provider
    type: string
    required: true
    minLength: 1
  repoSlug:
    name: repoSlug
    in: path
    description: Slug (URL component) of repository.
    type: string
    required: true
    minLength: 1
  recordsNumber:
    name: recordsNumber
    in: query
    description: Number of results to include in the response.
    type: integer
    minimum: 0
    required: true
  startBuildId:
    description: Maximum `buildId` to include in the results (exclusive).
    name: startBuildId
    in: query
    type: integer
    minimum: 0
  statusBadgeId:
    name: statusBadgeId
    in: path
    description: >-
      ID of the status badge (`statusBadgeId` from `ProjectWithConfiguration`).
    type: string
    minLength: 1
    required: true
  tag:
    name: tag
    in: query
    description: A git (or other VCS) tag
    type: string
    minLength: 1

  ### {{{ Status badges
  failingText:
    name: failingText
    in: query
    description: Text to show in badge when build is failing.
    type: string
    # Parameter can be unspecified (not present), but can't be empty
    minLength: 1
  passingText:
    name: passingText
    in: query
    description: Text to show in badge when build is passing.
    type: string
    # Parameter can be unspecified (not present), but can't be empty
    minLength: 1
  pendingText:
    name: pendingText
    in: query
    description: Text to show in badge when build is pending.
    type: string
    # Parameter can be unspecified (not present), but can't be empty
    minLength: 1
  retina:
    name: retina
    in: query
    description: >-
      Return a larger image suitable for retina displays?  Exclusive with `svg`.
    type: boolean
    default: false
  svg:
    name: svg
    in: query
    description: Return an SVG image instead of PNG?  Exclusive with `retina`.
    type: boolean
    default: false
  ### }}}

  ### }}}
  ### {{{ Environments and Deployments
  deploymentId:
    name: deploymentId
    in: path
    description: Deployment ID (`deploymentId` property of `Deployment`)
    type: integer
    minimum: 0
    required: true
  deploymentEnvironmentId:
    name: deploymentEnvironmentId
    in: path
    description: >
      Deployment Environment ID (`deploymentEnvironmentId` property of
      `DeploymentEnvironment`)
    type: integer
    minimum: 0
    required: true
  ### }}}

definitions:
  Error:
    type: object
    properties:
      message:
        type: string
      modelState:
        description: |
          When present, this property is a map of property names in the format
          `request.` to an `Array` of validation error
          message strings for the property.
        type: object
        additionalProperties:
          type: array
          items:
            type: string
    required: [message]

  Timestamped:
    type: object
    properties:
      created:
        readOnly: true
        type: string
        format: date-time
      updated:
        readOnly: true
        type: string
        format: date-time

  ### {{{ Teams
  BuildNotificationFrequency:
    type: string
    enum: [all, myCommits, none]

  DeploymentNotificationFrequency:
    type: string
    enum: [all, none]

  CollaboratorAddition:
    description: |
      Technically `roleId` has default value 0 and is not required, but
      since role 0 never exists it would always cause a 404 response.
    type: object
    properties:
      email:
        type: string
        format: email
      roleId:
        type: integer
        minimum: 0
    # Tested with POST /collaborators 2016-12-29
    required: [email, roleId]
    example:
      email: [email protected]
      roleId: 3040

  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.
    type: object
    properties:
      userId:
        type: integer
        minimum: 0
      roleId:
        type: integer
        minimum: 0
    # Tested with POST /collaborators 2016-12-29
    required: [userId, roleId]
    example:
      userId: 2018
      roleId: 3040

  PermissionName:
    description: |
      Available permission names.  The names correspond to the following groups:
      #### AccountPermission
      - ManageApplicationAuthorizations
      - UpdateAccountDetails
      - UpdateBillingDetails
      #### BuildEnvironmentPermission
      - ConfigureBuildEnvironment
      #### EnvironmentsPermission
      - DeployToEnvironment
      - ManageEnvironments
      - UpdateEnvironmentSettings
      #### ProjectsPermission
      - ManageProjects
      - RunProjectBuild
      - UpdateProjectSettings
      #### RolesPermission
      - AddRole
      - DeleteRole
      - UpdateRoleDetails
      #### UserPermission
      - ConfigureApiKeys
      #### UsersPermission
      - AddUser
      - DeleteUser
      - UpdateUserDetails
    type: string
    enum:
    # AccountPermission:
    - ManageApplicationAuthorizations
    - UpdateAccountDetails
    - UpdateBillingDetails
    # BuildEnvironmentPermission:
    - ConfigureBuildEnvironment
    # EnvironmentsPermission:
    - DeployToEnvironment
    - ManageEnvironments
    - UpdateEnvironmentSettings
    # ProjectsPermission:
    - ManageProjects
    - RunProjectBuild
    - UpdateProjectSettings
    # RolesPermission:
    - AddRole
    - DeleteRole
    - UpdateRoleDetails
    # UserPermission:
    - ConfigureApiKeys
    # UsersPermission:
    - AddUser
    - DeleteUser
    - UpdateUserDetails

  PermissionState:
    type: object
    properties:
      name:
        $ref: '#/definitions/PermissionName'
      description:
        type: string
      allowed:
        description: |
          State of the named permission.  `true` to allow, `false` to deny,
          missing to inherit.
        type: boolean
    required: [name]

  GroupName:
    type: string
    enum:
    - Account
    - BuildEnvironment
    - Environments
    - Projects
    - Roles
    - User
    - Users

  GroupPermissions:
    type: object
    properties:
      name:
        $ref: '#/definitions/GroupName'
      permissions:
        type: array
        items:
          $ref: '#/definitions/PermissionState'
    required: [name, permissions]

  RoleAddition:
    type: object
    properties:
      name:
        type: string
        minLength: 1
    required: [name]
    example:
      name: My Role

  Role:
    description: |
      Technically `roleId` has default value 0 and is not required, but
      since role 0 never exists it would always cause a 404 response.
    allOf:
    - $ref: '#/definitions/Timestamped'
    - type: object
      properties:
        roleId:
          type: integer
          minimum: 0
        name:
          type: string
          # Tested with PUT /api/roles 2016-12-29
          minLength: 1
        isSystem:
          type: boolean
          readOnly: true
      # Tested with PUT /api/roles 2016-12-29
      # Technically roleId
      required: [roleId, name]

  RoleWithGroups:
    allOf:
    - $ref: '#/definitions/Role'
    - type: object
      properties:
        groups:
          type: array
          items:
            $ref: '#/definitions/GroupPermissions'
    example:
      roleId: 3040
      name: My Role
      isSystem: false
      created: '2014-03-18T20:12:08.4749886+00:00'
      groups:
      - name: Projects
        permissions:
        - name: ManageProjects
          description: Create, delete projects, update project settings
          allowed: true
        - name: UpdateProjectSettings
          description: Update project settings
          allowed: true
        - name: RunProjectBuild
          description: Run project builds
          allowed: false
        - name: DeleteProjectBuilds
          description: Delete project builds
          allowed: false
      - name: Environments
        permissions:
        - name: ManageEnvironments
          description: Create, delete projects, update environment settings
          allowed: false
        - name: UpdateEnvironmentSettings
          description: Update environment settings
          allowed: false
        - name: DeployToEnvironment
          description: Deploy to environment
          allowed: false
      - name: Account
        permissions:
        - name: UpdateAccountDetails
          description: Update account details
          allowed: false
      - name: Users
        permissions:
        - name: AddUser
          description: Add new user
          allowed: false
        - name: UpdateUserDetails
          description: Update user details
          allowed: false
        - name: DeleteUser
          description: Delete user
          allowed: false
      - name: Roles
        permissions:
        - name: AddRole
          description: Add new role
          allowed: false
        - name: UpdateRoleDetails
          description: Update role details
          allowed: false
        - name: DeleteRole
          description: Delete role
          allowed: false
      - name: User
        permissions:
        - name: ConfigureApiKeys
          description: Generate API keys
          allowed: false

  UserAddition:
    type: object
    properties:
      fullName:
        type: string
      email:
        type: string
        format: email
      roleId:
        description: |
          Technically `roleId` has default value 0 and is not required, but
          since role 0 never exists it would always cause a 404 response.
        type: integer
        minimum: 0
      generatePassword:
        type: boolean
      password:
        # Note: Could require/forbid password based on generatePassword
        #       using JSON Schema oneOf but it is not allowed by Swagger spec
        # https://github.com/OAI/OpenAPI-Specification/issues/333
        # https://github.com/OAI/OpenAPI-Specification/pull/741
        type: string
        minLength: 1
        format: password
      confirmPassword:
        # FIXME: Can't think of a way to validate equality with password
        # https://stackoverflow.com/a/27610799
        type: string
        minLength: 1
        format: password
    required: [fullName, email, roleId]
    example:
      fullName: John Smith
      email: [email protected]
      roleId: 4
      generatePassword: false
      password: password
      confirmPassword: password

  UserAccountSettings:
    type: object
    properties:
      successfulBuildNotification:
        $ref: '#/definitions/BuildNotificationFrequency'
      failedBuildNotification:
        $ref: '#/definitions/BuildNotificationFrequency'
      notifyWhenBuildStatusChangedOnly:
        description: |
          Note that this value is `true` on user creation, but behaves as
          `false` when not specified on update.
        type: boolean
        default: false
      successfulDeploymentNotification:
        $ref: '#/definitions/DeploymentNotificationFrequency'
      failedDeploymentNotification:
        $ref: '#/definitions/DeploymentNotificationFrequency'
      notifyWhenDeploymentStatusChangedOnly:
        description: |
          Note that this value is `true` on user creation, but behaves as
          `false` when not specified on update.
        type: boolean
        default: false
    # Tested against PUT /users 2016-12-29
    required:
    - successfulBuildNotification
    - failedBuildNotification
    - successfulDeploymentNotification
    - failedDeploymentNotification

  # Note:  I would prefer the name User, but User must be used for
  # UserGroupPermissions in the due to how discriminator works.
  # Item 1 of https://github.com/OAI/OpenAPI-Specification/issues/707
  UserAccount:
    allOf:
    - $ref: '#/definitions/Timestamped'
    - $ref: '#/definitions/UserAccountSettings'
    - type: object
      properties:
        accountId:
          readOnly: true
          type: integer
          minimum: 0
        accountName:
          readOnly: true
          type: string
        isOwner:
          readOnly: true
          type: boolean
        isCollaborator:
          readOnly: true
          type: boolean
        userId:
          type: integer
          minimum: 0
        fullName:
          type: string
        email:
          type: string
          format: email
        password:
          type: string
          minLength: 1
          format: password
        roleId:
          type: integer
          minimum: 0
        roleName:
          readOnly: true
          type: string
        pageSize:
          type: integer
          minimum: 0
          readOnly: true
      # Tested against PUT /users 2016-12-29
      required: [fullName, email]
    example:
      userId: 3019
      fullName: John Smith
      email: [email protected]
      roleId: 4
      successfulBuildNotification: all
      failedBuildNotification: all
      notifyWhenBuildStatusChangedOnly: true

  UserAccountRolesResults:
    description: >-
      The roles property contains all roles, not only the role for which the
      user is a member.
    type: object
    properties:
      user:
        $ref: '#/definitions/UserAccount'
      roles:
        type: array
        items:
          $ref: '#/definitions/Role'

  ### Teams }}}
  ### {{{ Projects and Builds

  StringValueObject:
    type: object
    properties:
      value:
        type: string

  Status:
    type: string
    enum: [cancelled, cancelling, failed, queued, running, success]

  Job:
    allOf:
    - $ref: '#/definitions/Timestamped'
    - type: object
      properties:
        jobId:
          type: string
        name:
          type: string
        status:
          $ref: '#/definitions/Status'
        started:
          type: string
          format: date-time
        finished:
          type: string
          format: date-time

  OSType:
    type: string
    enum: [Ubuntu, Windows]

  BuildJob:
    allOf:
    - $ref: '#/definitions/Job'
    - type: object
      properties:
        osType:
          $ref: '#/definitions/OSType'
        allowFailure:
          type: boolean
        messagesCount:
          type: integer
          minimum: 0
        compilationMessagesCount:
          type: integer
          minimum: 0
        compilationErrorsCount:
          type: integer
          minimum: 0
        compilationWarningsCount:
          type: integer
          minimum: 0
        testsCount:
          type: integer
          minimum: 0
        passedTestsCount:
          type: integer
          minimum: 0
        failedTestsCount:
          type: integer
          minimum: 0
        artifactsCount:
          type: integer
          minimum: 0

  BuildStartRequest:
    type: object
    properties:
      accountName:
        type: string
        minLength: 1
      projectSlug:
        type: string
        minLength: 1
      branch:
        type: string
      commitId:
        type: string
      pullRequestId:
        description: Can not be used with `branch` or `commitId`
        type: integer
        minimum: 1
      environmentVariables:
        type: object
        additionalProperties:
          type: string
    required: [accountName, projectSlug]
    example:
      accountName: your-account-name
      projectSlug: project-slug-from-url
      branch: master
      environmentVariables:
        my_var: value
        another_var: another value

  BuildMessageCategory:
    type: string
    # TODO: Find a way to enumerate these
    enum:
    - information
    # This category was observed in compilationMessages:
    # https://ci.appveyor.com/project/SonarSource/sonar-scanner-msbuild/build/1.0.1003/messages
    # Not sure if it applies to build messages
    - warning

  BuildMessage:
    type: object
    properties:
      category:
        $ref: '#/definitions/BuildMessageCategory'
      message:
        type: string
      created:
        type: string
        format: date-time

  BuildLookupModel:
    type: object
    properties:
      branch:
        type: string
      buildId:
        type: integer
        minimum: 0
      message:
        type: string
      version:
        type: string

  Build:
    allOf:
    - $ref: '#/definitions/BuildLookupModel'
    - $ref: '#/definitions/Timestamped'
    - type: object
      properties:
        jobs:
          description: >-
            Always empty in getProjectHistory and startDeployment responses.
          type: array
          items:
            $ref: '#/definitions/BuildJob'
        buildNumber:
          type: integer
          minimum: 0
        messageExtended:
          type: string
        isTag:
          type: boolean
        commitId:
          type: string
        authorName:
          type: string
        authorUsername:
          type: string
        committerName:
          type: string
        committerUsername:
          type: string
        committed:
          type: string
          format: date-time
        pullRequestId:
          type: integer
          minimum: 1
        pullRequestName:
          type: string
        messages:
          type: array
          items:
            $ref: '#/definitions/BuildMessage'
        status:
          $ref: '#/definitions/Status'
        started:
          type: string
          format: date-time
        finished:
          type: string
          format: date-time

  RepositoryAuthenticationType:
    type: string
    enum: [credentials, ssh]

  RepositoryProvider:
    type: string
    enum:
    - bitBucket
    - git
    - gitHub
    - gitLab
    - kiln
    - mercurial
    - stash
    - subversion
    - vso

  RepositoryScm:
    type: string
    enum:
    - git
    - mercurial
    - subversion

  AccessRightName:
    type: string
    enum: [Delete, Deploy, RunBuild, Update, View]

  AceAccessRightDefinition:
    type: object
    properties:
      name:
        $ref: '#/definitions/AccessRightName'
      description:
        type: string
    required: [name]

  AceAccessRight:
    type: object
    properties:
      name:
        $ref: '#/definitions/AccessRightName'
      allowed:
        # Note: true==allow, false==deny, undefined==inherit
        type: boolean
    required: [name]

  RoleAce:
    type: object
    properties:
      roleId:
        type: integer
        minimum: 0
      name:
        type: string
      isAdmin:
        type: boolean
      accessRights:
        type: array
        items:
          $ref: '#/definitions/AceAccessRight'

  SecurityDescriptor:
    type: object
    properties:
      accessRightDefinitions:
        type: array
        items:
          $ref: '#/definitions/AceAccessRightDefinition'
      roleAces:
        type: array
        items:
          $ref: '#/definitions/RoleAce'

  NuGetFeed:
    allOf:
    - $ref: '#/definitions/Timestamped'
    - type: object
      properties:
        id:
          type: string
        name:
          type: string
        accountId:
          type: integer
          minimum: 0
        projectId:
          type: integer
          minimum: 0
        isPrivateProject:
          type: boolean
        publishingEnabled:
          type: boolean

  ProjectAddition:
    description: >-
      `repositoryAuthentication` is only used for git, mercurial, subversion
      `repositoryProvider`.
    type: object
    properties:
      repositoryProvider:
        $ref: '#/definitions/RepositoryProvider'
      repositoryName:
        description: >-
          URL when repositoryProvider is git, mercurial, subversion
          username/project when repositoryProvider is gitHub
        type: string
        minLength: 1
      repositoryAuthentication:
        $ref: '#/definitions/RepositoryAuthenticationType'
      repositoryUsername:
        description: Required if repositoryAuthentication is credentials
        type: string
      repositoryPassword:
        description: Required if repositoryAuthentication is credentials
        type: string
        format: password
    required: [repositoryProvider, repositoryName]
    example:
      repositoryProvider: gitHub
      repositoryName: FeodorFitsner/demo-app

  ProjectLookupModel:
    type: object
    properties:
      projectId:
        type: integer
        minimum: 0
      accountName:
        type: string
        readOnly: true
      name:
        type: string
      slug:
        type: string
        readOnly: true
    # Note: requirements tested against PUT /api/projects 2016-12-21
    required:
    - projectId

  Project:
    allOf:
    - $ref: '#/definitions/ProjectLookupModel'
    - $ref: '#/definitions/Timestamped'
    - type: object
      properties:
        accountId:
          type: integer
          minimum: 0
          readOnly: true
        builds:
          description: Only non-empty for response from getProjects.
          type: array
          items:
            $ref: '#/definitions/Build'
          readOnly: true
        repositoryType:
          $ref: '#/definitions/RepositoryProvider'
        repositoryScm:
          $ref: '#/definitions/RepositoryScm'
        repositoryName:
          type: string
        repositoryBranch:
          description: Not present in response from addProject.
          type: string
        isPrivate:
          type: boolean
        skipBranchesWithoutAppveyorYml:
          type: boolean
        enableSecureVariablesInPullRequests:
          type: boolean
        enableSecureVariablesInPullRequestsFromSameRepo:
          type: boolean
        enableDeploymentInPullRequests:
          type: boolean
        saveBuildCacheInPullRequests:
          type: boolean
        rollingBuilds:
          type: boolean
        rollingBuildsDoNotCancelRunningBuilds:
          type: boolean
        alwaysBuildClosedPullRequests:
          type: boolean
        tags:
          type: string
          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.
        nuGetFeed:
          description: Not present in response from addProject.
          $ref: '#/definitions/NuGetFeed'
        securityDescriptor:
          description: >-
            Not present in response from addProject.
            Not always present in response from getProjects (only after
            updateProject or startBuild?).
          $ref: '#/definitions/SecurityDescriptor'
      # Note: requirements tested against PUT /api/projects 2016-12-21
      required:
      - repositoryName

  ProjectBuildNumberUpdate:
    type: object
    properties:
      nextBuildNumber:
        type: integer
        minimum: 0
    required: [nextBuildNumber]
    example:
      nextBuildNumber: 35

  ProjectBuildResults:
    type: object
    properties:
      project:
        $ref: '#/definitions/Project'
      build:
        $ref: '#/definitions/Build'

  ProjectHistory:
    type: object
    properties:
      project:
        $ref: '#/definitions/Project'
      builds:
        type: array
        items:
          $ref: '#/definitions/Build'

  BuildCloudName:
    type: string
    enum: [gce, pro-vs2013, pro-win2016, pro-vs2017, ubuntu]

  BuildWorkerImageName:
    type: string
    enum:
    - Previous Visual Studio 2013
    - Previous Visual Studio 2015
    - Previous Visual Studio 2017
    - Ubuntu
    - Visual Studio 2013
    - Visual Studio 2015
    - Visual Studio 2017
    - Visual Studio 2017 Preview
    - WMF 5

  BuildWorkerImage:
    type: object
    properties:
      buildWorkerImageId:
        type: integer
        minimum: 0
      name:
        $ref: '#/definitions/BuildWorkerImageName'
      buildCloudName:
        $ref: '#/definitions/BuildCloudName'
      osType:
        $ref: '#/definitions/OSType'
    required: [buildWorkerImageId, name]

  ScriptLanguage:
    type: string
    enum: [cmd, ps]

  Script:
    type: object
    properties:
      language:
        $ref: '#/definitions/ScriptLanguage'
      script:
        type: string
    required: [script]

  ArtifactType:
    type: string
    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
    - File
    - NuGetPackage
    - SsdtPackage
    - WebDeployPackage
    - Zip

  # Note: Called ArtifactEntry in XML
  Artifact:
    type: object
    properties:
      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
        # format: globpath
      name:
        title: Deployment name
        type: string
        minLength: 0
      type:
        $ref: '#/definitions/ArtifactType'
    required: [path]

  ArtifactModel:
    type: object
    properties:
      fileName:
        type: string
      name:
        title: Deployment name
        type: string
      type:
        $ref: '#/definitions/ArtifactType'
      size:
        type: integer
        minimum: 0
      url:
        description: |
          This property has not been observed in JSON responses, but is
          present and nil in XML responses.
        type: string

  BuildMode:
    type: string
    enum: [msbuild, none, script]

  DeployMode:
    type: string
    enum: [providers, none, script]

  MSBuildVerbosity:
    type: string
    enum: [quiet, minimal, normal, detailed]

  OSServiceName:
    type: string
    enum:
    - iis
    - mongodb
    - msmq
    - mssql2008r2sp2
    - mssql2008r2sp2rs
    - mssql2012sp1
    - mssql2012sp1rs
    - mssql2014
    - mssql2014rs
    - mssql2016
    - mysql
    - postgresql

  PlatformName:
    type: string
    enum:
    - ARM
    - Any CPU
    - x64
    - x86

  TestMode:
    type: string
    enum: [auto, none, script]

  StoredValue:
    type: object
    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

  StoredNameValue:
    type: object
    properties:
      name:
        type: string
        minLength: 1
      value:
        $ref: '#/definitions/StoredValue'
    required: [name, value]

  StoredNameValueMatrix:
    type: object
    properties:
      variables:
        $ref: '#/definitions/StoredNameValue'

  HostEntry:
    type: object
    properties:
      host:
        type: string
        minLength: 1
        # Note:  API doesn't enforce valid hostnames
        # format: hostname
      ip:
        type: string
        minLength: 1
        # Note:  API doesn't enforce valid IP address
        # Can't use anyOf for format: ipv4 or format: ipv6 anyway.
        # https://github.com/OAI/OpenAPI-Specification/pull/741
    required: [host, ip]

  EncryptRequest:
    type: object
    properties:
      plainValue:
        # Note:  Can send non-string values.
        #        Result is same as sending string equivalent (e.g. "1" vs 1).
        type: string
        default: ""
    example:
      plainValue: encryptme

  ProjectBranchesMode:
    type: string
    enum: [exclude, include]

  ProjectConfiguration:
    type: object
    properties:
      doNotIncrementBuildNumberOnPullRequests:
        type: boolean
      hotFixScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      initScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      branchesMode:
        $ref: '#/definitions/ProjectBranchesMode'
      includeBranches:
        type: array
        items:
          $ref: '#/definitions/StringValueObject'
      excludeBranches:
        type: array
        items:
          $ref: '#/definitions/StringValueObject'
      skipTags:
        type: boolean
      skipNonTags:
        type: boolean
      skipBranchWithPullRequests:
        type: boolean
      skipCommitsFiles:
        type: array
        items:
          $ref: '#/definitions/StringValueObject'
      onlyCommitsFiles:
        type: array
        items:
          $ref: '#/definitions/StringValueObject'
      cloneScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      onBuildSuccessScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      onBuildErrorScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      onBuildFinishScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      patchAssemblyInfo:
        type: boolean
      assemblyInfoFile:
        type: string
      assemblyVersionFormat:
        type: string
      assemblyFileVersionFormat:
        type: string
      assemblyInformationalVersionFormat:
        type: string
      patchDotnetCsproj:
        type: boolean
      dotnetCsprojFile:
        type: string
      dotnetCsprojVersionFormat:
        type: string
      dotnetCsprojAssemblyVersionFormat:
        type: string
      dotnetCsprojFileVersionFormat:
        type: string
      dotnetCsprojInformationalVersionFormat:
        type: string
      dotnetCsprojPackageVersionFormat:
        type: string
      maxJobs:
        type: integer
        minimum: 1
      buildCloud:
        type: array
        items:
          $ref: '#/definitions/StringValueObject'
      operatingSystem:
        title: Build worker image
        type: array
        items:
          type: object
          properties:
            value:
              $ref: '#/definitions/BuildWorkerImageName'
          required: [value]
      services:
        title: OS services to start during the build process
        type: array
        items:
          type: object
          properties:
            value:
              $ref: '#/definitions/OSServiceName'
          required: [value]
      cloneFolder:
        type: string
      shallowClone:
        type: boolean
      forceHttpsClone:
        type: boolean
      cloneDepth:
        type: integer
        minimum: 1
      environmentVariables:
        type: array
        items:
          $ref: '#/definitions/StoredNameValue'
      environmentVariablesMatrix:
        type: array
        items:
          $ref: '#/definitions/StoredNameValueMatrix'
      installScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      hostsEntries:
        type: array
        items:
          $ref: '#/definitions/HostEntry'
      cacheEntries:
        type: array
        items:
          $ref: '#/definitions/StringValueObject'
      configureNuGetProjectSource:
        type: boolean
      configureNuGetAccountSource:
        type: boolean
      disableNuGetPublishOnPullRequests:
        type: boolean
      buildMode:
        $ref: '#/definitions/BuildMode'
      platform:
        type: array
        items:
          type: object
          properties:
            value:
              $ref: '#/definitions/PlatformName'
          required: [value]
      configuration:
        type: array
        items:
          $ref: '#/definitions/StringValueObject'
      msBuildProjectFileName:
        type: string
        # format: path
      packageWebApplicationProjects:
        type: boolean
      packageWebApplicationProjectsXCopy:
        type: boolean
      packageAzureCloudServiceProjects:
        type: boolean
      packageNuGetProjects:
        type: boolean
      packageNuGetSymbols:
        type: boolean
      includeNuGetReferences:
        type: boolean
      msBuildInParallel:
        type: boolean
      msBuildVerbosity:
        $ref: '#/definitions/MSBuildVerbosity'
      buildScripts:
        description: Only set/used when `buildMode` is `script`.
        type: array
        items:
          $ref: '#/definitions/Script'
      beforeBuildScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      beforePackageScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      afterBuildScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      testMode:
        $ref: '#/definitions/TestMode'
      testAssemblies:
        type: array
        items:
          $ref: '#/definitions/StringValueObject'
      testCategoriesMode:
        type: string
        enum: [exclude, include]
      testCategories:
        type: array
        items:
          $ref: '#/definitions/StringValueObject'
      testCategoriesMatrix:
        type: array
        items:
          type: object
          properties:
            categories:
              type: array
              items:
                $ref: '#/definitions/StringValueObject'
      testScripts:
        description: Only set/used when `testMode` is `script`.
        type: array
        items:
          $ref: '#/definitions/Script'
      beforeTestScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      afterTestScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      deployMode:
        $ref: '#/definitions/DeployMode'
      deployments:
        type: array
        items:
          $ref: '#/definitions/DeploymentProvider'
      deployScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      beforeDeployScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      afterDeployScripts:
        type: array
        items:
          $ref: '#/definitions/Script'
      xamarinRegisterAndroidProduct:
        type: boolean
      xamarinRegisterIosProduct:
        type: boolean
      matrixFastFinish:
        type: boolean
      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
        type: array
        items:
          $ref: '#/definitions/StoredNameValueMatrix'
      matrixExclude:
        type: array
        items:
          # Note:  Has not been observed in a response.  Guess item type.
          $ref: '#/definitions/StoredNameValueMatrix'
      artifacts:
        type: array
        items:
          $ref: '#/definitions/Artifact'
      notifications:
        type: array
        items:
          $ref: '#/definitions/NotificationProviderSettings'

  ProjectWithConfiguration:
    type: object
    allOf:
    - $ref: '#/definitions/Project'
    - type: object
      properties:
        versionFormat:
          type: string
          # API returns 400: "Version format must contain {build} variable."
          pattern: '[{]build[}]'
          minLength: 7
        nextBuildNumber:
          type: integer
          # Web UI enforces minimum of 0, REST API does not
        scheduleCrontabExpression:
          externalDocs:
            url: 'https://appveyor-staging.azurewebsites.net/docs/build-configuration/#scheduled-builds'
          description: >-
            Build schedule as an NCrontab Expression.  See
            https://github.com/atifaziz/NCrontab/wiki/Crontab-Expression
          type: string
        repositoryAuthentication:
          $ref: '#/definitions/RepositoryAuthenticationType'
        repositoryUsername:
          type: string
        sshPublicKey:
          type: string
        webhookId:
          type: string
        webhookUrl:
          type: string
          format: uri
        statusBadgeId:
          type: string
        buildPriority:
          type: integer
          minimum: 1
        ignoreAppveyorYml:
          type: boolean
        customYmlName:
          type: string
        configuration:
          $ref: '#/definitions/ProjectConfiguration'
      # Note: requirements tested against PUT /api/projects 2016-12-21
      required:
      - versionFormat
      - configuration
      example:
        projectId: 43682
        accountId: 2
        accountName: appvyr
        builds: []
        name: demo-app
        slug: demo-app-335
        versionFormat: 1.0.{build}
        nextBuildNumber: 1
        repositoryType: gitHub
        repositoryScm: git
        repositoryName: FeodorFitsner/demo-app
        repositoryBranch: master
        webhookId: rca5vb5qqu
        webhookUrl: https://ci.appveyor.com/api/github/webhook?id=rca5vb5qqu
        isPrivate: false
        ignoreAppveyorYml: false
        skipBranchesWithoutAppveyorYml: false
        configuration:
          initScripts: []
          includeBranches: []
          excludeBranches: []
          onBuildSuccessScripts: []
          onBuildErrorScripts: []
          patchAssemblyInfo: false
          assemblyInfoFile: '**\AssemblyInfo.*'
          assemblyVersionFormat: '{version}'
          assemblyFileVersionFormat: '{version}'
          assemblyInformationalVersionFormat: '{version}'
          operatingSystem: []
          services: []
          shallowClone: false
          environmentVariables: []
          environmentVariablesMatrix: []
          installScripts: []
          hostsEntries: []
          buildMode: msbuild
          platform: []
          configuration: []
          packageWebApplicationProjects: false
          packageWebApplicationProjectsXCopy: false
          packageAzureCloudServiceProjects: false
          packageNuGetProjects: false
          msBuildVerbosity: minimal
          buildScripts: []
          beforeBuildScripts: []
          afterBuildScripts: []
          testMode: auto
          testAssemblies: []
          testCategories: []
          testCategoriesMatrix: []
          testScripts: []
          beforeTestScripts: []
          afterTestScripts: []
          deployMode: providers
          deployments: []
          deployScripts: []
          beforeDeployScripts: []
          afterDeployScripts: []
          matrixFastFinish: false
          matrixAllowFailures: []
          artifacts: []
          notifications: []
        nuGetFeed:
          id: demo-app-tw5iw2wk3bl1
          name: Project demo-app
          publishingEnabled: false
          created: '2014-08-16T00:52:16.9886427+00:00'
        securityDescriptor:
          accessRightDefinitions:
          - name: View
            description: View
          - name: RunBuild
            description: Run build
          - name: Update
            description: Update settings
          - name: Delete
            description: Delete project
          roleAces:
          - roleId: 4
            name: Administrator
            isAdmin: true
            accessRights:
            - name: View
              allowed: true
            - name: RunBuild
              allowed: true
            - name: Update
              allowed: true
            - name: Delete
              allowed: true
          - roleId: 5
            name: User
            isAdmin: false
            accessRights:
            - name: View
            - name: RunBuild
            - name: Update
            - name: Delete
        created: '2014-08-16T00:52:15.6604826+00:00'

  ProjectSettingsResults:
    type: object
    properties:
      project:
        $ref: '#/definitions/Project'
      settings:
        $ref: '#/definitions/ProjectWithConfiguration'
      images:
        type: array
        items:
          $ref: '#/definitions/BuildWorkerImage'
      buildClouds:
        type: array
        items:
          $ref: '#/definitions/StringValueObject'
      defaultImageName:
        type: string
    example:
      version: 1.0.{build}
      build:
        project: MySolution.sln
        verbosity: minimal
        publish_wap: true

  ### Projects and Builds }}}
  ### {{{ Environments and Deployments

  HttpMethodRestricted:
    type: string
    enum: [GET, POST]

  ### {{{ Deployment Settings

  DeploymentProviderType:
    type: string
    enum:
    - Agent
    - AzureBlob
    - AzureCS
    - AzureWebJob
    - BinTray
    - FTP
    - GitHub
    - NuGet
    - S3
    - SqlDatabase
    - WebDeploy
    - Webhook

  DeploymentProvider:
    type: object
    properties:
      provider:
        $ref: '#/definitions/DeploymentProviderType'
      providerSettings:
        type: array
        items:
          $ref: '#/definitions/StoredNameValue'
      onBranch:
        type: array
        # The web UI only displays a single branch.  Max length?
        items:
          $ref: '#/definitions/StringValueObject'
      onEnvironmentVariables:
        type: array
        items:
          $ref: '#/definitions/StoredNameValue'
    required: [provider]

  DeploymentEnvironmentSettings:
    type: object
    properties:
      providerSettings:
        type: array
        items:
          $ref: '#/definitions/StoredNameValue'
      environmentVariables:
        type: array
        items:
          $ref: '#/definitions/StoredNameValue'
      notifications:
        type: array
        items:
          $ref: '#/definitions/NotificationProviderSettings'

  DeploymentEnvironmentAddition:
    type: object
    properties:
      name:
        type: string
      provider:
        $ref: '#/definitions/DeploymentProviderType'
      settings:
        $ref: '#/definitions/DeploymentEnvironmentSettings'
    required: [name, provider, settings]
    example:
      name: production
      provider: FTP
      settings:
        providerSettings:
        - name: server
          value:
            value: ftp.myserver.com
            isEncrypted: false
        - name: username
          value:
            value: ftp-user
            isEncrypted: false
        - name: password
          value:
            value: password
            isEncrypted: true
        environmentVariables:
        - name: my-var
          value:
            value: '123'
            isEncrypted: false

  DeploymentEnvironmentLookupModel:
    type: object
    properties:
      deploymentEnvironmentId:
        type: integer
        minimum: 0
      name:
        type: string
      provider:
        $ref: '#/definitions/DeploymentProviderType'

  DeploymentEnvironment:
    allOf:
    - $ref: '#/definitions/DeploymentEnvironmentLookupModel'
    - $ref: '#/definitions/Timestamped'
    - type: object
      properties:
        accountId:
          type: integer
        projectsMode:
          # Note: May be able to define enumeration value names in OpenAPI v3
          # https://github.com/OAI/OpenAPI-Specification/issues/681
          #
          # swagger-codegen fails when this enumeration is a toplevel definition
          # due to https://github.com/swagger-api/swagger-parser/pull/363
          description: |-
            0 is "Any project can be deployed to the environment"
            1 is "Only selected projects can be deployed to the environment"
            2 is "All except selected projects can be deployed to the environment"
          type: integer
          enum: [0, 1, 2]
        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

  DeploymentEnvironmentProject:
    type: object
    properties:
      projectId:
        type: integer
        minimum: 0
      name:
        type: string
      isSelected:
        type: boolean
    required: [projectId, name, isSelected]

  DeploymentEnvironmentWithSettings:
    allOf:
    - $ref: '#/definitions/DeploymentEnvironment'
    - type: object
      properties:
        environmentAccessKey:
          type: string
        settings:
          $ref: '#/definitions/DeploymentEnvironmentSettings'
        selectedProjects:
          description: Project IDs of selected projects
          type: array
          items:
            type: integer
            minimum: 1
        projects:
          description: |
            Projects available for selection in UI.
            Only present in response from getEnvironmentSettings.
          type: array
          items:
            $ref: '#/definitions/DeploymentEnvironmentProject'
    example:
      deploymentEnvironmentId: 3018
      name: production
      environmentAccessKey: gi3ttevuk7123
      settings:
        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
        environmentVariables:
        - name: my-var
          value:
            isEncrypted: false
            value: '123'
        provider: FTP

  DeploymentEnvironmentSettingsResults:
    type: object
    properties:
      environment:
        $ref: '#/definitions/DeploymentEnvironmentWithSettings'

  DeploymentStartRequest:
    type: object
    properties:
      environmentName:
        type: string
        minLength: 1
      accountName:
        type: string
        minLength: 1
      projectSlug:
        type: string
        minLength: 1
      buildVersion:
        description: Build to deploy
        type: string
        minLength: 1
      buildJobId:
        description: >-
          Optional job id with artifacts if build contains multiple jobs.
        type: string
      environmentVariables:
        type: object
        additionalProperties:
          type: string
    required: [environmentName, accountName, projectSlug, buildVersion]
    example:
      environmentName: environment-to-deploy
      accountName: your-account-name
      projectSlug: project-slug-from-url
      buildVersion: 1.2.0
      buildJobId: sfke9239ydzf
      environmentVariables:
        server: myserver.com
        another_var: another value

  DeploymentJob:
    allOf:
    - $ref: '#/definitions/Job'
    - type: object
      properties:
        messagesCount:
          type: integer
          minimum: 0

  DeploymentLookupModel:
    type: object
    properties:
      deploymentId:
        type: integer
        minimum: 0
      build:
        $ref: '#/definitions/BuildLookupModel'
      status:
        $ref: '#/definitions/Status'
      started:
        type: string
        format: date-time
      finished:
        type: string
        format: date-time

  Deployment:
    allOf:
    - $ref: '#/definitions/DeploymentLookupModel'
    - $ref: '#/definitions/Timestamped'
    - type: object
      properties:
        build:
          $ref: '#/definitions/Build'
        environment:
          $ref: '#/definitions/DeploymentEnvironment'
        jobs:
          type: array
          items:
            $ref: '#/definitions/DeploymentJob'

  DeploymentCancellation:
    type: object
    properties:
      deploymentId:
        type: integer
        minimum: 0
    required: [deploymentId]
    example:
      deploymentId: 123

  ProjectDeployment:
    type: object
    properties:
      project:
        $ref: '#/definitions/Project'
      deployment:
        $ref: '#/definitions/Deployment'
    required: [project, deployment]

  ProjectDeploymentModel:
    allOf:
    - $ref: '#/definitions/DeploymentLookupModel'
    - type: object
      properties:
        environment:
          $ref: '#/definitions/DeploymentEnvironmentLookupModel'

  ProjectDeploymentsResults:
    type: object
    properties:
      project:
        $ref: '#/definitions/Project'
      deployments:
        type: array
        items:
          $ref: '#/definitions/ProjectDeploymentModel'

  EnvironmentDeploymentModel:
    allOf:
    - $ref: '#/definitions/DeploymentLookupModel'
    - type: object
      properties:
        project:
          $ref: '#/definitions/ProjectLookupModel'

  DeploymentEnvironmentDeploymentsResults:
    type: object
    properties:
      environment:
        $ref: '#/definitions/DeploymentEnvironment'
      deployments:
        type: array
        items:
          $ref: '#/definitions/EnvironmentDeploymentModel'
    required: [environment, deployments]

  # Deployment Settings }}}

  NotificationProviderType:
    type: string
    enum:
    - Campfire
    - Email
    - GitHubPullRequest
    - HipChat
    - Slack
    - Webhook
    - VSOTeamRoom

  NotificationSettingsType:
    type: string
    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'

  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

    type: object
    properties:
      $type:
        $ref: '#/definitions/NotificationSettingsType'
      onBuildSuccess:
        type: boolean
      onBuildFailure:
        type: boolean
      onBuildStatusChanged:
        type: boolean

      # Campfire
      account:
        type: string
      authToken:
        $ref: '#/definitions/StoredValue'
      room:
        type: string
      template:
        type: string

      # Email
      subjectTemplate:
        type: string
      bodyTemplate:
        type: string
      recipients:
        type: array
        items:
          $ref: '#/definitions/StringValueObject'
      recipientsValue:
        type: string

      # GitHubPullRequest
      #authToken:
      #  $ref: '#/definitions/StoredValue'
      #template:
      #  type: string

      # HipChat
      #authToken:
      #  $ref: '#/definitions/StoredValue'
      from:
        type: string
      #room:
      #  type: string
      #template:
      #  type: string
      serverUrl:
        type: string
        format: uri

      # Slack
      incomingWebhookUrl:
        type: string
        format: uri
      #authToken:
      #  $ref: '#/definitions/StoredValue'
      channel:
        type: string
      #template:
      #  type: string

      # Webhook
      method:
        $ref: '#/definitions/HttpMethodRestricted'
      url:
        type: string
        format: uri
      headers:
        type: array
        items:
          $ref: '#/definitions/StoredNameValue'
      headersValue:
        type: string
      addCustomRequestBody:
        type: boolean
      customRequestBodyContentType:
        type: string
        # Format not enforced by server, all strings permitted
        #format: media-type
      customRequestBody:
        type: string

      # VSOTeamRoom
      vsoAccount:
        type: string
      username:
        type: string
      password:
        $ref: '#/definitions/StoredValue'
      #room:
      #  type: string
      #template:
      #  type: string

  NotificationProviderSettings:
    type: object
    properties:
      provider:
        $ref: '#/definitions/NotificationProviderType'
      settings:
        $ref: '#/definitions/NotificationSettings'
    required: [provider, settings]

  ### Environments and Deployments }}}

responses:
  Error:
    description: Error
    schema:
      $ref: '#/definitions/Error'

# Describe your paths here
paths:
  ### {{{ User
  /users:
    get:
      tags:
      - User
      operationId: getUsers
      summary: Get users
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#get-users'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: array
            items:
              $ref: '#/definitions/UserAccount'
          examples:
            application/json:
            - accountId: 2
              accountName: FeodorFitsner
              isOwner: false
              isCollaborator: false
              userId: 2019
              fullName: NuGet
              email: [email protected]
              roleId: 5
              roleName: User
              successfulBuildNotification: all
              failedBuildNotification: all
              notifyWhenBuildStatusChangedOnly: true
              created: '2014-02-12T19:21:15.0618564+00:00'
              updated: '2014-03-06T22:47:44.9706252+00:00'
    post:
      tags:
      - User
      operationId: addUser
      summary: Add user
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#add-user'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserAddition'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success
    put:
      tags:
      - User
      operationId: updateUser
      summary: Update user
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#update-user'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/UserAccount'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  /users/{userId}:
    parameters:
    - $ref: '#/parameters/userId'
    get:
      tags:
      - User
      operationId: getUser
      summary: Get user
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#get-user'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserAccountRolesResults'
          examples:
            application/json:
              user:
                accountId: 2
                accountName: FeodorFitsner
                isOwner: false
                isCollaborator: false
                userId: 2019
                fullName: NuGet
                email: [email protected]
                roleId: 5
                roleName: User
                successfulBuildNotification: all
                failedBuildNotification: all
                notifyWhenBuildStatusChangedOnly: true
                created: '2014-02-12T19:21:15.0618564+00:00'
                updated: '2014-03-06T22:47:44.9706252+00:00'
              roles:
              - roleId: 4
                name: Administrator
                isSystem: true
                created: '2013-09-26T19:23:39.3615105+00:00'
              - roleId: 5
                name: User
                isSystem: true
                created: '2013-09-26T19:23:39.3645117+00:00'
    delete:
      tags:
      - User
      operationId: deleteUser
      summary: Delete user
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#delete-user'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  ### User }}}
  ### {{{ Collaborator

  /collaborators:
    get:
      tags:
      - Collaborator
      operationId: getCollaborators
      summary: Get collaborators
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#get-collaborators'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: array
            items:
              $ref: '#/definitions/UserAccount'
          examples:
            application/json:
            - accountId: 2
              accountName: FeodorFitsner
              isOwner: false
              isCollaborator: true
              userId: 2018
              fullName: John Smith
              email: [email protected]
              roleId: 3040
              roleName: My Role
              successfulBuildNotification: all
              failedBuildNotification: all
              notifyWhenBuildStatusChangedOnly: true
              created: '2014-02-03T20:29:26.6807307+00:00'
              updated: '2014-03-07T04:26:09.1051534+00:00'
    post:
      tags:
      - Collaborator
      operationId: addCollaborator
      summary: Add collaborator
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#add-collaborator'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/CollaboratorAddition'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success
    put:
      tags:
      - Collaborator
      operationId: updateCollaborator
      summary: Update collaborator
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#update-collaborator'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/CollaboratorUpdate'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  /collaborators/{userId}:
    parameters:
    - $ref: '#/parameters/userId'
    get:
      tags:
      - Collaborator
      operationId: getCollaborator
      summary: Get collaborator
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#get-collaborator'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserAccountRolesResults'
          examples:
            application/json:
              user:
                accountId: 2
                accountName: FeodorFitsner
                isOwner: false
                isCollaborator: true
                userId: 2018
                fullName: John Smith
                email: [email protected]
                roleId: 3040
                roleName: My Role
                successfulBuildNotification: all
                failedBuildNotification: all
                notifyWhenBuildStatusChangedOnly: true
                created: '2014-02-03T20:29:26.6807307+00:00'
                updated: '2014-03-07T04:26:09.1051534+00:00'
              roles:
              - roleId: 4
                name: Administrator
                isSystem: true
                created: '2013-09-26T19:23:39.3615105+00:00'
              - roleId: 5
                name: User
                isSystem: true
                created: '2013-09-26T19:23:39.3645117+00:00'
              - roleId: 3040
                name: My Role
                isSystem: false
                created: '2014-03-18T20:12:08.4749886+00:00'
                updated: '2014-03-18T20:16:06.8803375+00:00'
    delete:
      tags:
      - Collaborator
      operationId: deleteCollaborator
      summary: Delete collaborator
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#delete-collaborator'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  ### Collaborator }}}
  ### {{{ Role

  /roles:
    get:
      tags:
      - Role
      operationId: getRoles
      summary: Get roles
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#get-roles'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: array
            items:
              $ref: '#/definitions/Role'
          examples:
            application/json:
            - roleId: 4
              name: Administrator
              isSystem: true
              created: '2013-09-26T19:23:39.3615105+00:00'
            - roleId: 5
              name: User
              isSystem: true
              created: '2013-09-26T19:23:39.3645117+00:00'
    post:
      tags:
      - Role
      operationId: addRole
      summary: Add role
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#add-role'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/RoleAddition'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/RoleWithGroups'
    put:
      tags:
      - Role
      operationId: updateRole
      summary: Update role
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#update-role'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/RoleWithGroups'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/RoleWithGroups'

  /roles/{roleId}:
    parameters:
    - $ref: '#/parameters/roleId'
    get:
      tags:
      - Role
      operationId: getRole
      summary: Get role
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#get-role'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/RoleWithGroups'
          examples:
            application/json:
              roleId: 3040
              name: My Role
              isSystem: false
              created: '2014-03-18T20:12:08.4749886+00:00'
              groups:
              - name: Projects
                permissions:
                - name: ManageProjects
                  description: Create, delete projects, update project settings
                  allowed: false
                - name: UpdateProjectSettings
                  description: Update project settings
                  allowed: false
                - name: RunProjectBuild
                  description: Run project builds
                  allowed: false
                - name: DeleteProjectBuilds
                  description: Delete project builds
                  allowed: false
              - name: Environments
                permissions:
                - name: ManageEnvironments
                  description: Create, delete projects, update environment settings
                  allowed: false
                - name: UpdateEnvironmentSettings
                  description: Update environment settings
                  allowed: false
                - name: DeployToEnvironment
                  description: Deploy to environment
                  allowed: false
              - name: Account
                permissions:
                - name: UpdateAccountDetails
                  description: Update account details
                  allowed: false
              - name: Users
                permissions:
                - name: AddUser
                  description: Add new user
                  allowed: false
                - name: UpdateUserDetails
                  description: Update user details
                  allowed: false
                - name: DeleteUser
                  description: Delete user
                  allowed: false
              - name: Roles
                permissions:
                - name: AddRole
                  description: Add new role
                  allowed: false
                - name: UpdateRoleDetails
                  description: Update role details
                  allowed: false
                - name: DeleteRole
                  description: Delete role
                  allowed: false
              - name: User
                permissions:
                - name: ConfigureApiKeys
                  description: Generate API keys
                  allowed: false
    delete:
      tags:
      - Role
      operationId: deleteRole
      summary: Delete role
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/team/#delete-role'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  ### Role }}}
  ### {{{ Project

  /account/encrypt:
    post:
      # This operation is not documented anywhere, but is discussed publicly in
      # http://help.appveyor.com/discussions/questions/1892-encryption-through-api
      # https://github.com/appveyor/ci/issues/665
      tags:
      - Project
      operationId: encryptValue
      summary: Encrypt a value for use in StoredValue.
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/EncryptRequest'
      produces:
      - text/plain
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: string
            # Could add format: byte since data is base64 encoded.
            # Avoided since primary use is as string in StoredValue, not byte[].
          examples:
            text/plain: wsnoY4v1v1Uofj0xf8E6FA==

  /projects:
    get:
      tags:
      - Project
      operationId: getProjects
      summary: Get projects
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#get-projects'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: array
            items:
              $ref: '#/definitions/Project'
          examples:
            application/json:
            - projectId: 19096
              accountId: 2
              accountName: FeodorFitsner
              builds:
              - buildId: 23864
                jobs: []
                buildNumber: 3
                version: 1.0.3
                message: replaced with command [skip ci]
                branch: master
                commitId: c2892a70d60c96c1b65a7c665ab806b7731fea8a
                authorName: Feodor Fitsner
                authorUsername: FeodorFitsner
                committerName: Feodor Fitsner
                committerUsername: FeodorFitsner
                committed: '2014-08-15T22:05:54+00:00'
                messages: []
                status: success
                started: '2014-08-15T22:36:38.1757886+00:00'
                finished: '2014-08-15T22:37:00.6171479+00:00'
                created: '2014-08-15T22:33:15.9833328+00:00'
                updated: '2014-08-15T22:37:00.6171479+00:00'
              name: appveyor-artifact-test
              slug: appveyor-artifact-test
              repositoryType: gitHub
              repositoryScm: git
              repositoryName: FeodorFitsner/appveyor-artifact-test
              repositoryBranch: master
              isPrivate: false
              skipBranchesWithoutAppveyorYml: false
              nuGetFeed:
                id: appveyor-artifact-test-j8kk0o
                name: Project appveyor-artifact-test
                publishingEnabled: false
                created: '2014-08-15T22:04:21.3111546+00:00'
              created: '2014-08-15T22:04:19.2868375+00:00'
    post:
      tags:
      - Project
      operationId: addProject
      summary: Add project
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#add-project'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/ProjectAddition'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/Project'
          examples:
            application/json:
              projectId: 43682
              accountId: 2
              accountName: appvyr
              builds: []
              name: demo-app
              slug: demo-app-335
              repositoryType: gitHub
              repositoryScm: git
              repositoryName: FeodorFitsner/demo-app
              isPrivate: false
              skipBranchesWithoutAppveyorYml: false
              created: '2014-08-16T00:52:15.6604826+00:00'
    put:
      tags:
      - Project
      operationId: updateProject
      summary: Update project
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#update-project'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/ProjectWithConfiguration'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  /projects/{accountName}/{projectSlug}:
    parameters:
    - $ref: '#/parameters/accountName'
    - $ref: '#/parameters/projectSlug'
    get:
      tags:
      - Project
      operationId: getProjectLastBuild
      summary: Get project last build
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#get-project-last-build'
      security: []
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ProjectBuildResults'
          examples:
            application/json:
              project:
                projectId: 38907
                accountId: 2
                accountName: appvyr
                builds: []
                name: nuget-test
                slug: nuget-test
                repositoryType: gitHub
                repositoryScm: git
                repositoryName: FeodorFitsner/nuget-test
                repositoryBranch: master
                isPrivate: false
                skipBranchesWithoutAppveyorYml: false
                nuGetFeed:
                  id: nuget-test-23spw2w
                  name: Project nuget-test
                  publishingEnabled: false
                  created: '2014-07-19T10:23:05.5160273+00:00'
                securityDescriptor: {}
                created: '2014-07-19T10:23:03.8005134+00:00'
                updated: '2014-08-01T05:25:15.4119745+00:00'
              build:
                buildId: 134173
                jobs:
                - jobId: 9r2qufuu8
                  name: ''
                  allowFailure: false
                  messagesCount: 0
                  compilationMessagesCount: 0
                  compilationErrorsCount: 0
                  compilationWarningsCount: 0
                  testsCount: 0
                  passedTestsCount: 0
                  failedTestsCount: 0
                  artifactsCount: 0
                  status: success
                  started: '2014-08-14T05:41:49.1061831+00:00'
                  finished: '2014-08-14T05:42:45.1102797+00:00'
                  created: '2014-08-14T05:39:27.3902557+00:00'
                  updated: '2014-08-14T05:42:45.477213+00:00'
                buildNumber: 45
                version: 1.0.45
                message: AssemblyInfo patching
                branch: master
                commitId: 85da1fb810ae89744abad83e75c13483dd740258
                authorName: Feodor Fitsner
                authorUsername: FeodorFitsner
                committerName: Feodor Fitsner
                committerUsername: FeodorFitsner
                committed: '2014-07-03T07:56:15+00:00'
                messages: []
                status: success
                started: '2014-08-14T05:41:49.1686804+00:00'
                finished: '2014-08-14T05:42:45.5709599+00:00'
                created: '2014-08-14T05:39:26.2946368+00:00'
                updated: '2014-08-14T05:42:45.5709599+00:00'
    delete:
      tags:
      - Project
      operationId: deleteProject
      summary: Delete project
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#delete-project'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  /projects/{accountName}/{projectSlug}/branch/{buildBranch}:
    parameters:
    - $ref: '#/parameters/accountName'
    - $ref: '#/parameters/projectSlug'
    - $ref: '#/parameters/buildBranch'
    get:
      tags:
      - Project
      operationId: getProjectLastBuildBranch
      summary: Get project last branch build
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#get-project-last-branch-build'
      security: []
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ProjectBuildResults'
          # FIXME: Same example as /api/projects/{accountName}/{projectSlug}
          examples:
            application/json:
              project:
                projectId: 38907
                accountId: 2
                accountName: appvyr
                builds: []
                name: nuget-test
                slug: nuget-test
                repositoryType: gitHub
                repositoryScm: git
                repositoryName: FeodorFitsner/nuget-test
                repositoryBranch: master
                isPrivate: false
                skipBranchesWithoutAppveyorYml: false
                nuGetFeed:
                  id: nuget-test-23spw2w
                  name: Project nuget-test
                  publishingEnabled: false
                  created: '2014-07-19T10:23:05.5160273+00:00'
                securityDescriptor: {}
                created: '2014-07-19T10:23:03.8005134+00:00'
                updated: '2014-08-01T05:25:15.4119745+00:00'
              build:
                buildId: 134173
                jobs:
                - jobId: 9r2qufuu8
                  name: ''
                  allowFailure: false
                  messagesCount: 0
                  compilationMessagesCount: 0
                  compilationErrorsCount: 0
                  compilationWarningsCount: 0
                  testsCount: 0
                  passedTestsCount: 0
                  failedTestsCount: 0
                  artifactsCount: 0
                  status: success
                  started: '2014-08-14T05:41:49.1061831+00:00'
                  finished: '2014-08-14T05:42:45.1102797+00:00'
                  created: '2014-08-14T05:39:27.3902557+00:00'
                  updated: '2014-08-14T05:42:45.477213+00:00'
                buildNumber: 45
                version: 1.0.45
                message: AssemblyInfo patching
                branch: master
                commitId: 85da1fb810ae89744abad83e75c13483dd740258
                authorName: Feodor Fitsner
                authorUsername: FeodorFitsner
                committerName: Feodor Fitsner
                committerUsername: FeodorFitsner
                committed: '2014-07-03T07:56:15+00:00'
                messages: []
                status: success
                started: '2014-08-14T05:41:49.1686804+00:00'
                finished: '2014-08-14T05:42:45.5709599+00:00'
                created: '2014-08-14T05:39:26.2946368+00:00'
                updated: '2014-08-14T05:42:45.5709599+00:00'

  /projects/{accountName}/{projectSlug}/build/{buildVersion}:
    parameters:
    - $ref: '#/parameters/accountName'
    - $ref: '#/parameters/projectSlug'
    - $ref: '#/parameters/buildVersion'
    get:
      tags:
      - Project
      operationId: getProjectBuildByVersion
      summary: Get project build by version
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#get-project-build-by-version'
      security: []
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ProjectBuildResults'
          # FIXME: Same example as /api/projects/{accountName}/{projectSlug}
          examples:
            application/json:
              project:
                projectId: 38907
                accountId: 2
                accountName: appvyr
                builds: []
                name: nuget-test
                slug: nuget-test
                repositoryType: gitHub
                repositoryScm: git
                repositoryName: FeodorFitsner/nuget-test
                repositoryBranch: master
                isPrivate: false
                skipBranchesWithoutAppveyorYml: false
                nuGetFeed:
                  id: nuget-test-23spw2w
                  name: Project nuget-test
                  publishingEnabled: false
                  created: '2014-07-19T10:23:05.5160273+00:00'
                securityDescriptor: {}
                created: '2014-07-19T10:23:03.8005134+00:00'
                updated: '2014-08-01T05:25:15.4119745+00:00'
              build:
                buildId: 134173
                jobs:
                - jobId: 9r2qufuu8
                  name: ''
                  allowFailure: false
                  messagesCount: 0
                  compilationMessagesCount: 0
                  compilationErrorsCount: 0
                  compilationWarningsCount: 0
                  testsCount: 0
                  passedTestsCount: 0
                  failedTestsCount: 0
                  artifactsCount: 0
                  status: success
                  started: '2014-08-14T05:41:49.1061831+00:00'
                  finished: '2014-08-14T05:42:45.1102797+00:00'
                  created: '2014-08-14T05:39:27.3902557+00:00'
                  updated: '2014-08-14T05:42:45.477213+00:00'
                buildNumber: 45
                version: 1.0.45
                message: AssemblyInfo patching
                branch: master
                commitId: 85da1fb810ae89744abad83e75c13483dd740258
                authorName: Feodor Fitsner
                authorUsername: FeodorFitsner
                committerName: Feodor Fitsner
                committerUsername: FeodorFitsner
                committed: '2014-07-03T07:56:15+00:00'
                messages: []
                status: success
                started: '2014-08-14T05:41:49.1686804+00:00'
                finished: '2014-08-14T05:42:45.5709599+00:00'
                created: '2014-08-14T05:39:26.2946368+00:00'
                updated: '2014-08-14T05:42:45.5709599+00:00'

  /projects/{accountName}/{projectSlug}/history:
    parameters:
    - $ref: '#/parameters/accountName'
    - $ref: '#/parameters/projectSlug'
    get:
      tags:
      - Project
      operationId: getProjectHistory
      summary: Get project history
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#get-project-history'
      security: []
      parameters:
      - $ref: '#/parameters/recordsNumber'
      - $ref: '#/parameters/startBuildId'
      - $ref: '#/parameters/branch'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ProjectHistory'
          examples:
            application/json:
              project:
                projectId: 42438
                accountId: 2
                accountName: appvyr
                builds: []
                name: wix-test
                slug: wix-test
                repositoryType: gitHub
                repositoryScm: git
                repositoryName: FeodorFitsner/wix-test
                isPrivate: false
                skipBranchesWithoutAppveyorYml: false
                created: '2014-08-09T00:30:43.3327131+00:00'
              builds:
              - buildId: 134174
                jobs: []
                buildNumber: 5
                version: 1.0.5
                message: Enabled diag mode
                branch: master
                commitId: d19740243e3ec5497345de0f7d828e66a7cd1a6b
                authorName: Feodor Fitsner
                authorUsername: FeodorFitsner
                committerName: Feodor Fitsner
                committerUsername: FeodorFitsner
                committed: '2014-08-10T14:08:16+00:00'
                messages: []
                status: success
                started: '2014-08-14T05:42:17.2696755+00:00'
                finished: '2014-08-14T05:43:47.4732355+00:00'
                created: '2014-08-14T05:39:30.8845902+00:00'
                updated: '2014-08-14T05:43:47.4732355+00:00'
              - buildId: 129289
                jobs: []
                buildNumber: 3
                version: 1.0.3
                message: Added appveyor.yml
                branch: master
                commitId: 28c6eec932c0e21eca5bb5571a722f850aa8bf6f
                authorName: Feodor Fitsner
                authorUsername: FeodorFitsner
                committerName: Feodor Fitsner
                committerUsername: FeodorFitsner
                committed: '2014-08-09T00:33:34+00:00'
                messages: []
                status: success
                started: '2014-08-09T15:42:45.7878479+00:00'
                finished: '2014-08-09T15:44:15.5828009+00:00'
                created: '2014-08-09T15:42:38.8315273+00:00'
                updated: '2014-08-09T15:44:15.5828009+00:00'

  /projects/{accountName}/{projectSlug}/artifacts/{artifactFileName}:
    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'
    get:
      tags:
      - Project
      operationId: getProjectArtifact
      summary: Get last successful build artifact
      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'
      security: []
      produces:
      # Note: API does not currently guess artifact content type.
      # All are sent as application/octet-stream
      - application/octet-stream
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: file

  /projects/{accountName}/{projectSlug}/deployments:
    parameters:
    - $ref: '#/parameters/accountName'
    - $ref: '#/parameters/projectSlug'
    get:
      tags:
      - Project
      operationId: getProjectDeployments
      summary: Get project deployments
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#get-project-deployments'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ProjectDeploymentsResults'
          examples:
            application/json:
              project:
                projectId: 22321
                accountId: 2
                accountName: appvyr
                builds: []
                name: simple-web
                slug: simple-web
                repositoryType: gitHub
                repositoryScm: git
                repositoryName: AppVeyor/simple-web
                isPrivate: false
                skipBranchesWithoutAppveyorYml: false
                securityDescriptor: {}
                created: '2014-05-08T18:38:57.9163293+00:00'
                updated: '2014-07-14T10:16:26.9351867+00:00'
              deployments:
              - environment:
                  deploymentEnvironmentId: 27
                  name: agent test
                  provider: Agent
                  created: '2014-04-01T17:56:41.30982+00:00'
                  updated: '2014-08-12T22:35:51.9723883+00:00'
                deployment:
                  deploymentId: 19475
                  build:
                    buildId: 132746
                    jobs: []
                    buildNumber: 38
                    version: 1.0.38
                    message: Removed Start-Website
                    branch: master
                    commitId: c397ba5d17dd17b994375405f560e4922207da1e
                    authorName: Feodor Fitsner
                    authorUsername: FeodorFitsner
                    committerName: Feodor Fitsner
                    committerUsername: FeodorFitsner
                    committed: '2014-08-12T22:56:00+00:00'
                    messages: []
                    status: success
                    started: '2014-08-12T22:56:25.8575967+00:00'
                    finished: '2014-08-12T22:58:05.7595508+00:00'
                    created: '2014-08-12T22:56:09.9208493+00:00'
                    updated: '2014-08-12T22:58:05.7595508+00:00'
                  environment:
                    deploymentEnvironmentId: 27
                    name: agent test
                    provider: Agent
                    created: '2014-04-01T17:56:41.30982+00:00'
                    updated: '2014-08-12T22:35:51.9723883+00:00'
                  jobs:
                  - jobId: jnpbcc77s4w278e4
                    name: Deployment
                    messagesCount: 0
                    status: success
                    started: '2014-08-12T23:06:10.8776088+00:00'
                    finished: '2014-08-12T23:06:24.3361102+00:00'
                    created: '2014-08-12T23:06:07.9009315+00:00'
                    updated: '2014-08-12T23:06:24.9390847+00:00'
                  - jobId: nbgyf7pn65d4agyr
                    name: TEST-AGENT-DEPL
                    messagesCount: 0
                    status: success
                    started: '2014-08-12T23:06:14.8148958+00:00'
                    finished: '2014-08-12T23:06:21.9647266+00:00'
                    created: '2014-08-12T23:06:14.8148958+00:00'
                    updated: '2014-08-12T23:06:22.3768791+00:00'
                  status: success
                  started: '2014-08-12T23:06:10.8776088+00:00'
                  finished: '2014-08-12T23:06:25.0502019+00:00'
                  created: '2014-08-12T23:06:07.9009315+00:00'
                  updated: '2014-08-12T23:06:25.0502019+00:00'

  /projects/{accountName}/{projectSlug}/settings:
    parameters:
    - $ref: '#/parameters/accountName'
    - $ref: '#/parameters/projectSlug'
    get:
      tags:
      - Project
      operationId: getProjectSettings
      summary: Get project settings
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#get-project-settings'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ProjectSettingsResults'
          examples:
            application/json:
              project:
                projectId: 22321
                accountId: 2
                accountName: appvyr
                builds: []
                name: simple-web
                slug: simple-web
                repositoryType: gitHub
                repositoryScm: git
                repositoryName: AppVeyor/simple-web
                isPrivate: false
                skipBranchesWithoutAppveyorYml: false
                securityDescriptor:
                  accessRightDefinitions:
                  - name: View
                    description: View
                  - name: RunBuild
                    description: Run build
                  - name: Update
                    description: Update settings
                  - name: Delete
                    description: Delete project
                  roleAces:
                  - roleId: 4
                    name: Administrator
                    isAdmin: true
                    accessRights:
                    - name: View
                      allowed: true
                    - name: RunBuild
                      allowed: true
                    - name: Update
                      allowed: true
                    - name: Delete
                      allowed: true
                  - roleId: 5
                    name: User
                    isAdmin: false
                    accessRights:
                    - name: View
                    - name: RunBuild
                    - name: Update
                    - name: Delete
                created: '2014-05-08T18:38:57.9163293+00:00'
                updated: '2014-07-14T10:16:26.9351867+00:00'
              settings:
                projectId: 22321
                accountId: 2
                accountName: appvyr
                builds: []
                name: simple-web
                slug: simple-web
                versionFormat: 1.0.{build}
                nextBuildNumber: 41
                repositoryType: gitHub
                repositoryScm: git
                repositoryName: AppVeyor/simple-web
                repositoryBranch: master
                webhookId: k783di7br
                webhookUrl: https://ci.appveyor.com/api/github/webhook?id=k783di7br
                isPrivate: false
                ignoreAppveyorYml: false
                skipBranchesWithoutAppveyorYml: false
                configuration:
                  initScripts: []
                  includeBranches: []
                  excludeBranches: []
                  onBuildSuccessScripts: []
                  onBuildErrorScripts: []
                  patchAssemblyInfo: false
                  assemblyInfoFile: '**\AssemblyInfo.*'
                  assemblyVersionFormat: '{version}'
                  assemblyFileVersionFormat: '{version}'
                  assemblyInformationalVersionFormat: '{version}'
                  operatingSystem: []
                  services: []
                  shallowClone: false
                  environmentVariables: []
                  environmentVariablesMatrix: []
                  installScripts: []
                  hostsEntries: []
                  buildMode: msbuild
                  platform: []
                  configuration: []
                  packageWebApplicationProjects: false
                  packageWebApplicationProjectsXCopy: false
                  packageAzureCloudServiceProjects: false
                  packageNuGetProjects: false
                  msBuildVerbosity: minimal
                  buildScripts: []
                  beforeBuildScripts: []
                  afterBuildScripts: []
                  testMode: auto
                  testAssemblies: []
                  testCategories: []
                  testCategoriesMatrix: []
                  testScripts: []
                  beforeTestScripts: []
                  afterTestScripts: []
                  deployMode: providers
                  deployments: []
                  deployScripts: []
                  beforeDeployScripts: []
                  afterDeployScripts: []
                  matrixFastFinish: false
                  matrixAllowFailures: []
                  artifacts: []
                  notifications: []
                nuGetFeed:
                  id: simple-web-0r50wgb1st6q
                  name: Project simple-web
                  publishingEnabled: false
                  created: '2014-05-08T18:38:59.2455842+00:00'
                securityDescriptor:
                  accessRightDefinitions:
                  - name: View
                    description: View
                  - name: RunBuild
                    description: Run build
                  - name: Update
                    description: Update settings
                  - name: Delete
                    description: Delete project
                  roleAces:
                  - roleId: 4
                    name: Administrator
                    isAdmin: true
                    accessRights:
                    - name: View
                      allowed: true
                    - name: RunBuild
                      allowed: true
                    - name: Update
                      allowed: true
                    - name: Delete
                      allowed: true
                  - roleId: 5
                    name: User
                    isAdmin: false
                    accessRights:
                    - name: View
                    - name: RunBuild
                    - name: Update
                    - name: Delete
                created: '2014-05-08T18:38:57.9163293+00:00'
                updated: '2014-07-14T10:16:26.9351867+00:00'
              images:
              - name: test-win2012-r2
              - name: Windows Server 2012
              - name: Windows Server 2012 R2

  /projects/{accountName}/{projectSlug}/settings/yaml:
    parameters:
    - $ref: '#/parameters/accountName'
    - $ref: '#/parameters/projectSlug'
    get:
      tags:
      - Project
      operationId: getProjectSettingsYaml
      summary: Get project settings in YAML
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#get-project-settings-in-yaml'
      produces:
      - text/plain
      responses:
        default:
          $ref: '#/responses/Error'
        '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.
          schema:
            type: string
          examples:
            text/plain: |
              version: 1.0.{build}
              build:
                project: MySolution.sln
                verbosity: minimal
                publish_wap: true
                ...
    put:
      tags:
      - Project
      operationId: updateProjectSettingsYaml
      summary: Update project settings in YAML
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#update-project-settings-in-yaml'
      consumes:
      - text/plain
      parameters:
      - name: body
        in: body
        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.
        schema:
          type: string
          format: binary
        required: true
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  /projects/{accountName}/{projectSlug}/settings/build-number:
    parameters:
    - $ref: '#/parameters/accountName'
    - $ref: '#/parameters/projectSlug'
    put:
      tags:
      - Project
      operationId: updateProjectBuildNumber
      summary: Update project build number
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#update-project-build-number'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/ProjectBuildNumberUpdate'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  /projects/{accountName}/{projectSlug}/settings/environment-variables:
    parameters:
    - $ref: '#/parameters/accountName'
    - $ref: '#/parameters/projectSlug'
    get:
      tags:
      - Project
      operationId: getProjectEnvironmentVariables
      summary: Get project environment variables
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#get-project-environment-variables'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: array
            items:
              $ref: '#/definitions/StoredNameValue'
          examples:
            application/json:
            - name: api_key
              value:
                isEncrypted: true
                value: very-secret-key-in-clear-text
            - name: var1
              value:
                isEncrypted: false
                value: current-value
    put:
      tags:
      - Project
      operationId: updateProjectEnvironmentVariables
      summary: Update project environment variables
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#update-project-environment-variables'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            type: array
            items:
              $ref: '#/definitions/StoredNameValue'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  /projects/{accountName}/{projectSlug}/buildcache:
    parameters:
    - $ref: '#/parameters/accountName'
    - $ref: '#/parameters/projectSlug'
    delete:
      tags:
      - Project
      operationId: deleteProjectBuildCache
      summary: Delete project build cache
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#delete-project-build-cache'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  /projects/status/{statusBadgeId}:
    parameters:
    - $ref: '#/parameters/statusBadgeId'
    get:
      tags:
      - Project
      operationId: getProjectStatusBadge
      summary: Get project status badge image
      externalDocs:
        url: https://www.appveyor.com/docs/status-badges/
      security: []
      parameters:
      - $ref: '#/parameters/svg'
      - $ref: '#/parameters/retina'
      - $ref: '#/parameters/passingText'
      - $ref: '#/parameters/failingText'
      - $ref: '#/parameters/pendingText'
      produces:
      - image/svg+xml
      - image/png
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: file

  /projects/status/{statusBadgeId}/branch/{buildBranch}:
    parameters:
    - $ref: '#/parameters/statusBadgeId'
    - $ref: '#/parameters/buildBranch'
    get:
      tags:
      - Project
      operationId: getProjectBranchStatusBadge
      summary: Get project branch status badge image
      externalDocs:
        url: https://www.appveyor.com/docs/status-badges/
      security: []
      parameters:
      - $ref: '#/parameters/svg'
      - $ref: '#/parameters/retina'
      - $ref: '#/parameters/passingText'
      - $ref: '#/parameters/failingText'
      - $ref: '#/parameters/pendingText'
      produces:
      - image/svg+xml
      - image/png
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: file

  /projects/status/{badgeRepoProvider}/{repoAccountName}/{repoSlug}:
    parameters:
    - $ref: '#/parameters/badgeRepoProvider'
    - $ref: '#/parameters/repoAccountName'
    - $ref: '#/parameters/repoSlug'
    get:
      tags:
      - Project
      operationId: getPublicProjectStatusBadge
      summary: Get status badge image for a project with a public repository
      externalDocs:
        url: https://www.appveyor.com/docs/status-badges/
      security: []
      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:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: file

  ### Project }}}
  ### {{{ Build

  /builds:
    post:
      tags:
      - Build
      operationId: startBuild
      summary: Start build of branch most recent commit
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#start-build-of-branch-most-recent-commit'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/BuildStartRequest'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/Build'
          examples:
            application/json:
              buildId: 136709
              jobs: []
              buildNumber: 7
              version: 1.0.7
              message: replaced with command [skip ci]
              branch: master
              commitId: c2892a70d60c96c1b65a7c665ab806b7731fea8a
              authorName: Feodor Fitsner
              authorUsername: FeodorFitsner
              committerName: Feodor Fitsner
              committerUsername: FeodorFitsner
              committed: '2014-08-15T22:05:54+00:00'
              messages: []
              status: queued
              created: '2014-08-16T00:40:38.1703914+00:00'

  /builds/{accountName}/{projectSlug}/{buildVersion}:
    parameters:
    - $ref: '#/parameters/accountName'
    - $ref: '#/parameters/projectSlug'
    - $ref: '#/parameters/buildVersion'
    delete:
      tags:
      - Build
      operationId: cancelBuild
      summary: Cancel build
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#cancel-build'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  /buildjobs/{jobId}/artifacts:
    parameters:
    - $ref: '#/parameters/jobId'
    get:
      tags:
      - Build
      operationId: getBuildArtifacts
      summary: Get build artifacts
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/samples/download-artifacts-advanced-ps/'
      security: []
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: array
            items:
              $ref: '#/definitions/ArtifactModel'
          examples:
            application/json:
            - fileName: README.md
              name: README.md
              type: File
              size: 3600
            - fileName: out/example.Release.x64.zip
              name: out\example.zip
              type: Zip
              size: 15600

  /buildjobs/{jobId}/artifacts/{artifactFileName}:
    parameters:
    - $ref: '#/parameters/jobId'
    - $ref: '#/parameters/artifactFileName'
    get:
      tags:
      - Build
      operationId: getBuildArtifact
      summary: Download build artifact
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/samples/download-artifacts-advanced-ps/'
      security: []
      produces:
      # Note: API does not currently guess artifact content type.
      # All are sent as application/octet-stream
      - application/octet-stream
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: file

  /buildjobs/{jobId}/log:
    parameters:
    - $ref: '#/parameters/jobId'
    get:
      tags:
      - Build
      operationId: getBuildLog
      summary: Download build log
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/projects-builds/#download-build-log'
      security: []
      produces:
      # Note:  Should be text/plain, but server always sends as octet-stream.
      - application/octet-stream
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: file

  ### Build }}}
  ### {{{ Environment

  /environments:
    get:
      tags:
      - Environment
      operationId: getEnvironments
      summary: Get environments
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/environments-deployments/#get-environments'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            type: array
            items:
              $ref: '#/definitions/DeploymentEnvironmentLookupModel'
          examples:
            application/json:
            - deploymentEnvironmentId: 14
              name: azure-blob-1
              provider: AzureBlob
            - deploymentEnvironmentId: 12
              name: azure-deploy-test
              provider: AzureCS
    post:
      tags:
      - Environment
      operationId: addEnvironment
      summary: Add environment
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/environments-deployments/#add-environment'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/DeploymentEnvironmentAddition'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/DeploymentEnvironmentWithSettings'
          examples:
            application/json:
              deploymentEnvironmentId: 3018
              name: production
              provider: FTP
              environmentAccessKey: gi3ttevuk7a123
              settings:
                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
                environmentVariables:
                - name: my-var
                  value:
                    isEncrypted: false
                    value: '123'
              created: '2014-08-15T23:57:16.1585268+00:00'
    put:
      tags:
      - Environment
      operationId: updateEnvironment
      summary: Update environment
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/environments-deployments/#update-environment'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/DeploymentEnvironmentWithSettings'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/DeploymentEnvironmentWithSettings'
          examples:
            application/json:
              deploymentEnvironmentId: 3018
              name: production
              provider: FTP
              environmentAccessKey: gi3ttevuk7123
              settings:
                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
                environmentVariables:
                - name: my-var
                  value:
                    isEncrypted: false
                    value: '123'
              created: '2014-08-15T23:57:16.1585268+00:00'
              updated: '2014-08-16T00:00:37.6079863+00:00'

  /environments/{deploymentEnvironmentId}/settings:
    parameters:
    - $ref: '#/parameters/deploymentEnvironmentId'
    get:
      tags:
      - Environment
      operationId: getEnvironmentSettings
      summary: Get environment settings
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/environments-deployments/#get-environment-settings'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/DeploymentEnvironmentSettingsResults'
          examples:
            application/json:
              environment:
                deploymentEnvironmentId: 14
                name: azure-blob-1
                provider: AzureBlob
                environmentAccessKey: aaabbb12345
                settings:
                  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
                  environmentVariables: []
                created: '2014-01-23T18:13:52.2268502+00:00'
                updated: '2014-06-02T18:13:32.5106126+00:00'

  /environments/{deploymentEnvironmentId}/deployments:
    parameters:
    - $ref: '#/parameters/deploymentEnvironmentId'
    get:
      tags:
      - Environment
      operationId: getEnvironmentDeployments
      summary: Get environment deployments
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/environments-deployments/#get-environment-deployments'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/DeploymentEnvironmentDeploymentsResults'
          examples:
            application/json:
              environment:
                deploymentEnvironmentId: 14
                name: azure-blob-1
                provider: AzureBlob
                created: '2014-01-23T18:13:52.2268502+00:00'
                updated: '2014-06-02T18:13:32.5106126+00:00'
              deployments:
              - project:
                  projectId: 15072
                  accountId: 2
                  accountName: FeodorFitsner
                  builds: []
                  name: simple-web
                  slug: simple-web
                  repositoryType: gitHub
                  repositoryScm: git
                  repositoryName: AppVeyor/simple-web
                  isPrivate: false
                  skipBranchesWithoutAppveyorYml: false
                  securityDescriptor: {}
                  created: '2014-05-06T16:38:14.7788393+00:00'
                  updated: '2014-06-02T21:37:30.9378043+00:00'
                deployment:
                  deploymentId: 4120
                  build:
                    buildId: 18665
                    jobs: []
                    buildNumber: 25
                    version: 1.0.25
                    message: 'Merge pull request #3 from FeodorFitsner/master'
                    messageExtended: Changes to AccountController
                    branch: master
                    commitId: ed40bd27f732d162b2185d75921b1cd57191f83b
                    authorName: Feodor Fitsner
                    authorUsername: FeodorFitsner
                    committerName: Feodor Fitsner
                    committerUsername: FeodorFitsner
                    committed: '2014-05-08T19:11:38+00:00'
                    messages: []
                    status: success
                    started: '2014-05-22T20:12:11.4475134+00:00'
                    finished: '2014-05-22T20:12:33.7806881+00:00'
                    created: '2014-05-22T20:09:53.759355+00:00'
                    updated: '2014-05-22T20:12:33.7806881+00:00'
                  environment:
                    deploymentEnvironmentId: 14
                    name: azure-blob-1
                    provider: AzureBlob
                    created: '2014-01-23T18:13:52.2268502+00:00'
                    updated: '2014-06-02T18:13:32.5106126+00:00'
                  jobs:
                  - jobId: 1696fh3a2w5ng99y
                    name: Deployment
                    messagesCount: 0
                    status: success
                    started: '2014-07-27T09:59:58.3955159+00:00'
                    finished: '2014-07-27T10:00:11.5995296+00:00'
                    created: '2014-07-27T09:59:57.0171035+00:00'
                    updated: '2014-07-27T10:00:16.163082+00:00'
                  status: success
                  started: '2014-06-02T18:20:07.9871288+00:00'
                  finished: '2014-06-02T18:20:25.11916+00:00'
                  created: '2014-06-02T18:20:07.2833871+00:00'
                  updated: '2014-06-02T18:20:25.11916+00:00'

  /environments/{deploymentEnvironmentId}:
    parameters:
    - $ref: '#/parameters/deploymentEnvironmentId'
    delete:
      tags:
      - Environment
      operationId: deleteEnvironment
      summary: Delete environment
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/environments-deployments/#delete-environment'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  ### Environment }}}
  ### {{{ Deployment

  /deployments/{deploymentId}:
    parameters:
    - $ref: '#/parameters/deploymentId'
    get:
      tags:
      - Deployment
      operationId: getDeployment
      summary: Get deployment
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/environments-deployments/#get-deployment'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ProjectDeployment'
          examples:
            application/json:
              project:
                projectId: 22321
                accountId: 2
                accountName: appvyr
                builds: []
                name: simple-web
                slug: simple-web
                repositoryType: gitHub
                repositoryScm: git
                repositoryName: AppVeyor/simple-web
                isPrivate: false
                skipBranchesWithoutAppveyorYml: false
                securityDescriptor: {}
                created: '2014-05-08T18:38:57.9163293+00:00'
                updated: '2014-07-14T10:16:26.9351867+00:00'
              deployment:
                deploymentId: 19475
                build:
                  buildId: 132746
                  jobs: []
                  buildNumber: 38
                  version: 1.0.38
                  message: Removed Start-Website
                  branch: master
                  commitId: c397ba5d17dd17b994375405f560e4922207da1e
                  authorName: Feodor Fitsner
                  authorUsername: FeodorFitsner
                  committerName: Feodor Fitsner
                  committerUsername: FeodorFitsner
                  committed: '2014-08-12T22:56:00+00:00'
                  messages: []
                  status: success
                  started: '2014-08-12T22:56:25.8575967+00:00'
                  finished: '2014-08-12T22:58:05.7595508+00:00'
                  created: '2014-08-12T22:56:09.9208493+00:00'
                  updated: '2014-08-12T22:58:05.7595508+00:00'
                environment:
                  deploymentEnvironmentId: 27
                  name: agent test
                  provider: Agent
                  created: '2014-04-01T17:56:41.30982+00:00'
                  updated: '2014-08-12T22:35:51.9723883+00:00'
                jobs:
                - jobId: jnpbcc77s4w278e4
                  name: Deployment
                  messagesCount: 0
                  status: success
                  started: '2014-08-12T23:06:10.8776088+00:00'
                  finished: '2014-08-12T23:06:24.3361102+00:00'
                  created: '2014-08-12T23:06:07.9009315+00:00'
                  updated: '2014-08-12T23:06:24.9390847+00:00'
                status: success
                started: '2014-08-12T23:06:10.8776088+00:00'
                finished: '2014-08-12T23:06:25.0502019+00:00'
                created: '2014-08-12T23:06:07.9009315+00:00'
                updated: '2014-08-12T23:06:25.0502019+00:00'

  /deployments:
    post:
      tags:
      - Deployment
      operationId: startDeployment
      summary: Start deployment
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/environments-deployments/#start-deployment'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/DeploymentStartRequest'
      responses:
        default:
          $ref: '#/responses/Error'
        '200':
          description: Success
          schema:
            $ref: '#/definitions/Deployment'
          examples:
            application/json:
              deploymentId: 19475
              build:
                buildId: 132746
                jobs: []
                buildNumber: 38
                version: 1.0.38
                message: Removed Start-Website
                branch: master
                commitId: c397ba5d17dd17b994375405f560e4922207da1e
                authorName: Feodor Fitsner
                authorUsername: FeodorFitsner
                committerName: Feodor Fitsner
                committerUsername: FeodorFitsner
                committed: '2014-08-12T22:56:00+00:00'
                messages: []
                status: success
                started: '2014-08-12T22:56:25.8575967+00:00'
                finished: '2014-08-12T22:58:05.7595508+00:00'
                created: '2014-08-12T22:56:09.9208493+00:00'
                updated: '2014-08-12T22:58:05.7595508+00:00'
              environment:
                deploymentEnvironmentId: 27
                name: agent test
                provider: Agent
                created: '2014-04-01T17:56:41.30982+00:00'
                updated: '2014-08-12T22:35:51.9723883+00:00'
              jobs:
              - jobId: jnpbcc77s4w278e4
                name: Deployment
                messagesCount: 0
                status: success
                started: '2014-08-12T23:06:10.8776088+00:00'
                finished: '2014-08-12T23:06:24.3361102+00:00'
                created: '2014-08-12T23:06:07.9009315+00:00'
                updated: '2014-08-12T23:06:24.9390847+00:00'
              status: success
              started: '2014-08-12T23:06:10.8776088+00:00'
              finished: '2014-08-12T23:06:25.0502019+00:00'
              created: '2014-08-12T23:06:07.9009315+00:00'
              updated: '2014-08-12T23:06:25.0502019+00:00'

  /deployments/stop:
    delete:
      tags:
      - Deployment
      operationId: cancelDeployment
      summary: Cancel deployment
      externalDocs:
        url: 'https://www.appveyor.com/docs/api/environments-deployments/#cancel-deployment'
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: '#/definitions/DeploymentCancellation'
      responses:
        default:
          $ref: '#/responses/Error'
        '204':
          description: Success

  ### Deployment }}}

# vim: set foldmethod=marker :




© 2015 - 2025 Weber Informatics LLC | Privacy Policy