Ця сторінка ще не перекладена українською. Показано англійську версію. Переглянути англійською

Масове адміністрування облікових записів

Керуйте користувачами у кількох проєктах ACC/BIM 360 за допомогою масових операцій, відновлюваного стану та відстеження прогресу.

Огляд робочого процесу

Операції з користувачами
Додавання користувачів
Видалення користувачів
Оновлення ролей
Права на теки
Project Files
Plans
Довільні теки
Масові функції
50 паралельних запитів
Автоповтор (429)
Відстеження прогресу
Управління станом
Відновлювані операції
Режим dry-run
Історія операцій
Вибір проєктів → Налаштування операції → Виконання → Відстеження прогресу

Підхід через CLI

Додавання користувача до кількох проєктів

ACCOUNT_ID="your-account-id"
EMAIL="newuser@company.com"

# Add user to all projects
raps admin user add "$ACCOUNT_ID" "$EMAIL" --role project_admin

# Add user to specific projects (regex filter)
raps admin user add "$ACCOUNT_ID" "$EMAIL" --role project_admin \
  --filter "^Downtown|^Hospital"

# Preview changes with dry-run
raps admin user add "$ACCOUNT_ID" "$EMAIL" --role project_admin --dry-run

Видалення користувача з проєктів

# Remove user from all projects
raps admin user remove "$ACCOUNT_ID" "departed@company.com"

# Remove from specific projects
raps admin user remove "$ACCOUNT_ID" "departed@company.com" \
  --filter "^2024-.*"

# Dry-run to preview
raps admin user remove "$ACCOUNT_ID" "departed@company.com" --dry-run

Оновлення ролей користувачів

# Promote user across all projects
raps admin user update-role "$ACCOUNT_ID" "user@company.com" --role project_admin

# Update role in filtered projects
raps admin user update-role "$ACCOUNT_ID" "user@company.com" \
  --role viewer --filter "^Archive-"

Управління правами на теки

# Grant access to Project Files folder
raps admin folder set-permissions "$ACCOUNT_ID" "contractor@partner.com" \
  --permission edit --folder project_files

# Grant access to Plans folder
raps admin folder set-permissions "$ACCOUNT_ID" "reviewer@client.com" \
  --permission view --folder plans

# Custom folder by ID
raps admin folder set-permissions "$ACCOUNT_ID" "user@company.com" \
  --permission control --folder "urn:adsk.wipprod:fs.folder:abc123"

Перегляд та фільтрація проєктів

# List all projects
raps admin project list "$ACCOUNT_ID"

# Filter by name pattern
raps admin project list "$ACCOUNT_ID" --filter "Downtown"

# Filter by status and platform
raps admin project list "$ACCOUNT_ID" --status active --platform acc

# Limit results
raps admin project list "$ACCOUNT_ID" --limit 10 --output json

Управління операціями

Відстеження прогресу операцій

# View current operation status
raps admin operation status

# View specific operation
raps admin operation status --id "550e8400-e29b-41d4-a716-446655440000"

# List all operations
raps admin operation list

# Filter by status
raps admin operation list --status in_progress

Відновлення перерваних операцій

# Resume most recent in-progress operation
raps admin operation resume

# Resume specific operation
raps admin operation resume --id "550e8400-e29b-41d4-a716-446655440000"

Скасування операцій

# Cancel current operation
raps admin operation cancel

# Cancel specific operation
raps admin operation cancel --id "550e8400-e29b-41d4-a716-446655440000"

CI/CD-конвеєр

# .github/workflows/user-onboarding.yml
name: User Onboarding

on:
  workflow_dispatch:
    inputs:
      email:
        description: 'User email to onboard'
        required: true
      role:
        description: 'Role to assign'
        required: true
        default: 'project_admin'
        type: choice
        options:
          - project_admin
          - project_manager
          - viewer
      filter:
        description: 'Project filter regex (optional)'
        required: false

env:
  ACCOUNT_ID: ${{ secrets.ACC_ACCOUNT_ID }}

jobs:
  onboard-user:
    runs-on: ubuntu-latest
    steps:
      - name: Install RAPS
        run: cargo install raps

      - name: Authenticate
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
          APS_ACCESS_TOKEN: ${{ secrets.APS_ACCESS_TOKEN }}
          APS_REFRESH_TOKEN: ${{ secrets.APS_REFRESH_TOKEN }}
        run: raps auth login --token "$APS_ACCESS_TOKEN" --refresh-token "$APS_REFRESH_TOKEN" --non-interactive

      - name: Add user to projects
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
        run: |
          FILTER_ARG=""
          if [ -n "${{ github.event.inputs.filter }}" ]; then
            FILTER_ARG="--filter ${{ github.event.inputs.filter }}"
          fi

          raps admin user add "$ACCOUNT_ID" "${{ github.event.inputs.email }}" \
            --role ${{ github.event.inputs.role }} \
            $FILTER_ARG \
            --output json > result.json

      - name: Generate report
        run: |
          echo "# User Onboarding Report" > report.md
          echo "**User:** ${{ github.event.inputs.email }}" >> report.md
          echo "**Role:** ${{ github.event.inputs.role }}" >> report.md
          echo "**Date:** $(date)" >> report.md
          echo "" >> report.md

          TOTAL=$(jq '.total' result.json)
          SUCCESS=$(jq '.succeeded' result.json)
          SKIPPED=$(jq '.skipped' result.json)
          FAILED=$(jq '.failed' result.json)

          echo "## Results" >> report.md
          echo "- Total projects: $TOTAL" >> report.md
          echo "- Succeeded: $SUCCESS" >> report.md
          echo "- Skipped: $SKIPPED" >> report.md
          echo "- Failed: $FAILED" >> report.md

      - name: Upload report
        uses: actions/upload-artifact@v4
        with:
          name: onboarding-report
          path: |
            report.md
            result.json

Потік конвеєра

Тригер
Ручний запуск
Автентифікація
Refresh Token
3-Leg OAuth
Масова операція
Фільтрація проєктів
Додати користувача (50 паралельно)
Звіт
report.md
result.json

Скрипт відключення доступу

#!/bin/bash
# offboard-user.sh - Complete user removal

set -e

ACCOUNT_ID="$1"
EMAIL="$2"

if [ -z "$ACCOUNT_ID" ] || [ -z "$EMAIL" ]; then
  echo "Usage: offboard-user.sh <account_id> <email>"
  exit 1
fi

echo "Offboarding user: $EMAIL"
echo "================================"

# Step 1: Preview changes
echo "Step 1: Preview removal..."
raps admin user remove "$ACCOUNT_ID" "$EMAIL" --dry-run

read -p "Proceed with removal? (y/N) " confirm
if [ "$confirm" != "y" ]; then
  echo "Cancelled."
  exit 0
fi

# Step 2: Remove user from all projects
echo "Step 2: Removing user from projects..."
raps admin user remove "$ACCOUNT_ID" "$EMAIL" --output json > removal-result.json

# Step 3: Generate report
echo "Step 3: Generating report..."
TOTAL=$(jq '.total' removal-result.json)
REMOVED=$(jq '.succeeded' removal-result.json)
SKIPPED=$(jq '.skipped' removal-result.json)

echo ""
echo "Offboarding Complete"
echo "===================="
echo "User: $EMAIL"
echo "Projects processed: $TOTAL"
echo "Successfully removed: $REMOVED"
echo "Skipped (not in project): $SKIPPED"
echo ""
echo "Full results saved to: removal-result.json"

Пакетне управління користувачами

Підключення кількох користувачів

#!/bin/bash
# batch-onboard.sh

ACCOUNT_ID="your-account-id"
ROLE="project_admin"

# Users to onboard (one per line)
USERS=(
  "user1@company.com"
  "user2@company.com"
  "user3@company.com"
)

for email in "${USERS[@]}"; do
  echo "Onboarding: $email"
  raps admin user add "$ACCOUNT_ID" "$email" --role "$ROLE" \
    --output json >> onboarding-results.jsonl
  echo "---"
done

echo "Batch onboarding complete. Results in onboarding-results.jsonl"

Міграція ролей

#!/bin/bash
# migrate-roles.sh - Migrate users from one role to another

ACCOUNT_ID="your-account-id"
OLD_ROLE="viewer"
NEW_ROLE="project_admin"
PROJECT_FILTER="^2024-Active"

# Get users with old role
raps admin project list "$ACCOUNT_ID" --filter "$PROJECT_FILTER" --output json |
  jq -r '.[].id' | while read project_id; do
    raps acc project-user list "$project_id" --output json |
      jq -r --arg role "$OLD_ROLE" '.[] | select(.role == $role) | .email'
  done | sort -u > users-to-migrate.txt

echo "Found $(wc -l < users-to-migrate.txt) users to migrate"

# Migrate each user
while read email; do
  echo "Migrating: $email"
  raps admin user update-role "$ACCOUNT_ID" "$email" \
    --role "$NEW_ROLE" --filter "$PROJECT_FILTER"
done < users-to-migrate.txt

Рівні дозволів

РівеньДіїВипадок використання
viewПерегляд файлівДоступ лише для читання
view_downloadПерегляд + завантаженняРецензенти, клієнти
uploadПерегляд + завантаження + вивантаженняУчасники
editПовний доступ на редагуванняЧлени команди
controlПовний контроль + дозволиАдміністратори

Коди виходу

КодЗначення
0Усі операції виконані успішно
1Частковий успіх (деякі не вдалися)
2Операцію не вдалося розпочати
3Скасовано користувачем

Усунення неполадок

Обмеження швидкості запитів

Масові операції автоматично обробляють обмеження швидкості з експоненціальною затримкою:

[2/100] Rate limited, waiting 2s before retry...
[2/100] Retry 1/3 for project-123
[2/100] Success after retry

Користувача не знайдено

Якщо користувач не існує в обліковому записі:

# The operation will skip projects where user isn't found
raps admin user remove "$ACCOUNT_ID" "unknown@company.com"
# Output: Skipped 50 projects (user not in project)

Відновлення невдалих операцій

# Check operation history
raps admin operation list --status failed

# Resume with specific ID
raps admin operation resume --id "operation-uuid"

Пов’язане