{
  "swagger": "2.0",
  "info": {
    "title": "TeamManagement API",
    "version": "1.0.0",
    "description": "TeamManagement API provides useful information about users and teams"
  },
  "host": "saucelabs.com",
  "servers": [
    {
      "url": "https://api.{region}.saucelabs.{tld}",
      "variables": {
        "region": {
          "default": "us-west-1",
          "description": "region of datacenter",
          "enum": ["us-west-1", "us-east-4", "eu-central-1", "staging"]
        },
        "tld": {
          "default": "com",
          "description": "internal or external API",
          "enum": ["net", "com"]
        }
      }
    }
  ],
  "basePath": "/team-management/v1",
  "schemes": ["https"],
  "produces": ["application/json"],
  "securityDefinitions": {
    "BasicAuth": {
      "type": "basic"
    },
    "PrivApiKey": {
      "in": "header",
      "name": "Signature",
      "type": "apiKey"
    }
  },
  "definitions": {
    "TeamSettings": {
      "properties": {
        "virtual_machines": {
          "type": "integer"
        },
        "real_devices": {
          "type": "integer"
        },
        "live_only": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "TeamGroup": {
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "Role": {
      "properties": {
        "role": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "OrganizationV1": {
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "UserV1": {
      "description": "User",
      "properties": {
        "id": {
          "type": "string"
        },
        "username": {
          "type": "string"
        },
        "first_name": {
          "type": "string"
        },
        "last_name": {
          "type": "string"
        },
        "is_active": {
          "type": "boolean"
        },
        "email": {
          "type": "string"
        },
        "teams": {
          "items": {
            "$ref": "#/definitions/TeamV1"
          },
          "type": "array"
        },
        "roles": {
          "items": {
            "$ref": "#/definitions/Role"
          },
          "type": "array"
        },
        "organization": {
          "$ref": "#/definitions/OrganizationV1"
        }
      },
      "type": "object"
    },
    "TeamV1": {
      "description": "Team",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "is_default": {
          "type": "boolean"
        },
        "org_uuid": {
          "type": "string"
        },
        "user_count": {
          "type": "integer"
        },
        "settings": {
          "$ref": "#/definitions/TeamSettings"
        },
        "group": {
          "$ref": "#/definitions/TeamGroup"
        }
      },
      "type": "object"
    }
  },
  "parameters": {
    "teamManagementOffset": {
      "default": 0,
      "description": "Starting number",
      "in": "query",
      "name": "offset",
      "type": "number",
      "required": false
    },
    "teamManagementLimit": {
      "default": 20,
      "description": "Number of results to return",
      "in": "query",
      "name": "limit",
      "type": "number",
      "required": false
    },
    "teamManagementUsername": {
      "description": "username",
      "in": "query",
      "name": "username",
      "type": "string",
      "required": false
    },
    "teamManagementTeams": {
      "description": "List of team_ids",
      "in": "query",
      "name": "teams",
      "items": {
        "type": "string"
      },
      "type": "array",
      "required": false
    },
    "teamManagementTeamName": {
      "description": "team-name",
      "in": "query",
      "name": "team-name",
      "type": "string",
      "required": false
    },
    "teamManagementRoles": {
      "description": "roles",
      "in": "query",
      "name": "roles",
      "type": "integer",
      "required": false
    },
    "teamManagementPhrase": {
      "description": "phrase",
      "in": "query",
      "name": "phrase",
      "type": "string",
      "required": false
    },
    "teamManagementStatus": {
      "enum": ["active", "pending", "inactive"],
      "description": "status",
      "in": "query",
      "name": "status",
      "type": "string",
      "required": false
    },
    "teamManagementName": {
      "description": "name",
      "in": "query",
      "name": "name",
      "type": "string",
      "required": false
    }
  },
  "paths": {
    "/teams": {
      "get": {
        "operationId": "get_teams_v1",
        "parameters": [
          {
            "$ref": "#/parameters/teamManagementName"
          }
        ],
        "responses": {
          "200": {
            "description": "List of Teams",
            "schema": {
              "items": {
                "$ref": "#/definitions/TeamV1"
              },
              "type": "array"
            }
          },
          "404": {
            "description": "Team is not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get List of Teams",
        "tags": ["Team-Management"]
      }
    },
    "/users": {
      "get": {
        "operationId": "get_users_v1",
        "parameters": [
          {
            "$ref": "#/parameters/teamManagementUsername"
          },
          {
            "$ref": "#/parameters/teamManagementTeams"
          },
          {
            "$ref": "#/parameters/teamManagementTeamName"
          },
          {
            "$ref": "#/parameters/teamManagementRoles"
          },
          {
            "$ref": "#/parameters/teamManagementPhrase"
          },
          {
            "$ref": "#/parameters/teamManagementStatus"
          },
          {
            "$ref": "#/parameters/teamManagementLimit"
          },
          {
            "$ref": "#/parameters/teamManagementOffset"
          }
        ],
        "responses": {
          "200": {
            "description": "List of Users",
            "schema": {
              "items": {
                "$ref": "#/definitions/UserV1"
              },
              "type": "array"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get List of Teams",
        "tags": ["Team-Management"]
      }
    }
  }
}
