Backupify Seats API

User and resource seat licensing and management

OpenAPI Specification

backupify-seats-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Backupify SaaS Protection Domains Seats API
  description: The Backupify (Datto) SaaS Protection REST API provides programmatic access to manage cloud-to-cloud backup for Microsoft 365 and Google Workspace. It enables seat management, subscription configuration, and backup domain administration for MSPs and enterprise customers. Authentication uses HTTP Basic authentication with API key credentials.
  version: v1
  x-generated-from: documentation
  contact:
    name: Datto/Backupify Support
    url: https://www.backupify.com/
servers:
- url: https://api.datto.com
  description: Datto SaaS Protection API
security:
- BasicAuth: []
tags:
- name: Seats
  description: User and resource seat licensing and management
paths:
  /v1/saas/{saasCustomerId}/seats:
    get:
      operationId: listSeats
      summary: Backupify SaaS Protection API List Seats
      description: Lists all seats (users, shared mailboxes, sites, team sites, teams) for a given SaaS customer. Returns remote IDs needed for licensing operations.
      tags:
      - Seats
      parameters:
      - name: saasCustomerId
        in: path
        required: true
        schema:
          type: string
        description: The unique SaaS customer identifier
        example: cust-001
      responses:
        '200':
          description: List of seats for the customer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SeatsResponse'
              examples:
                ListSeats200Example:
                  summary: Default listSeats 200 response
                  x-microcks-default: true
                  value:
                    seats:
                    - remoteId: user-abc123
                      displayName: John Smith
                      email: jsmith@company.com
                      seatType: User
                      licenseStatus: Licensed
                      lastBackup: '2026-04-18T14:30:00Z'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Customer not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v1/saas/{saasCustomerId}/externalSubscriptionId/bulkSeatChange:
    put:
      operationId: bulkSeatChange
      summary: Backupify SaaS Protection API Bulk Seat Change
      description: Updates multiple Microsoft 365 or Google Workspace seats simultaneously. Supports licensing, unlicensing, and pausing up to 100 seats per request. Supported seat types include User, SharedMailbox, Site, TeamSite, and Team.
      tags:
      - Seats
      parameters:
      - name: saasCustomerId
        in: path
        required: true
        schema:
          type: string
        description: The unique SaaS customer identifier
        example: cust-001
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkSeatChangeRequest'
            examples:
              BulkSeatChangeRequestExample:
                summary: Default bulkSeatChange request
                x-microcks-default: true
                value:
                  seats:
                  - remoteId: user-abc123
                    action: License
                    seatType: User
      responses:
        '200':
          description: Seat changes applied successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkSeatChangeResponse'
              examples:
                BulkSeatChange200Example:
                  summary: Default bulkSeatChange 200 response
                  x-microcks-default: true
                  value:
                    results:
                    - remoteId: user-abc123
                      success: true
                      message: Seat licensed successfully
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    BulkSeatChangeResponse:
      title: BulkSeatChangeResponse
      type: object
      description: Results of bulk seat change operations
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/SeatChangeResult'
    Seat:
      title: Seat
      type: object
      description: A licensed or unlicensed seat (user, mailbox, site, or team)
      properties:
        remoteId:
          type: string
          description: Remote identifier for the seat in the source system
          example: user-abc123
        displayName:
          type: string
          description: Display name of the seat
          example: John Smith
        email:
          type: string
          format: email
          description: Email address for user seats
          example: jsmith@company.com
        seatType:
          type: string
          enum:
          - User
          - SharedMailbox
          - Site
          - TeamSite
          - Team
          description: Type of seat
          example: User
        licenseStatus:
          type: string
          enum:
          - Licensed
          - Unlicensed
          - Paused
          description: Current license status
          example: Licensed
        lastBackup:
          type: string
          format: date-time
          description: Timestamp of last successful backup
          example: '2026-04-18T14:30:00Z'
    SeatsResponse:
      title: SeatsResponse
      type: object
      description: Response containing a list of seats for a customer
      properties:
        seats:
          type: array
          items:
            $ref: '#/components/schemas/Seat'
    SeatChange:
      title: SeatChange
      type: object
      description: A single seat change action
      properties:
        remoteId:
          type: string
          description: Remote identifier for the seat
          example: user-abc123
        action:
          type: string
          enum:
          - License
          - Unlicense
          - Pause
          description: Action to perform on the seat
          example: License
        seatType:
          type: string
          enum:
          - User
          - SharedMailbox
          - Site
          - TeamSite
          - Team
          description: Type of seat
          example: User
    BulkSeatChangeRequest:
      title: BulkSeatChangeRequest
      type: object
      description: Request to change multiple seat licenses
      properties:
        seats:
          type: array
          items:
            $ref: '#/components/schemas/SeatChange'
          description: List of seat changes (max 100 per request)
    ErrorResponse:
      title: ErrorResponse
      type: object
      description: API error response
      properties:
        code:
          type: integer
          description: HTTP status code
          example: 401
        message:
          type: string
          description: Error message
          example: Unauthorized
    SeatChangeResult:
      title: SeatChangeResult
      type: object
      description: Result of a single seat change operation
      properties:
        remoteId:
          type: string
          description: Remote identifier for the seat
          example: user-abc123
        success:
          type: boolean
          description: Whether the operation succeeded
          example: true
        message:
          type: string
          description: Description of the result
          example: Seat licensed successfully
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: HTTP Basic authentication using API public key as username and private key as password