From 584b7df68b63244cff67199b16cc3da9bed798b3 Mon Sep 17 00:00:00 2001 From: DJP Date: Thu, 2 Apr 2026 22:11:37 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20Dalim=20DAM=20web=20application=20?= =?UTF-8?q?=E2=80=94=20full=20build?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Complete client-facing DAM interface for Dalim ES FUSiON GraphQL API: - Asset browsing, search with faceted filtering, project/folder navigation - Send To distribution to 17 MMS platforms (PIM, Social, Google, In-Store, Print) - 10 workflow templates, approval queue, process monitor with progress bars - Collections with thumbnail mosaics, dashboard with KPI cards and activity feed - Docker Compose (app + PostgreSQL), mock mode, error boundaries - Two-tier API reference docs (466 operations indexed, 29 detailed) - MediaMarkt branding: Noto Sans Display, #DF0000 red, dark sidebar Co-Authored-By: Claude Opus 4.6 --- .gitignore | 82 +- CLAUDE.md | 27 + MM_logo_white.svg | 23 + dalim-app/.dockerignore | 6 + dalim-app/.env.example | 19 + dalim-app/.gitignore | 48 + dalim-app/AGENTS.md | 5 + dalim-app/CLAUDE.md | 1 + dalim-app/Dockerfile | 36 + dalim-app/README.md | 151 + dalim-app/components.json | 25 + dalim-app/docker-compose.yml | 32 + dalim-app/eslint.config.mjs | 18 + dalim-app/next.config.ts | 7 + dalim-app/package-lock.json | 10760 +++++++++++++++ dalim-app/package.json | 37 + dalim-app/postcss.config.mjs | 7 + dalim-app/prisma.config.ts | 14 + dalim-app/prisma/schema.prisma | 27 + dalim-app/public/file.svg | 1 + dalim-app/public/globe.svg | 1 + dalim-app/public/logo.svg | 23 + dalim-app/public/next.svg | 1 + .../public/placeholders/placeholder-1.jpg | Bin 0 -> 70836 bytes .../public/placeholders/placeholder-2.jpg | Bin 0 -> 34166 bytes .../public/placeholders/placeholder-3.jpg | Bin 0 -> 55859 bytes .../public/placeholders/placeholder-4.jpg | Bin 0 -> 76881 bytes .../public/placeholders/placeholder-5.jpg | Bin 0 -> 25713 bytes .../public/placeholders/placeholder-6.jpg | Bin 0 -> 48038 bytes .../public/placeholders/placeholder-7.jpg | Bin 0 -> 12448 bytes .../public/placeholders/placeholder-8.jpg | Bin 0 -> 52516 bytes dalim-app/public/vercel.svg | 1 + dalim-app/public/window.svg | 1 + dalim-app/src/app/api/approvals/route.ts | 16 + dalim-app/src/app/api/assets/[id]/route.ts | 19 + dalim-app/src/app/api/assets/route.ts | 16 + dalim-app/src/app/api/channels/route.ts | 11 + dalim-app/src/app/api/collections/route.ts | 16 + dalim-app/src/app/api/distribution/route.ts | 34 + .../src/app/api/folders/[id]/assets/route.ts | 20 + dalim-app/src/app/api/folders/[id]/route.ts | 19 + dalim-app/src/app/api/health/route.ts | 9 + dalim-app/src/app/api/processes/route.ts | 21 + .../src/app/api/projects/[id]/assets/route.ts | 21 + .../app/api/projects/[id]/folders/route.ts | 16 + dalim-app/src/app/api/projects/[id]/route.ts | 19 + dalim-app/src/app/api/projects/route.ts | 16 + dalim-app/src/app/api/search/route.ts | 17 + dalim-app/src/app/api/workflows/route.ts | 16 + dalim-app/src/app/assets/[id]/page.tsx | 226 + dalim-app/src/app/assets/page.tsx | 27 + dalim-app/src/app/collections/page.tsx | 116 + dalim-app/src/app/favicon.ico | Bin 0 -> 25931 bytes dalim-app/src/app/globals.css | 131 + dalim-app/src/app/layout.tsx | 46 + dalim-app/src/app/not-found.tsx | 19 + dalim-app/src/app/page.tsx | 218 + dalim-app/src/app/processes/page.tsx | 158 + dalim-app/src/app/projects/[id]/page.tsx | 157 + dalim-app/src/app/projects/page.tsx | 64 + dalim-app/src/app/search/page.tsx | 275 + dalim-app/src/app/workflows/page.tsx | 293 + .../src/components/assets/asset-card.tsx | 88 + .../src/components/assets/asset-detail.tsx | 178 + .../src/components/assets/asset-grid.tsx | 87 + .../distribution/send-to-dialog.tsx | 173 + dalim-app/src/components/error-boundary.tsx | 60 + .../src/components/folders/folder-tree.tsx | 91 + dalim-app/src/components/layout/header.tsx | 34 + dalim-app/src/components/layout/sidebar.tsx | 113 + dalim-app/src/components/providers.tsx | 22 + dalim-app/src/components/ui/avatar.tsx | 109 + dalim-app/src/components/ui/badge.tsx | 52 + dalim-app/src/components/ui/button.tsx | 60 + dalim-app/src/components/ui/card.tsx | 103 + dalim-app/src/components/ui/dialog.tsx | 160 + dalim-app/src/components/ui/dropdown-menu.tsx | 268 + dalim-app/src/components/ui/input.tsx | 20 + dalim-app/src/components/ui/scroll-area.tsx | 55 + dalim-app/src/components/ui/separator.tsx | 25 + dalim-app/src/components/ui/sheet.tsx | 138 + dalim-app/src/components/ui/skeleton.tsx | 13 + dalim-app/src/components/ui/tooltip.tsx | 66 + dalim-app/src/hooks/use-dalim.ts | 189 + dalim-app/src/lib/dalim-client.ts | 68 + dalim-app/src/lib/dalim-queries.ts | 223 + dalim-app/src/lib/dalim-service.ts | 351 + dalim-app/src/lib/dalim-types.ts | 148 + dalim-app/src/lib/mock/data.ts | 305 + dalim-app/src/lib/utils.ts | 6 + dalim-app/tsconfig.json | 34 + docs/api_parsed.json | 10815 ++++++++++++++++ docs/dalim-api-index.md | 675 + docs/dalim-api-reference.md | 955 ++ generate_docs.py | 486 + javascripts/spectaql.min.js | 1 + parse_api.py | 135 + stylesheets/spectaql.min.css | 1 + 98 files changed, 29645 insertions(+), 31 deletions(-) create mode 100644 CLAUDE.md create mode 100644 MM_logo_white.svg create mode 100644 dalim-app/.dockerignore create mode 100644 dalim-app/.env.example create mode 100644 dalim-app/.gitignore create mode 100644 dalim-app/AGENTS.md create mode 100644 dalim-app/CLAUDE.md create mode 100644 dalim-app/Dockerfile create mode 100644 dalim-app/README.md create mode 100644 dalim-app/components.json create mode 100644 dalim-app/docker-compose.yml create mode 100644 dalim-app/eslint.config.mjs create mode 100644 dalim-app/next.config.ts create mode 100644 dalim-app/package-lock.json create mode 100644 dalim-app/package.json create mode 100644 dalim-app/postcss.config.mjs create mode 100644 dalim-app/prisma.config.ts create mode 100644 dalim-app/prisma/schema.prisma create mode 100644 dalim-app/public/file.svg create mode 100644 dalim-app/public/globe.svg create mode 100644 dalim-app/public/logo.svg create mode 100644 dalim-app/public/next.svg create mode 100644 dalim-app/public/placeholders/placeholder-1.jpg create mode 100644 dalim-app/public/placeholders/placeholder-2.jpg create mode 100644 dalim-app/public/placeholders/placeholder-3.jpg create mode 100644 dalim-app/public/placeholders/placeholder-4.jpg create mode 100644 dalim-app/public/placeholders/placeholder-5.jpg create mode 100644 dalim-app/public/placeholders/placeholder-6.jpg create mode 100644 dalim-app/public/placeholders/placeholder-7.jpg create mode 100644 dalim-app/public/placeholders/placeholder-8.jpg create mode 100644 dalim-app/public/vercel.svg create mode 100644 dalim-app/public/window.svg create mode 100644 dalim-app/src/app/api/approvals/route.ts create mode 100644 dalim-app/src/app/api/assets/[id]/route.ts create mode 100644 dalim-app/src/app/api/assets/route.ts create mode 100644 dalim-app/src/app/api/channels/route.ts create mode 100644 dalim-app/src/app/api/collections/route.ts create mode 100644 dalim-app/src/app/api/distribution/route.ts create mode 100644 dalim-app/src/app/api/folders/[id]/assets/route.ts create mode 100644 dalim-app/src/app/api/folders/[id]/route.ts create mode 100644 dalim-app/src/app/api/health/route.ts create mode 100644 dalim-app/src/app/api/processes/route.ts create mode 100644 dalim-app/src/app/api/projects/[id]/assets/route.ts create mode 100644 dalim-app/src/app/api/projects/[id]/folders/route.ts create mode 100644 dalim-app/src/app/api/projects/[id]/route.ts create mode 100644 dalim-app/src/app/api/projects/route.ts create mode 100644 dalim-app/src/app/api/search/route.ts create mode 100644 dalim-app/src/app/api/workflows/route.ts create mode 100644 dalim-app/src/app/assets/[id]/page.tsx create mode 100644 dalim-app/src/app/assets/page.tsx create mode 100644 dalim-app/src/app/collections/page.tsx create mode 100644 dalim-app/src/app/favicon.ico create mode 100644 dalim-app/src/app/globals.css create mode 100644 dalim-app/src/app/layout.tsx create mode 100644 dalim-app/src/app/not-found.tsx create mode 100644 dalim-app/src/app/page.tsx create mode 100644 dalim-app/src/app/processes/page.tsx create mode 100644 dalim-app/src/app/projects/[id]/page.tsx create mode 100644 dalim-app/src/app/projects/page.tsx create mode 100644 dalim-app/src/app/search/page.tsx create mode 100644 dalim-app/src/app/workflows/page.tsx create mode 100644 dalim-app/src/components/assets/asset-card.tsx create mode 100644 dalim-app/src/components/assets/asset-detail.tsx create mode 100644 dalim-app/src/components/assets/asset-grid.tsx create mode 100644 dalim-app/src/components/distribution/send-to-dialog.tsx create mode 100644 dalim-app/src/components/error-boundary.tsx create mode 100644 dalim-app/src/components/folders/folder-tree.tsx create mode 100644 dalim-app/src/components/layout/header.tsx create mode 100644 dalim-app/src/components/layout/sidebar.tsx create mode 100644 dalim-app/src/components/providers.tsx create mode 100644 dalim-app/src/components/ui/avatar.tsx create mode 100644 dalim-app/src/components/ui/badge.tsx create mode 100644 dalim-app/src/components/ui/button.tsx create mode 100644 dalim-app/src/components/ui/card.tsx create mode 100644 dalim-app/src/components/ui/dialog.tsx create mode 100644 dalim-app/src/components/ui/dropdown-menu.tsx create mode 100644 dalim-app/src/components/ui/input.tsx create mode 100644 dalim-app/src/components/ui/scroll-area.tsx create mode 100644 dalim-app/src/components/ui/separator.tsx create mode 100644 dalim-app/src/components/ui/sheet.tsx create mode 100644 dalim-app/src/components/ui/skeleton.tsx create mode 100644 dalim-app/src/components/ui/tooltip.tsx create mode 100644 dalim-app/src/hooks/use-dalim.ts create mode 100644 dalim-app/src/lib/dalim-client.ts create mode 100644 dalim-app/src/lib/dalim-queries.ts create mode 100644 dalim-app/src/lib/dalim-service.ts create mode 100644 dalim-app/src/lib/dalim-types.ts create mode 100644 dalim-app/src/lib/mock/data.ts create mode 100644 dalim-app/src/lib/utils.ts create mode 100644 dalim-app/tsconfig.json create mode 100644 docs/api_parsed.json create mode 100644 docs/dalim-api-index.md create mode 100644 docs/dalim-api-reference.md create mode 100644 generate_docs.py create mode 100644 javascripts/spectaql.min.js create mode 100644 parse_api.py create mode 100644 stylesheets/spectaql.min.css diff --git a/.gitignore b/.gitignore index b24d71e..312aca6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,50 +1,70 @@ -# These are some examples of commonly ignored file patterns. -# You should customize this list as applicable to your project. -# Learn more about .gitignore: -# https://www.atlassian.com/git/tutorials/saving-changes/gitignore - -# Node artifact files +# Dependencies +dalim-app/node_modules/ +dalim-app/.pnp +dalim-app/.pnp.* node_modules/ -dist/ -# Compiled Java class files -*.class +# Next.js +dalim-app/.next/ +dalim-app/out/ +dalim-app/build/ -# Compiled Python bytecode +# Generated +dalim-app/src/generated/ + +# Env files +dalim-app/.env +dalim-app/.env.local +dalim-app/.env.development.local +dalim-app/.env.test.local +dalim-app/.env.production.local + +# Large source files (open in browser instead) +FUSION_API_index.html +FUSION_API_index.html.zip +Module9.ESFUSION_GraphQLMassActions.pdf + +# Python +__pycache__/ +*.pyc *.py[cod] +venv/ -# Log files +# OS +.DS_Store +Thumbs.db +*.pem + +# Debug / Logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* *.log -# Package files -*.jar - -# Maven -target/ -dist/ - -# JetBrains IDE +# IDE .idea/ +.vscode/ -# Unit test reports -TEST*.xml +# Docker volumes +dalim-app/dalim_pgdata/ -# Generated by MacOS -.DS_Store +# Claude internal +.claude/ -# Generated by Windows -Thumbs.db +# TypeScript +dalim-app/*.tsbuildinfo +dalim-app/next-env.d.ts -# Applications -*.app -*.exe -*.war +# Build artifacts +dist/ +target/ +*.jar +*.class -# Large media files +# Large media *.mp4 *.tiff *.avi *.flv *.mov *.wmv - diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..1557d73 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,27 @@ +# DALIM-API Project + +## Dalim ES FUSiON API + +This project integrates with the Dalim ES FUSiON GraphQL API for digital asset management. + +### API Reference Files +- **What can the API do?** → Read `docs/dalim-api-index.md` (all 466 operations, one-line each, grouped by domain) +- **How to call an endpoint?** → Read `docs/dalim-api-reference.md` (detailed docs for active endpoints with args, types, examples) +- **Full browsable docs** → Open `FUSION_API_index.html` in browser (6.6MB SpectaQL page — too large for Claude Code to read directly) +- **Auth & patterns guide** → `Module9.ESFUSION_GraphQLMassActions.pdf` (Dalim training presentation) + +### API Connection Details +- **GraphQL endpoint:** `https://{HOST}/ES/api/graphql` +- **Token endpoint:** `https://{HOST}/ES/api/oauth/token` +- **Auth method:** OAuth2 with HMAC SHA256 (client_id + client_secret → Bearer token) + +### Key Concepts +- **Dependency chain:** Security Profiles → Users → Projects → Assets (must create in this order) +- **API type:** GraphQL (Queries, Mutations, Subscriptions) +- **Pattern:** Use `dalimAPIUtils` helper module with `getHeaders()` and `getResult()` functions + +### Adding New Endpoints to Reference +When you need to use a new endpoint not yet in `dalim-api-reference.md`: +1. Find it in `docs/dalim-api-index.md` to confirm it exists +2. Look up its full details in `FUSION_API_index.html` (open in browser) +3. Add the detailed entry to `docs/dalim-api-reference.md` diff --git a/MM_logo_white.svg b/MM_logo_white.svg new file mode 100644 index 0000000..8e5e778 --- /dev/null +++ b/MM_logo_white.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dalim-app/.dockerignore b/dalim-app/.dockerignore new file mode 100644 index 0000000..a75c89c --- /dev/null +++ b/dalim-app/.dockerignore @@ -0,0 +1,6 @@ +node_modules +.next +.env +.env.local +*.md +.git diff --git a/dalim-app/.env.example b/dalim-app/.env.example new file mode 100644 index 0000000..96124de --- /dev/null +++ b/dalim-app/.env.example @@ -0,0 +1,19 @@ +# Dalim ES FUSiON API +DALIM_HOST=your-server.es-cloud.com +DALIM_PROTOCOL=https +DALIM_GRAPHQL_URL=https://your-server.es-cloud.com/ES/api/graphql +DALIM_TOKEN_URL=https://your-server.es-cloud.com/ES/api/oauth/token +DALIM_CLIENT_ID=your_client_id +DALIM_CLIENT_SECRET=your_client_secret +DALIM_USERNAME=admin +DALIM_PASSWORD=your_password + +# Use mock data instead of real API (set to "true" when no API access) +DALIM_MOCK_MODE=true + +# PostgreSQL +DATABASE_URL=postgresql://dalim:dalim_secret@localhost:5490/dalim_app + +# Next.js +NEXTAUTH_SECRET=change-me-to-random-string +NEXTAUTH_URL=http://localhost:3100 diff --git a/dalim-app/.gitignore b/dalim-app/.gitignore new file mode 100644 index 0000000..37a4209 --- /dev/null +++ b/dalim-app/.gitignore @@ -0,0 +1,48 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files +.env +.env.local +.env.development.local +.env.test.local +.env.production.local +!.env.example + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +/src/generated/prisma diff --git a/dalim-app/AGENTS.md b/dalim-app/AGENTS.md new file mode 100644 index 0000000..8bd0e39 --- /dev/null +++ b/dalim-app/AGENTS.md @@ -0,0 +1,5 @@ + +# This is NOT the Next.js you know + +This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices. + diff --git a/dalim-app/CLAUDE.md b/dalim-app/CLAUDE.md new file mode 100644 index 0000000..43c994c --- /dev/null +++ b/dalim-app/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md diff --git a/dalim-app/Dockerfile b/dalim-app/Dockerfile new file mode 100644 index 0000000..7fd4163 --- /dev/null +++ b/dalim-app/Dockerfile @@ -0,0 +1,36 @@ +FROM node:20-alpine AS base + +# Dependencies +FROM base AS deps +WORKDIR /app +COPY package*.json ./ +RUN npm ci + +# Builder +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . +ENV DATABASE_URL="postgresql://placeholder:placeholder@localhost:5432/placeholder" +RUN npx prisma generate +RUN npm run build + +# Runner +FROM base AS runner +WORKDIR /app +ENV NODE_ENV=production + +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +COPY --from=builder /app/public ./public +COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static + +USER nextjs + +EXPOSE 3000 +ENV PORT=3000 +ENV HOSTNAME="0.0.0.0" + +CMD ["node", "server.js"] diff --git a/dalim-app/README.md b/dalim-app/README.md new file mode 100644 index 0000000..622e353 --- /dev/null +++ b/dalim-app/README.md @@ -0,0 +1,151 @@ +# Dalim DAM — Digital Asset Management + +A client-facing web application that surfaces the **Dalim ES FUSiON** Digital Asset Management system via its GraphQL API. Built for MediaMarkt/MMS to manage, distribute, and track creative assets across 17+ output platforms. + +## Features + +### Asset Management +- **Asset browsing** with thumbnail previews, file type badges, and status indicators +- **Asset detail pages** with full metadata, preview, download button, and distribution history +- **Project-based navigation** with folder tree sidebar and filtered asset grids +- **Full-text search** with interactive facet filtering (file type, status), list/grid toggle + +### Distribution & Workflows +- **Send To** dialog — distribute assets to 17 connected platforms from the MMS tech architecture: + - **Web & App**: Website, Mobile App, E-Commerce (Shop/PWA) + - **Social**: Meta (Facebook/Instagram), TikTok, LinkedIn + - **Google**: Google Ads, Performance Max, CM360, YouTube + - **In-Store**: Electronic Shelf Labels (Pricer), In-Store TV, Digital Screens, POP + - **Print**: Print Fulfillment (flyers, catalogues, large-format) + - **Advertising**: Customer Comms Hub, Programmatic (DV360/Trade Desk) + - **Product Data**: PIM (Stibo STEP) +- **10 workflow templates** including Print Approval, Digital Review, Packaging QC, and platform-specific distribution workflows +- **Approval queue** with status tracking and approver assignment +- **Process monitor** with real-time progress bars, status dots, and timestamps +- **Distribution history** on every asset showing channel, status, and initiator + +### Collections & Dashboard +- **Collections** with thumbnail mosaics and asset counts +- **Dashboard** with 5 KPI cards, recent assets grid, project list, and activity feed combining approvals + distributions +- **Process Monitor page** with stats, progress bars, and linked assets + +### Infrastructure +- **Docker Compose** — containerized app + PostgreSQL +- **Mock mode** — full UI development without API access +- **Error boundary** — graceful error handling with retry +- **Custom 404 page** + +## Tech Stack + +| Layer | Technology | +|-------|-----------| +| Framework | Next.js (App Router, standalone output) | +| UI | Tailwind CSS, shadcn/ui, Noto Sans Display | +| State | TanStack React Query | +| API | Next.js API routes (proxy to Dalim GraphQL) | +| Database | PostgreSQL 16 + Prisma 7 | +| Auth | OAuth2 + HMAC SHA256 (Dalim ES FUSiON) | +| Container | Docker + Docker Compose | +| Branding | MediaMarkt red (#DF0000), dark sidebar (#1A1A1A) | + +## Quick Start + +### Prerequisites +- Node.js 20+ +- Docker & Docker Compose + +### Development (local) + +```bash +cp .env.example .env +npm install +npx prisma generate +npm run dev -- -p 3100 +``` + +App runs at `http://localhost:3100` in mock mode. + +### Docker + +```bash +cp .env.example .env +docker compose up --build -d +``` + +- App: `http://localhost:3100` +- PostgreSQL: `localhost:5490` + +### Environment Variables + +See `.env.example` for all required variables. Key settings: + +| Variable | Description | +|----------|-------------| +| `DALIM_MOCK_MODE` | Set to `true` for mock data (no API needed) | +| `DALIM_GRAPHQL_URL` | Dalim ES FUSiON GraphQL endpoint | +| `DALIM_CLIENT_ID` | OAuth2 client ID | +| `DALIM_CLIENT_SECRET` | OAuth2 client secret | +| `DATABASE_URL` | PostgreSQL connection string | + +## Project Structure + +``` +src/ + app/ + api/ # API routes (proxy to Dalim) + assets/ # Asset CRUD + by-ID + channels/ # Distribution channels + distribution/ # Send-to jobs (GET/POST) + folders/ # Folder by-ID + assets + projects/ # Projects + nested folders/assets + processes/ # Process monitor + search/ # Full-text search + workflows/ # Workflow templates + approvals/ # Approval queue + collections/ # Asset collections + assets/ # Asset pages (browse + detail) + collections/ # Collections page + processes/ # Process monitor page + projects/ # Projects (browse + detail with folder tree) + search/ # Search with facets + workflows/ # Workflows & distribution dashboard + components/ + assets/ # AssetCard, AssetGrid, AssetDetail + distribution/ # SendToDialog + folders/ # FolderTree + layout/ # Sidebar, Header + ui/ # shadcn/ui components + hooks/ + use-dalim.ts # React Query hooks for all API endpoints + lib/ + dalim-client.ts # GraphQL client with OAuth2 token caching + dalim-service.ts # Unified service layer (mock/real) + dalim-queries.ts # GraphQL query strings + dalim-types.ts # TypeScript interfaces + mock/data.ts # Mock data (projects, assets, channels, jobs) +``` + +## API Reference + +- **Full capability index**: See `docs/dalim-api-index.md` (466 operations, one-line each) +- **Detailed endpoint docs**: See `docs/dalim-api-reference.md` (29 active endpoints with args, types, examples) +- **Browsable docs**: Open `FUSION_API_index.html` in browser (6.6MB SpectaQL page) + +## Architecture + +``` +Browser → Next.js App → API Routes → Dalim ES FUSiON GraphQL API + ↓ + PostgreSQL (sessions, preferences) +``` + +- Dalim API credentials stay server-side (API routes act as proxy) +- React Query handles client-side caching and state +- Mock mode returns static data from `lib/mock/data.ts` + +## Ports + +| Service | Port | +|---------|------| +| App | 3100 | +| PostgreSQL | 5490 | diff --git a/dalim-app/components.json b/dalim-app/components.json new file mode 100644 index 0000000..8d886db --- /dev/null +++ b/dalim-app/components.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "base-nova", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "iconLibrary": "lucide", + "rtl": false, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "menuColor": "default", + "menuAccent": "subtle", + "registries": {} +} diff --git a/dalim-app/docker-compose.yml b/dalim-app/docker-compose.yml new file mode 100644 index 0000000..ce2e593 --- /dev/null +++ b/dalim-app/docker-compose.yml @@ -0,0 +1,32 @@ +services: + app: + build: . + ports: + - "3100:3000" + environment: + - DATABASE_URL=postgresql://dalim:dalim_secret@db:5432/dalim_app + - DALIM_MOCK_MODE=true + env_file: + - .env + depends_on: + db: + condition: service_healthy + + db: + image: postgres:16-alpine + ports: + - "5490:5432" + environment: + POSTGRES_USER: dalim + POSTGRES_PASSWORD: dalim_secret + POSTGRES_DB: dalim_app + volumes: + - dalim_pgdata:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U dalim -d dalim_app"] + interval: 5s + timeout: 5s + retries: 5 + +volumes: + dalim_pgdata: diff --git a/dalim-app/eslint.config.mjs b/dalim-app/eslint.config.mjs new file mode 100644 index 0000000..05e726d --- /dev/null +++ b/dalim-app/eslint.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/dalim-app/next.config.ts b/dalim-app/next.config.ts new file mode 100644 index 0000000..68a6c64 --- /dev/null +++ b/dalim-app/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + output: "standalone", +}; + +export default nextConfig; diff --git a/dalim-app/package-lock.json b/dalim-app/package-lock.json new file mode 100644 index 0000000..f0a3b17 --- /dev/null +++ b/dalim-app/package-lock.json @@ -0,0 +1,10760 @@ +{ + "name": "dalim-app", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "dalim-app", + "version": "0.1.0", + "dependencies": { + "@base-ui/react": "^1.3.0", + "@prisma/client": "^7.6.0", + "@tanstack/react-query": "^5.96.1", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "graphql-request": "^7.4.0", + "lucide-react": "^1.7.0", + "next": "16.2.2", + "prisma": "^7.6.0", + "react": "19.2.4", + "react-dom": "19.2.4", + "shadcn": "^4.1.2", + "tailwind-merge": "^3.5.0", + "tw-animate-css": "^1.4.0" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.2", + "tailwindcss": "^4", + "typescript": "^5" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@base-ui/react": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@base-ui/react/-/react-1.3.0.tgz", + "integrity": "sha512-FwpKqZbPz14AITp1CVgf4AjhKPe1OeeVKSBMdgD10zbFlj3QSWelmtCMLi2+/PFZZcIm3l87G7rwtCZJwHyXWA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "@base-ui/utils": "0.2.6", + "@floating-ui/react-dom": "^2.1.8", + "@floating-ui/utils": "^0.2.11", + "tabbable": "^6.4.0", + "use-sync-external-store": "^1.6.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17 || ^18 || ^19", + "react": "^17 || ^18 || ^19", + "react-dom": "^17 || ^18 || ^19" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@base-ui/utils": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@base-ui/utils/-/utils-0.2.6.tgz", + "integrity": "sha512-yQ+qeuqohwhsNpoYDqqXaLllYAkPCP4vYdDrVo8FQXaAPfHWm1pG/Vm+jmGTA5JFS0BAIjookyapuJFY8F9PIw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "@floating-ui/utils": "^0.2.11", + "reselect": "^5.1.1", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "@types/react": "^17 || ^18 || ^19", + "react": "^17 || ^18 || ^19", + "react-dom": "^17 || ^18 || ^19" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@clack/core": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.5.0.tgz", + "integrity": "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.11.0.tgz", + "integrity": "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==", + "license": "MIT", + "dependencies": { + "@clack/core": "0.5.0", + "picocolors": "^1.0.0", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@dotenvx/dotenvx": { + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-1.59.1.tgz", + "integrity": "sha512-Qg+meC+XFxliuVSDlEPkKnaUjdaJKK6FNx/Wwl2UxhQR8pyPIuLhMavsF7ePdB9qFZUWV1jEK3ckbJir/WmF4w==", + "license": "BSD-3-Clause", + "dependencies": { + "commander": "^11.1.0", + "dotenv": "^17.2.1", + "eciesjs": "^0.4.10", + "execa": "^5.1.1", + "fdir": "^6.2.0", + "ignore": "^5.3.0", + "object-treeify": "1.1.33", + "picomatch": "^4.0.2", + "which": "^4.0.0" + }, + "bin": { + "dotenvx": "src/cli/dotenvx.js" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/dotenv": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.0.tgz", + "integrity": "sha512-kCKF62fwtzwYm0IGBNjRUjtJgMfGapII+FslMHIjMR5KTnwEmBmWLDRSnc3XSNP8bNy34tekgQyDT0hr7pERRQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/@dotenvx/dotenvx/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@ecies/ciphers": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.6.tgz", + "integrity": "sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==", + "license": "MIT", + "engines": { + "bun": ">=1", + "deno": ">=2.7.10", + "node": ">=16" + }, + "peerDependencies": { + "@noble/ciphers": "^1.0.0" + } + }, + "node_modules/@electric-sql/pglite": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.4.1.tgz", + "integrity": "sha512-mZ9NzzUSYPOCnxHH1oAHPRzoMFJHY472raDKwXl/+6oPbpdJ7g8LsCN4FSaIIfkiCKHhb3iF/Zqo3NYxaIhU7Q==", + "license": "Apache-2.0" + }, + "node_modules/@electric-sql/pglite-socket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@electric-sql/pglite-socket/-/pglite-socket-0.1.1.tgz", + "integrity": "sha512-p2hoXw3Z3LQHwTeikdZNsFBOvXGqKY2hk51BBw+8NKND8eoH+8LFOtW9Z8CQKmTJ2qqGYu82ipqiyFZOTTXNfw==", + "license": "Apache-2.0", + "bin": { + "pglite-server": "dist/scripts/server.js" + }, + "peerDependencies": { + "@electric-sql/pglite": "0.4.1" + } + }, + "node_modules/@electric-sql/pglite-tools": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@electric-sql/pglite-tools/-/pglite-tools-0.3.1.tgz", + "integrity": "sha512-C+T3oivmy9bpQvSxVqXA1UDY8cB9Eb9vZHL9zxWwEUfDixbXv4G3r2LjoTdR33LD8aomR3O9ZXEO3XEwr/cUCA==", + "license": "Apache-2.0", + "peerDependencies": { + "@electric-sql/pglite": "0.4.1" + } + }, + "node_modules/@emnapi/core": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz", + "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", + "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.6" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", + "license": "MIT" + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@hono/node-server": { + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.11.tgz", + "integrity": "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==", + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", + "integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==", + "license": "MIT", + "dependencies": { + "@hono/node-server": "^1.19.9", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/@mswjs/interceptors": { + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.41.3.tgz", + "integrity": "sha512-cXu86tF4VQVfwz8W1SPbhoRyHJkti6mjH/XJIxp40jhO4j2k1m4KYrEykxqWPkFF3vrK4rgQppBh//AwyGSXPA==", + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@next/env": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.2.tgz", + "integrity": "sha512-LqSGz5+xGk9EL/iBDr2yo/CgNQV6cFsNhRR2xhSXYh7B/hb4nePCxlmDvGEKG30NMHDFf0raqSyOZiQrO7BkHQ==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.2.2.tgz", + "integrity": "sha512-IOPbWzDQ+76AtjZioaCjpIY72xNSDMnarZ2GMQ4wjNLvnJEJHqxQwGFhgnIWLV9klb4g/+amg88Tk5OXVpyLTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.2.tgz", + "integrity": "sha512-B92G3ulrwmkDSEJEp9+XzGLex5wC1knrmCSIylyVeiAtCIfvEJYiN3v5kXPlYt5R4RFlsfO/v++aKV63Acrugg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.2.tgz", + "integrity": "sha512-7ZwSgNKJNQiwW0CKhNm9B1WS2L1Olc4B2XY0hPYCAL3epFnugMhuw5TMWzMilQ3QCZcCHoYm9NGWTHbr5REFxw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.2.tgz", + "integrity": "sha512-c3m8kBHMziMgo2fICOP/cd/5YlrxDU5YYjAJeQLyFsCqVF8xjOTH/QYG4a2u48CvvZZSj1eHQfBCbyh7kBr30Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.2.tgz", + "integrity": "sha512-VKLuscm0P/mIfzt+SDdn2+8TNNJ7f0qfEkA+az7OqQbjzKdBxAHs0UvuiVoCtbwX+dqMEL9U54b5wQ/aN3dHeg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.2.tgz", + "integrity": "sha512-kU3OPHJq6sBUjOk7wc5zJ7/lipn8yGldMoAv4z67j6ov6Xo/JvzA7L7LCsyzzsXmgLEhk3Qkpwqaq/1+XpNR3g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.2.tgz", + "integrity": "sha512-CKXRILyErMtUftp+coGcZ38ZwE/Aqq45VMCcRLr2I4OXKrgxIBDXHnBgeX/UMil0S09i2JXaDL3Q+TN8D/cKmg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.2.tgz", + "integrity": "sha512-sS/jSk5VUoShUqINJFvNjVT7JfR5ORYj/+/ZpOYbbIohv/lQfduWnGAycq2wlknbOql2xOR0DoV0s6Xfcy49+g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.2.tgz", + "integrity": "sha512-aHaKceJgdySReT7qeck5oShucxWRiiEuwCGK8HHALe6yZga8uyFpLkPgaRw3kkF04U7ROogL/suYCNt/+CuXGA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "license": "MIT" + }, + "node_modules/@prisma/client": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.6.0.tgz", + "integrity": "sha512-7Pe/1ayh3GgWPEg4mmT4ax77LJ1wC+XlnIFvQ94bLP2DsUnOpnruQQR3Jw7r+Frthk94QqDNxo3FjSg8h9PXeQ==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/client-runtime-utils": "7.6.0" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24.0" + }, + "peerDependencies": { + "prisma": "*", + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@prisma/client-runtime-utils": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.6.0.tgz", + "integrity": "sha512-fD7jlqubsZvVODKvsp9lOpXVecx2aWGxC2l35Ioz2t+teUJ5CfR0SAMsi7UkU1VvaZmmm+DS6BdujF622nY7tQ==", + "license": "Apache-2.0" + }, + "node_modules/@prisma/config": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.6.0.tgz", + "integrity": "sha512-MuAz1MK4PeG5/03YzfzX3CnFVHQ6qePGwUpQRzPzX5tT0ffJ3Tzi9zJZbBc+VzEGFCM8ghW/gTVDR85Syjt+Yw==", + "license": "Apache-2.0", + "dependencies": { + "c12": "3.1.0", + "deepmerge-ts": "7.1.5", + "effect": "3.20.0", + "empathic": "2.0.0" + } + }, + "node_modules/@prisma/debug": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.6.0.tgz", + "integrity": "sha512-LpHr3qos4lQZ6sxwjStf59YBht7m9/QF7NSQsMH6qGENWZu2w3UkQUGn1h5iRkDjnWRj3VHykOu9qFhps4ADvA==", + "license": "Apache-2.0" + }, + "node_modules/@prisma/dev": { + "version": "0.24.3", + "resolved": "https://registry.npmjs.org/@prisma/dev/-/dev-0.24.3.tgz", + "integrity": "sha512-ffHlQuKXZiaDt9Go0OnCTdJZrHxK0k7omJKNV86/VjpsXu5EIHZLK0T7JSWgvNlJwh56kW9JFu9v0qJciFzepg==", + "license": "ISC", + "dependencies": { + "@electric-sql/pglite": "0.4.1", + "@electric-sql/pglite-socket": "0.1.1", + "@electric-sql/pglite-tools": "0.3.1", + "@hono/node-server": "1.19.11", + "@prisma/get-platform": "7.2.0", + "@prisma/query-plan-executor": "7.2.0", + "@prisma/streams-local": "0.1.2", + "foreground-child": "3.3.1", + "get-port-please": "3.2.0", + "hono": "^4.12.8", + "http-status-codes": "2.3.0", + "pathe": "2.0.3", + "proper-lockfile": "4.1.2", + "remeda": "2.33.4", + "std-env": "3.10.0", + "valibot": "1.2.0", + "zeptomatch": "2.1.0" + } + }, + "node_modules/@prisma/engines": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.6.0.tgz", + "integrity": "sha512-Sn5edRzhHqgRV2M+A0eIbY442B4mReWWf3pKs/LKreYgW7oa/up8JtK/s4iv/EQA097cyboZ08mmkpbLp+tZ3w==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.6.0", + "@prisma/engines-version": "7.6.0-1.75cbdc1eb7150937890ad5465d861175c6624711", + "@prisma/fetch-engine": "7.6.0", + "@prisma/get-platform": "7.6.0" + } + }, + "node_modules/@prisma/engines-version": { + "version": "7.6.0-1.75cbdc1eb7150937890ad5465d861175c6624711", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.6.0-1.75cbdc1eb7150937890ad5465d861175c6624711.tgz", + "integrity": "sha512-r51DLcJ8bDRSrBEJF3J4cinoWyGA7rfP2mG6lD90VqIbGNOkbfcLcXalSVjq5Y6brQS3vcjrq4GbyUb1Cb7vkw==", + "license": "Apache-2.0" + }, + "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.6.0.tgz", + "integrity": "sha512-ohZDwXvtmnbzOcutR2D13lDWpZP1wQjmPyztmt0AwXLzQI7q95EE7NYCvS+M6N6SivT+BM0NOqLmTH3wms4L3A==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.6.0" + } + }, + "node_modules/@prisma/fetch-engine": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.6.0.tgz", + "integrity": "sha512-N575Ni95c3FkduWY/eKTHqNYgNbceZ1tQaSknVtJjpKmiiBXmniESn/GTxsDvICC4ZeiNrXxioGInzQrCdx16w==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.6.0", + "@prisma/engines-version": "7.6.0-1.75cbdc1eb7150937890ad5465d861175c6624711", + "@prisma/get-platform": "7.6.0" + } + }, + "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.6.0.tgz", + "integrity": "sha512-ohZDwXvtmnbzOcutR2D13lDWpZP1wQjmPyztmt0AwXLzQI7q95EE7NYCvS+M6N6SivT+BM0NOqLmTH3wms4L3A==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.6.0" + } + }, + "node_modules/@prisma/get-platform": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.2.0.tgz", + "integrity": "sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.2.0" + } + }, + "node_modules/@prisma/get-platform/node_modules/@prisma/debug": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.2.0.tgz", + "integrity": "sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==", + "license": "Apache-2.0" + }, + "node_modules/@prisma/query-plan-executor": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/query-plan-executor/-/query-plan-executor-7.2.0.tgz", + "integrity": "sha512-EOZmNzcV8uJ0mae3DhTsiHgoNCuu1J9mULQpGCh62zN3PxPTd+qI9tJvk5jOst8WHKQNwJWR3b39t0XvfBB0WQ==", + "license": "Apache-2.0" + }, + "node_modules/@prisma/streams-local": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@prisma/streams-local/-/streams-local-0.1.2.tgz", + "integrity": "sha512-l49yTxKKF2odFxaAXTmwmkBKL3+bVQ1tFOooGifu4xkdb9NMNLxHj27XAhTylWZod8I+ISGM5erU1xcl/oBCtg==", + "license": "Apache-2.0", + "dependencies": { + "ajv": "^8.12.0", + "better-result": "^2.7.0", + "env-paths": "^3.0.0", + "proper-lockfile": "^4.1.2" + }, + "engines": { + "bun": ">=1.3.6", + "node": ">=22.0.0" + } + }, + "node_modules/@prisma/streams-local/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@prisma/streams-local/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/@prisma/studio-core": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@prisma/studio-core/-/studio-core-0.27.3.tgz", + "integrity": "sha512-AADjNFPdsrglxHQVTmHFqv6DuKQZ5WY4p5/gVFY017twvNrSwpLJ9lqUbYYxEu2W7nbvVxTZA8deJ8LseNALsw==", + "license": "Apache-2.0", + "dependencies": { + "@radix-ui/react-toggle": "1.1.10", + "chart.js": "4.5.1" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24.0", + "pnpm": "8" + }, + "peerDependencies": { + "@types/react": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.2.tgz", + "integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.2" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.2.tgz", + "integrity": "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-x64": "4.2.2", + "@tailwindcss/oxide-freebsd-x64": "4.2.2", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-x64-musl": "4.2.2", + "@tailwindcss/oxide-wasm32-wasi": "4.2.2", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.2.tgz", + "integrity": "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.2.tgz", + "integrity": "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.2.tgz", + "integrity": "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.2.tgz", + "integrity": "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.2.tgz", + "integrity": "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.2.tgz", + "integrity": "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.2.tgz", + "integrity": "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.2.tgz", + "integrity": "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.2.tgz", + "integrity": "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.2.tgz", + "integrity": "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.2.tgz", + "integrity": "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.2.tgz", + "integrity": "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.2.2.tgz", + "integrity": "sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.2.2", + "@tailwindcss/oxide": "4.2.2", + "postcss": "^8.5.6", + "tailwindcss": "4.2.2" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.96.1.tgz", + "integrity": "sha512-u1yBgtavSy+N8wgtW3PiER6UpxcplMje65yXnnVgiHTqiMwLlxiw4WvQDrXyn+UD6lnn8kHaxmerJUzQcV/MMg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.96.1.tgz", + "integrity": "sha512-2X7KYK5KKWUKGeWCVcqxXAkYefJtrKB7tSKWgeG++b0H6BRHxQaLSSi8AxcgjmUnnosHuh9WsFZqvE16P1WCzA==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.96.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@ts-morph/common": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.27.0.tgz", + "integrity": "sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.3.3", + "minimatch": "^10.0.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@ts-morph/common/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@ts-morph/common/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz", + "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/statuses": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", + "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", + "license": "MIT" + }, + "node_modules/@types/validate-npm-package-name": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/validate-npm-package-name/-/validate-npm-package-name-4.0.2.tgz", + "integrity": "sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz", + "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/type-utils": "8.58.0", + "@typescript-eslint/utils": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.58.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz", + "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz", + "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.58.0", + "@typescript-eslint/types": "^8.58.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz", + "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz", + "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz", + "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/utils": "8.58.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz", + "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz", + "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.58.0", + "@typescript-eslint/tsconfig-utils": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz", + "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz", + "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/axe-core": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.2.tgz", + "integrity": "sha512-byD6KPdvo72y/wj2T/4zGEvvlis+PsZsn/yPS3pEO+sFpcrqRpX/TJCxvVaEsNeMrfQbCr7w163YqoD9IYwHXw==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.13", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz", + "integrity": "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/better-result": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/better-result/-/better-result-2.7.0.tgz", + "integrity": "sha512-7zrmXjAK8u8Z6SOe4R65XObOR5X+Y2I/VVku3t5cPOGQ8/WsBcfFmfnIPiEl5EBMDOzPHRwbiPbMtQBKYdw7RA==", + "license": "MIT", + "dependencies": { + "@clack/prompts": "^0.11.0" + }, + "bin": { + "better-result": "bin/cli.mjs" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/c12": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/c12/-/c12-3.1.0.tgz", + "integrity": "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==", + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.3", + "confbox": "^0.2.2", + "defu": "^6.1.4", + "dotenv": "^16.6.1", + "exsolve": "^1.0.7", + "giget": "^2.0.0", + "jiti": "^2.4.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^1.0.0", + "pkg-types": "^2.2.0", + "rc9": "^2.1.2" + }, + "peerDependencies": { + "magicast": "^0.3.5" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001784", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz", + "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chart.js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz", + "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deepmerge-ts": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", + "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/defu": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.6.tgz", + "integrity": "sha512-f8mefEW4WIVg4LckePx3mALjQSPQgFlg9U8yaPdlsbdYcHQyj9n2zL2LJEA52smeYxOvmd/nB7TpMtHGMTHcug==", + "license": "MIT" + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eciesjs": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.18.tgz", + "integrity": "sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==", + "license": "MIT", + "dependencies": { + "@ecies/ciphers": "^0.2.5", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "^1.9.7", + "@noble/hashes": "^1.8.0" + }, + "engines": { + "bun": ">=1", + "deno": ">=2", + "node": ">=16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/effect": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/effect/-/effect-3.20.0.tgz", + "integrity": "sha512-qMLfDJscrNG8p/aw+IkT9W7fgj50Z4wG5bLBy0Txsxz8iUHjDIkOgO3SV0WZfnQbNG2VJYb0b+rDLMrhM4+Krw==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "fast-check": "^3.23.1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.331", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.331.tgz", + "integrity": "sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/empathic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.1.tgz", + "integrity": "sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.1", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-next": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.2.2.tgz", + "integrity": "sha512-6VlvEhwoug2JpVgjZDhyXrJXUEuPY++TddzIpTaIRvlvlXXFgvQUtm3+Zr84IjFm0lXtJt73w19JA08tOaZVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "16.2.2", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^7.0.0", + "globals": "16.4.0", + "typescript-eslint": "^8.46.0" + }, + "peerDependencies": { + "eslint": ">=9.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-next/node_modules/globals": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", + "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.16.1", + "resolve": "^2.0.0-next.6" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/execa": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.2.tgz", + "integrity": "sha512-77VmFeJkO0/rvimEDuUC5H30oqUC4EyOhyGccfqoLebB0oiEYfM7nwPrsDsBL1gsTpwfzX8SFy2MT3TDyRq+bg==", + "license": "MIT", + "dependencies": { + "ip-address": "10.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "license": "MIT" + }, + "node_modules/fast-check": { + "version": "3.23.2", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz", + "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT", + "dependencies": { + "pure-rand": "^6.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-extra": { + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuzzysort": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fuzzysort/-/fuzzysort-3.1.0.tgz", + "integrity": "sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ==", + "license": "MIT" + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "license": "MIT", + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-own-enumerable-keys/-/get-own-enumerable-keys-1.0.0.tgz", + "integrity": "sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-port-please": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.2.0.tgz", + "integrity": "sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==", + "license": "MIT" + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.13.7", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.7.tgz", + "integrity": "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/giget": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz", + "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==", + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.0", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.6", + "nypm": "^0.6.0", + "pathe": "^2.0.3" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/grammex": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/grammex/-/grammex-3.1.12.tgz", + "integrity": "sha512-6ufJOsSA7LcQehIJNCO7HIBykfM7DXQual0Ny780/DEcJIpBlHRvcqEBWGPYd7hrXL2GJ3oJI1MIhaXjWmLQOQ==", + "license": "MIT" + }, + "node_modules/graphmatch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/graphmatch/-/graphmatch-1.1.1.tgz", + "integrity": "sha512-5ykVn/EXM1hF0XCaWh05VbYvEiOL2lY1kBxZtaYsyvjp7cmWOU1XsAdfQBwClraEofXDT197lFbXOEVMHpvQOg==", + "license": "MIT" + }, + "node_modules/graphql": { + "version": "16.13.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.13.2.tgz", + "integrity": "sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-request": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-7.4.0.tgz", + "integrity": "sha512-xfr+zFb/QYbs4l4ty0dltqiXIp07U6sl+tOKAb0t50/EnQek6CVVBLjETXi+FghElytvgaAWtIOt3EV7zLzIAQ==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0" + }, + "peerDependencies": { + "graphql": "14 - 16" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/headers-polyfill": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", + "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", + "license": "MIT" + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/hono": { + "version": "4.12.10", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.10.tgz", + "integrity": "sha512-mx/p18PLy5og9ufies2GOSUqep98Td9q4i/EF6X7yJgAiIopxqdfIO3jbqsi3jRgTgw88jMDEzVKi+V2EF+27w==", + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-status-codes": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", + "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==", + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-3.0.0.tgz", + "integrity": "sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-3.1.0.tgz", + "integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jose": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz", + "integrity": "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", + "license": "BSD-2-Clause" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru.min": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.4.tgz", + "integrity": "sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, + "node_modules/lucide-react": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.7.0.tgz", + "integrity": "sha512-yI7BeItCLZJTXikmK4KNUGCKoGzSvbKlfCvw44bU4fXAL6v3gYS4uHD1jzsLkfwODYwI6Drw5Tu9Z5ulDe0TSg==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/msw": { + "version": "2.12.14", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.12.14.tgz", + "integrity": "sha512-4KXa4nVBIBjbDbd7vfQNuQ25eFxug0aropCQFoI0JdOBuJWamkT1yLVIWReFI8SiTRc+H1hKzaNk+cLk2N9rtQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@inquirer/confirm": "^5.0.0", + "@mswjs/interceptors": "^0.41.2", + "@open-draft/deferred-promise": "^2.2.0", + "@types/statuses": "^2.0.6", + "cookie": "^1.0.2", + "graphql": "^16.12.0", + "headers-polyfill": "^4.0.2", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", + "rettime": "^0.10.1", + "statuses": "^2.0.2", + "strict-event-emitter": "^0.5.1", + "tough-cookie": "^6.0.0", + "type-fest": "^5.2.0", + "until-async": "^3.0.2", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/msw/node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/mysql2": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.15.3.tgz", + "integrity": "sha512-FBrGau0IXmuqg4haEZRBfHNWB5mUARw6hNwPDXXGg0XzVJ50mr/9hb267lvpVMnhZ1FON3qNd4Xfcez1rbFwSg==", + "license": "MIT", + "dependencies": { + "aws-ssl-profiles": "^1.1.1", + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.7.0", + "long": "^5.2.1", + "lru.min": "^1.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.6.tgz", + "integrity": "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==", + "license": "MIT", + "dependencies": { + "lru.min": "^1.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/next/-/next-16.2.2.tgz", + "integrity": "sha512-i6AJdyVa4oQjyvX/6GeER8dpY/xlIV+4NMv/svykcLtURJSy/WzDnnUk/TM4d0uewFHK7xSQz4TbIwPgjky+3A==", + "license": "MIT", + "dependencies": { + "@next/env": "16.2.2", + "@swc/helpers": "0.5.15", + "baseline-browser-mapping": "^2.9.19", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=20.9.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "16.2.2", + "@next/swc-darwin-x64": "16.2.2", + "@next/swc-linux-arm64-gnu": "16.2.2", + "@next/swc-linux-arm64-musl": "16.2.2", + "@next/swc-linux-x64-gnu": "16.2.2", + "@next/swc-linux-x64-musl": "16.2.2", + "@next/swc-win32-arm64-msvc": "16.2.2", + "@next/swc-win32-x64-msvc": "16.2.2", + "sharp": "^0.34.5" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.51.1", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-exports-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", + "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.5.tgz", + "integrity": "sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==", + "license": "MIT", + "dependencies": { + "citty": "^0.2.0", + "pathe": "^2.0.3", + "tinyexec": "^1.0.2" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/nypm/node_modules/citty": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.2.tgz", + "integrity": "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-treeify": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", + "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.4.0", + "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", + "is-inside-container": "^1.0.0", + "powershell-utils": "^0.1.0", + "wsl-utils": "^0.3.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "license": "MIT" + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkce-challenge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.4.7.tgz", + "integrity": "sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==", + "license": "Unlicense", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/porsager" + } + }, + "node_modules/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prisma": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.6.0.tgz", + "integrity": "sha512-OKJIPT81K3+F+AayIkY/Y3mkF2NWoFh7lZApaaqPYy7EHILKdO0VsmGkP+hDKYTySHsFSyLWXm/JgcR1B8fY1Q==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/config": "7.6.0", + "@prisma/dev": "0.24.3", + "@prisma/engines": "7.6.0", + "@prisma/studio-core": "0.27.3", + "mysql2": "3.15.3", + "postgres": "3.4.7" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24.0" + }, + "peerDependencies": { + "better-sqlite3": ">=9.0.0", + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "better-sqlite3": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proper-lockfile/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/rc9": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", + "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", + "license": "MIT", + "dependencies": { + "defu": "^6.1.4", + "destr": "^2.0.3" + } + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/recast": { + "version": "0.23.11", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/remeda": { + "version": "2.33.4", + "resolved": "https://registry.npmjs.org/remeda/-/remeda-2.33.4.tgz", + "integrity": "sha512-ygHswjlc/opg2VrtiYvUOPLjxjtdKvjGz1/plDhkG66hjNjFr1xmfrs2ClNFo/E6TyUFiwYNh53bKV26oBoMGQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/remeda" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/rettime": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.10.1.tgz", + "integrity": "sha512-uyDrIlUEH37cinabq0AX4QbgV4HbFZ/gqoiunWQ1UqBtRvTTytwhNYjE++pO/MjPTZL5KQCf2bEoJ/BJNVQ5Kw==", + "license": "MIT" + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/router/node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shadcn": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/shadcn/-/shadcn-4.1.2.tgz", + "integrity": "sha512-qNQcCavkbYsgBj+X09tF2bTcwRd8abR880bsFkDU2kMqceMCLAm5c+cLg7kWDhfh1H9g08knpQ5ZEf6y/co16g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/plugin-transform-typescript": "^7.28.0", + "@babel/preset-typescript": "^7.27.1", + "@dotenvx/dotenvx": "^1.48.4", + "@modelcontextprotocol/sdk": "^1.26.0", + "@types/validate-npm-package-name": "^4.0.2", + "browserslist": "^4.26.2", + "commander": "^14.0.0", + "cosmiconfig": "^9.0.0", + "dedent": "^1.6.0", + "deepmerge": "^4.3.1", + "diff": "^8.0.2", + "execa": "^9.6.0", + "fast-glob": "^3.3.3", + "fs-extra": "^11.3.1", + "fuzzysort": "^3.1.0", + "https-proxy-agent": "^7.0.6", + "kleur": "^4.1.5", + "msw": "^2.10.4", + "node-fetch": "^3.3.2", + "open": "^11.0.0", + "ora": "^8.2.0", + "postcss": "^8.5.6", + "postcss-selector-parser": "^7.1.0", + "prompts": "^2.4.2", + "recast": "^0.23.11", + "stringify-object": "^5.0.0", + "tailwind-merge": "^3.0.1", + "ts-morph": "^26.0.0", + "tsconfig-paths": "^4.2.0", + "validate-npm-package-name": "^7.0.1", + "zod": "^3.24.1", + "zod-to-json-schema": "^3.24.6" + }, + "bin": { + "shadcn": "dist/index.js" + } + }, + "node_modules/shadcn/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/shadcn/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/shadcn/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/shadcn/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "license": "MIT" + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-5.0.0.tgz", + "integrity": "sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-keys": "^1.0.0", + "is-obj": "^3.0.0", + "is-regexp": "^3.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/stringify-object?sponsor=1" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tabbable": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", + "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==", + "license": "MIT" + }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tailwind-merge": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.5.0.tgz", + "integrity": "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.2.tgz", + "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tldts": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.27.tgz", + "integrity": "sha512-I4FZcVFcqCRuT0ph6dCDpPuO4Xgzvh+spkcTr1gK7peIvxWauoloVO0vuy1FQnijT63ss6AsHB6+OIM4aXHbPg==", + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.27" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.27.tgz", + "integrity": "sha512-YQ7uPjgWUibIK6DW5lrKujGwUKhLevU4hcGbP5O6TcIUb+oTjJYJVWPS4nZsIHrEEEG6myk/oqAJUEQmpZrHsg==", + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz", + "integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==", + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-morph": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-26.0.0.tgz", + "integrity": "sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==", + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.27.0", + "code-block-writer": "^13.0.3" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tw-animate-css": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz", + "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.5.0.tgz", + "integrity": "sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==", + "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz", + "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.58.0", + "@typescript-eslint/parser": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/utils": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/until-async": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/until-async/-/until-async-3.0.2.tgz", + "integrity": "sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/kettanaito" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/valibot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/valibot/-/valibot-1.2.0.tgz", + "integrity": "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==", + "license": "MIT", + "peerDependencies": { + "typescript": ">=5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/validate-npm-package-name": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz", + "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/wsl-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", + "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zeptomatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/zeptomatch/-/zeptomatch-2.1.0.tgz", + "integrity": "sha512-KiGErG2J0G82LSpniV0CtIzjlJ10E04j02VOudJsPyPwNZgGnRKQy7I1R7GMyg/QswnE4l7ohSGrQbQbjXPPDA==", + "license": "MIT", + "dependencies": { + "grammex": "^3.1.11", + "graphmatch": "^1.1.0" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", + "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.25.28 || ^4" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + } + } +} diff --git a/dalim-app/package.json b/dalim-app/package.json new file mode 100644 index 0000000..f696f0a --- /dev/null +++ b/dalim-app/package.json @@ -0,0 +1,37 @@ +{ + "name": "dalim-app", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "eslint" + }, + "dependencies": { + "@base-ui/react": "^1.3.0", + "@prisma/client": "^7.6.0", + "@tanstack/react-query": "^5.96.1", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "graphql-request": "^7.4.0", + "lucide-react": "^1.7.0", + "next": "16.2.2", + "prisma": "^7.6.0", + "react": "19.2.4", + "react-dom": "19.2.4", + "shadcn": "^4.1.2", + "tailwind-merge": "^3.5.0", + "tw-animate-css": "^1.4.0" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.2", + "tailwindcss": "^4", + "typescript": "^5" + } +} diff --git a/dalim-app/postcss.config.mjs b/dalim-app/postcss.config.mjs new file mode 100644 index 0000000..61e3684 --- /dev/null +++ b/dalim-app/postcss.config.mjs @@ -0,0 +1,7 @@ +const config = { + plugins: { + "@tailwindcss/postcss": {}, + }, +}; + +export default config; diff --git a/dalim-app/prisma.config.ts b/dalim-app/prisma.config.ts new file mode 100644 index 0000000..831a20f --- /dev/null +++ b/dalim-app/prisma.config.ts @@ -0,0 +1,14 @@ +// This file was generated by Prisma, and assumes you have installed the following: +// npm install --save-dev prisma dotenv +import "dotenv/config"; +import { defineConfig } from "prisma/config"; + +export default defineConfig({ + schema: "prisma/schema.prisma", + migrations: { + path: "prisma/migrations", + }, + datasource: { + url: process.env["DATABASE_URL"], + }, +}); diff --git a/dalim-app/prisma/schema.prisma b/dalim-app/prisma/schema.prisma new file mode 100644 index 0000000..bec57f3 --- /dev/null +++ b/dalim-app/prisma/schema.prisma @@ -0,0 +1,27 @@ +generator client { + provider = "prisma-client" + output = "../src/generated/prisma" +} + +datasource db { + provider = "postgresql" +} + +model Session { + id String @id @default(cuid()) + dalimUserId String? + dalimLogin String? + accessToken String? + tokenExpiry DateTime? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +model UserPreference { + id String @id @default(cuid()) + userId String @unique + viewMode String @default("grid") + pageSize Int @default(24) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} diff --git a/dalim-app/public/file.svg b/dalim-app/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/dalim-app/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dalim-app/public/globe.svg b/dalim-app/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/dalim-app/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dalim-app/public/logo.svg b/dalim-app/public/logo.svg new file mode 100644 index 0000000..8e5e778 --- /dev/null +++ b/dalim-app/public/logo.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dalim-app/public/next.svg b/dalim-app/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/dalim-app/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dalim-app/public/placeholders/placeholder-1.jpg b/dalim-app/public/placeholders/placeholder-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26ec07428816be41fb15b2c8d2ac124af664605c GIT binary patch literal 70836 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 b!8!z52hm||wEdxtGcpdM-FI*xc%T2-;UrjE literal 0 HcmV?d00001 diff --git a/dalim-app/public/placeholders/placeholder-2.jpg b/dalim-app/public/placeholders/placeholder-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d37d15b38627c644e61c2daf69a9bfac8ee191ed GIT binary patch literal 34166 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 MC8v%iTnD`W*?ZJt=>Px# literal 0 HcmV?d00001 diff --git a/dalim-app/public/placeholders/placeholder-3.jpg b/dalim-app/public/placeholders/placeholder-3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26415aa830b2f6ec67a51519822a9ca868aea2f1 GIT binary patch literal 55859 zcmb4qbyOTp)9>Q$?!h5AEG|iKcXyY?f(Hxk7G!aEClEZr-B}h7B*9rAgpkE0-#*X# ze&^o%=k0T5r_OYBRdrQ&Pxo(X|E~Yt0sK&S=i&$esHnUIU;+RDbO13D3IGW~{c}+x zq5XR|M9?(ienA0# zr1byLNC*kB85jTx#PdPK1t|S5j{rYEQt5xB|NRR9Aea6}`U?~Q0Oh~5@joUY${Rg7 z6&1u?+r`eu&;5mpyu=Fuejx$C->(2U046#*209uh1_lNe7A7_>DIP8k4lWfj2>~e` zH3K~zH7)H67GCxjOx(=0v>c+G-24JSAdrDwTv|*}idP6I_>T}IEG#Ts99&8~JW4@E zT1LVD@A7vTK!k~GjPe2ni3xyAgoHwb^mi0MgXjvQauetG0J~<)a&yTeRQGO{OF5%nmYB0P$S*ld^-{V zI<9RgGJw=298J6|oF5e-;UBq_xhMb(24swiJiXVL)_60N04P$aj~odlfK9uwsXC>) zxw9oC$avu8q`=Umg3;7(r^ss|NgQ zt_=gS5M)l*I+rb%A3Y*m8`&B_%Ek^91&YMi01;xVW1*BNcG&U;8fvnoE-BHtWbKfI ztd}}9qzJKt=qN73ly%hr{PIKqB>(^gSVIv)_^knhGMM;}>i|r3JAj5jGEFuh@ijjx zlt#l$QxR(F%%MrAfs53kEv(yF>n_kf6fKeq9JJQ&s7Dw}iRdsXI{-Tuu(;^}MA(XO zDy-s*u6~L!8yM2#2auW0N2udQ{C1K>6X}I>4{~8q?XG z-x}pL!nf#n`~Y`>qLiqxnO(b`8A=>%p ztcG?jKk8teHGm&ImW`i;5_|J4Odtv|CP9?K>NcvCzKCIgCs??Mi}XQQ)}0Ho09%A!LpD4VYY{>iN?lp|Zhl8WC{gj6 zxWWDb)ckmpJgzX{VsShnTo}rA5@=na43@=RtuDRbD%C7d_W=E)1b`lned3Jh06>5r zfEd%&B2l|cH3Nt_!&ug1=OtG;1ms6&!{aC6oKqEu(ZFkn@iZ|^txzH(Enm@N`WBo8 zPNAUpTBEl1?Up#<&(7+}iLc&f7D;uLm{1~vzW1+ja4H=gM0<^*u8v%lb&w1IpbjD> zghwC(e4EhoYmP1UFan5+RN6&~P;ZTg;*v5a2RbO?oIYM9n{?(PonM5{gQqGj)WMzp z*lpC-hm~h0--T`Zao*}IR5s8Dy(yAX^DClqrhT9^s;fy@4q^*>iI^?ncmh2RSmBHb z;ebIoIdlL63HPsg14hJDsIvx=Mn;n^B6>J9R5|Xc=y=)madAoBY!(RGGXgfLQ=f_w zh#m9taeObnOU-L5)Gu&9y8dA)F|$y~(%3m2ml{c%Yv7=vte0iPTYL0#A){}u-?b^U zqNJ4CdXXR7M;7q{%N-pg934d2&6NC;Uap8$jf;pBE^=XO`;V%Hf|cx0;ysAAYhc@- zdYmJi<+f9O~2&&zp^=HH$-nGv(yf-LVn`?GyjnT>O$#;s~ zDahnpec3kQrGxfHnD$9iJhHiB2gOvphQt8K^+9huxJek@XN^p z%J>0D;bOFZ4zGS|>94(VG|XRhgN%_>sz4|qhR00;75cy9I%#-Lv+~F3ynIUdCo`l= zDAt<(u#qIPM=f45FAL64Ecb(ijuCM!LkG2r3Vj^)qjF~s87d(A>p{M|4$|2OTW{;55#iN67CNN(e@-)fx)494f zZI|S$yptcBf7%YFsQ>uRH2ad_poIRJ2kydlniG;!)10QRu;)g3__r*bs`iTv7T$Gj zA70bZ=IiQAERjZWHgZ)WIcYnk!hM{*i{$x_K z$NYS>YO+AzmaRN|(bm&>B;9{54OPiA?>tzQc+@hRZ|vOrUL@fa4Oi!w=;F2O#N@=E z4H6g%A}%}9C4`LsD(-c~L(LbBRZ92mW^>guZGqasjariUw+S$>?7{>d>g4Rj# zR@*Kl#x)ZQWn-;CenY-4WRvC(Ed2of_IjsFdN;s*rrmQ4!u);i7j2%wk-tqRu?LF` zsN5{G$TP;-`^=??DKJM{ytWW7Z`V#6N)~xfzcA%)RR+8J3urG zCFK)bQPOMhW$~xr=t+!RB^d=98SR9YzDWRgeRfWPJ-5Q~H~HSVbiF(p?<<}?ReT;V z39ltI=)r?i65Ac}!xTHO#Zr zKFr6D6g0dP+JUF!qmh^EyeLeU&~R8-VP{K}KvrKBLysvQQ$PLyJ8Ja_R7kzpEgPr1;szLd=;EV!4)b!tRohV#zdN zRJ01RQ%Q?DyPa9nZCfj`v>VXWTxxh3Q~YS~JzLtQn#I>a{g11q>AAQs7waNN9RuHM zucMWS5-ky@>YlFXVtoh8x4ppp9Lz>o-gx>OGL5-3m5e1>GYs_$XIHe5HQv^C1M}A7 z$b`xLC7rKOQmRRVK|V=Cj~(i~#cuz}`UK#7o3xhJ92_#Kx>Z5n%scEmoyoww@uVOf^!`r24gAbIXjd({(pt5@QMD0N%Syx9(r5hx9eLSNHndVdv+zt0_>(iVBgUc0R<5i8?zk?8Cw7?kU|HwVZ|&DUW{ls;_i{DdHmdbMGXX(pfRZq+dxjALpm&$2d4AcSiUH zKF}?&ajqf1J6DBe*>@dP6jU<#Eb6^gF$opA; zZ1~3Q;atWz#afZI&||!;y@WQ_?DPic&}i>;_O2fS*_i9)ifuJo>N}4i_@3-!8K&3Xh zJSleH6QsCAD<=Llz`QQuCzO(mQh9*;S*jme=D_x7q5C#arYpx{+z(u?%$MD#C$)PY z*eM#PbKtkzP^t=KO3Xn~q4GL~7!A-@m!Ye@_ilN~nMvrH!rh@Hs`#!zqkf#e-I;Nn z6igtFp|>brgd&`KPF15`kyK$RcA}%d{4w!>3p%26c!?Ut`@UFC!)vj9pMNd)CtSRj zK-L^L35#fI`{;&(SB)uEi(=z)8d_q!!oCO&Z+*PQg!7oOr|huOBPj0WFln@6#qo?z zk3uTGh3kitK>mqWua6^@vyfky7ub6iXSh;n+f_S#+$%ku8!`eXOnO~k1dwOY=a~%6 zK`;s+b6;HE4Z7vUIboPADvYeXfT`|Ho-RnD_{*u^2! z?lmG&6ULz)AsMFbA)C;vj@OwaU8|I2YcA>Fs#ECk(&sRh@4`MJkv* z`dU)yjF$b8bD+I@9}T&Va_Bv$#7Y$GV|7B30zfv4NgPR zoIS35BX)|uabSD6gm+?`k5;s=RB?D8bL9=EW=YIpCiL<1g69O9sJ=ctJ`nE-ey5ot zumqHS$%`w|eXsEgE8*ve>V{fW+(2=m-A7A9Uqc#&;a0gaZ{G^s+9s|NIR`R|gjuJK zGbaypvT`mV+FmA(!}_K24<{*TUaFg@>WTVM>Wb3U3COC*6>ofe9erG5tIO?jm}bZ&M@*i4ipm8UIom9 z#D%|b9|v|r#EDEY7rst9DGD!sOo!LdluzbkR#A(60I=s@F?)DqRE% zKH6IP)NN8pDr6BDAUwU;K4K@!Ar^c=JmIB}-n-+N@1U(KZ$34b+OzEMl-EaW*qsi| zbCPj6Mk7E^Bp*3~&89ZH?X`n7q=wD$=2)b9*W{J=+>wsm=sSZ8y`d}__)UN!$4^G(_m3m0J& z5}Is*BX)%Y*LQFq8bed+I-7~@2sS!0QB=?#iF(I+;S0MuiX2^IY{$`fv<;~-vJCCT2(H&6OaUXM{iz-iSOrIw*zUxz z!W`;No@zm=k2$CA zhp#W*`TOM6u>F=O{9$ZNM}^#j9InwwZjTy%bcEs&j*dl)ZW^x4{hIX!A+oi8xNl@% z_-i_1)NoP^ws4E^b=n_f;Y8u&$jaF3coEbQL8x{wJO0(_~&@&&LcSQU$eC$xOpAD5XwH*xpii#_?oQDz-|4 zO!w>E*>0Gl=h0sPart^vu&-l-7%SckK{erVYhrs-M;XZHFCa#Bx3v?lA4+7N=klAw z!}vHhcl#|YH8#`Cfe4gP^A`}IIIFx;ZmOPz{8X10zy=p9w&dbfRgKoHQQ+Qkbt zuH>tHnuy@;(Q!M2N>*~z8X@oR&UANJG3{pft3`Zf>CS%lX>g;Se`&VzpJPPLV;CN`%b+Ot}Mf`u% zlLNvVS8)SW#xYiGC zRmp~exjdYwf~iC2KIwY!Tcj@+rEpcgqE^`$R;<|R=bPADnew{i9lq*Ikb7GRrEOg5 zlFz#m>$_%b;UHX1{tH-no3pvENERa5VCV_5nzU9*39wZC^vgGMyP9_A0Gaxtr!Zblz%07^27^d z@9APUsCk^(N~X3l2E2jwiOa`L6=J#$haG=w>)!xji?H-0cX7dQ3(ggRa=jF67+Yoz zo;Eipf`^SwXrm?-^IycmAMGMdpu1{OhK4GTDlys6{_!(0^W<1j8%D^4>jN6pTlY{v zMN32ZSwm1LIpq~tj5_FI88LvoP3u`}Y85$OPO~_Cu0D5K`>5q@Fx07;45!6)v&f5gA4r*9^<<|3wN2OE}437Hd3W`4m0ww~X|Qk6K|JJj-JqmMKqdYPM4x1?JSNq=gy`#j;-c&ojnBQ~2^7 z9vs`XxkBn0vAaS6WF8(pl$)t6hzXk3*Us*JwUQ0hoF?@IE&b+qxe3YbW!{qF8lSGttaL43UwJPeXMjRJk{ns^QGXrL{(8{o|UZT-NxAHUy74A3-~wHpY}$3 zPIup1NInH86~t?}ZM6ia`~@)mT;l~<3=?mYghn^Y-5v#(wQ}it^+w-NRk*ij8Dgl6 zc=e9KyuW*S;HK!5?-@~d7yeMv6=bfHX0P}Q;BYySGn6LIvIafonF@UiO`x4r?jSy% ztlzEd5=%8C_9iOM<4UxzvK82DV4ZdFt7CVrqD+fC`DQxuBeVVe%dUyxr@o-LwC>D_ zsh@Xv7j>oAU0gVcpz39IKThMw*8Dl|D&K>i%8Y7^IhJON!R?7d9*-or1W;9!^Z+Hq zo+ng8S}W}@;HAsSh#||fo~Vd;Z4vY>Q=R9D+j5pWK1*`$aZi+9Jk0yvq~ zvth4#Ao{8Aed}O~LMUIp;-_H03bm!b0LyYizQw5-w+iP9X{yR5x9%xm?o3+!IBtgA zd6pTJM3=EanlmKq&KpKk#i;O7Rg_VLx50cU-#lx^2TZ zJjq|^LOT~UpHm!5smgP5w#ar|8n5L04KMm(zMS@Z+zd>cq9Hj<@}2nVbAi{U(nqa& z4OXtno?XS@=sW(mv${{jtfI9`DguMwAn8hFOgg%ZwQH&hGZeh40sQu{xo1nB8qGDvlQ*tm1r_RWL8~OKD8FbSg?00cbb8L)E0>I4I+dLr zJwSy7xXMoz&p`GXry#`uKBb}H0_Wpzkg1b)aDId0SMuYY3?238LJLnH6g!8lQPX`J zTX@IJlb>7W)*91}b@%FimCDT*#_ZN^=om|g$4_IQIxEw_E3I$W%gPE1bnat~FF_+A zzDMs;dcI&K7Y1-5-YDI9k-9pnlG_e7bB)5@64?Q*@2P^!Jtic|m3zGEd(EowI5}qQ zdNNV$z{!aTCYD`2cE9oE^I|Z6%K2reKXAJ+_NQ3N!+u`$(^|kq#R7^Z0>8V9@~jnq z+woxSah-Bsh1b>1`c@W^307^?maM-8lkkHEL(;($wOMu;Y*yu76$)FJt&(~Csw#Zb z!2?--$y-w^S3%RphUkc7IHH>uy%~o7w;JiwR;nth`-H$uui; za4}b`Op$qEtX?9B7~S+Tye-t8chZ=53~2{k`5wP}Ty;aVG%iLLCLwiS#nj3qK$q^VPf{6lvcRLAD-;x@S3YyOWbl*|{W*5# z1wEo+5KL0?cipx@T-L9;=r0yl$*=gzs0+tK9zzlDs^SjvV;9Xm@#PA(E+vh2MYC*| zI3A1GO-W%aH<$G(Z{;};RZ%K&cQu9Sm;U|&P%r4K#n@%}!m-ViW>l8^@^ZtbbCqAV zWGsc|_W8V;j>+6@uo2x%`M~8HrFfprwBVI5^MAg489(YI&iUF?bQH)gN~3lhM?z1= z{FU`FFEd>OKp*yb4v*oJpl3dB%?{{n0IYm*US?EaJvG-t|WO zsyt#EDond_j_BvA?(KCsMqfFmR6xoWo4KiEex{uzZVDMnV@4TAM(eeYMhDly@6s~& zbgWI-XMfyEA9eR4zpR}wY-xXSnZhE>*fnZI+p2HLlPM$ zlR@BnmZH77J_QPXm5g*UbHhXQeD4x!ug$i5VaYUOGGPV=BA=?sG|PpR_g0$?e_XFm zlu&+L3X>nhRG%;t8XI}ku-uzw@$(q)q^AXY64j#g^r5Lx)`=~fJX&)Ft`xt`ZrWx= z5h3{&bto{%URYG;Gch9_svyU_N(1(q?$o+qoSxMy-yua?_%>0-xrcy?tKz7G{=ImG>{)P}Xzj8-;YxBs9 ztb2Ii4iP>eG4;xh4yij{HZs+%>EfA}!p-kZvtPx5NJvb*Ey$x^@j+K?v{#=K6t>-C zX=dBKG)=%aB;H;G3#l&&^pSaNRgvzILxR4SKdLXKB&Q^UcGE?a@`|4_fZ4lY8JupL zO`W1&N$iy{e|n{Dx3R4k*s`R^N4NYAoBX0+{9Ekvg#Yii>FM6CZ_>dl6pHAJHz4va zc3cUYJ=Cq~l6eh?O+vE|d6ie$q-t)t{v2PBf@NN{;@D<+^L_>Ee8GU8V~NkG;&Fnv zs$+h;g2|`7=A*j-!(h0S+Ml4CtW|JI<}WhyK>GL`#eeEVWsK=n;WuA8IOAF>pYS%Lrj3vS>E9LVr$RaU+6jfZEz^D0E>A5h7k2{3hVdHLL=sEIGGTDUImE=(=yKwBZ?Ix((|pOVV3rmw`!&KGmt$F{o*RX0ka&7Z^wVU!M0>RH1;h8g41Ey zLmOYg`*L}>A(S}SuDUymw?f7>T4m#npBlB%cb;>QX`*BY9+a;(G^1;S@kF`sYevCF zzrz*I2~7u)XziruS4JIQwS<@VyyD_&Ang*znlg%J?U_tj`|R=DqPoca3jK5Q!p=m= zBs{T#bK3+HBW8QU!|h4NRz0%GZ6aRScxIw)rhy&%jD?m2)zeeZ)hU!UA+Uu$;oZcH zPQV16kUZV)OBtNLH(c_C9_wl^^!4Ofo2g7ms0~o*Y+FatVyY4$mViFkbx! z2eAHW6vw4j+5A5GD!>7Ag%u8FDLcKtav~9Yo}y${8mufRN0b+*(=@dmAKi*N-dBu$EE4Z zw>IrwM)M{lT6{FG_%*`xO}+rWTVaPNm=rCNq8m^Q=wgh+LR-x`!x;fUVc6Mm?m zOH{t!UB68iQbYaV3m4kHh1pAWFt{n?D+dM^vnbIwoZB6#BvobDlU3GUurWhe-mLrT z_r%)dR)TXMET2iu1Qe$7t>e4KX)o#!jo5_G;;hu(t2o1L4&lJ#R>~sUSeD+?RdHk{+p?)RX^1 z(KX^Tmhlv+5KDP(mF=NRaWd;R2Xw6yMwA@FIvS)$8SjN@ZA^4#KSfjtS}-nd{YiC_ z?VRA4M4G`k;;V0v_1WVJwOe){lop$N8f=8(Ph2kd!;x@rYzy_aqH%-F;glC1D6MPW zwQ?-Cr^#GXu}LMci##p;@D4s_Ma~=aT_9-(Gl#?YM#Z~2{&RCuMp2SDc?Xr(4Z9Y3 z?uwAS`K7It!I;8Sy1bVc)45eyfGX>PX6sD-!Bs0StjAqbM`r##^la~^(pQq73D=`R z>9px|$`uH*;-}JPXklnF_-w1tefadcJ4bd31}T?rtES>K8PUpaWF|nT_Gf8PPx$HV zs~@^Rnn?3`#@ANgzG6C{aUEQDo|+Ubu;WEv{T^~z!dG#{GxuRPp_vK1B0az$-xD2z z_C#FIuJ-$<&LzU`ddvM64h~d`x+E;ME6WxFDgtlg%X)2dWp}LMs%SIm2ctdFC%yDx zWsX$yHJ>)_lV+god$<+fyY{rSM=q~>zYC-i{eqAz9*=!xPqpXxsfbIgh@mtmsA8HS zZ!w#)u9`quUM{FW6^JO*-M5I%%C!^`oncrxivWWJcW(=0#wcpAv_YWSt2PGHomG?a zIo9di&oP6w(Tok4LlHR)obe&R^DqQ-NKW+sWRoF~Ln7@D|3ZX_M6*{&v$hehOSL&@ z+!3twL;z%DBs8Rd;KlzGB%;^a*2u&!_`?DJHbMTU$@Qn>Fo}S%KcuNc>oR-tKR~71 zIQmC~v)k5wDgs-dsMN*l$MDjp$5o}J5ke&h5l|&6qM#w8{{vnkkV^m>{qGfj2rf z#9k5UO#FhaD6e&G%Vf2gg{-}Yen(!A*kzQq{TIeWe}#ZC&z-+7Q$xadjyz#F7MA{H zX&(+7*arUs6uyocJm_>tu8qFUUa>HSt9w1i-6#I0k4!lZ^fqgP?IsAixLd46cWXRh zTq%@VGL5{>k0o{I*(ZAWX9!rL-~!y@Iqt_fVF0)Mx-UW=h<2uk_PsO>snk-PJmsZd z@yLaS_*rQ`HW>^A^-FNSQ(SMsESNrl1J`ZeYGn9M2E0~(QLL3~*nI1%w?kfLxu@NM z!?4|~7cuyX^&RLa!$%QLc{!*`88pqiBoxntO^`~=zwf~YKLKi<|M}+M9?VDi7x2L} zZEFj>bCIIS`DayAQg5e6(ZuX>*m=A>&;ByxU{mJJenXxOQ| zF6fGlxOlkCtX0g(1nHz7h+X&kPN0nxilj4u%VxD9zC!(iy#s#1Mb6t+RDS`uofD`N zg8@TUs0*R5oSrEXx#3zwVZZfK%S^3yq>LZf;Ss>=62{$Ox42F~A3m0uA|2X=yP8-jc_d0G1tZ=r2Fw+_!s`MXl1DrpDKVRkmV zT;oBwtYi2xSKVh{L=n#OB(T49I`lP!FWA4BG@ngRRf*LV2xUZSPo&6_+EBp1+`U(u z9e!)cr`>8)P-3X0@++fX=v~-mSA+a*emI_u_iR44c;9l2+BlotZrGwjeK}YWA5$P6C5dBFT4YXP!oCVsr+x`iM#l zVSdN9r<`NaqbXu11HTwaYx@fT-hO%etT#j25Eymx+M1Hhl@>Tq#KA}>{q`NYzomIUK1w%dip zZwBv|NI_dZKC^5z>@`UY=i}eAG5new@Lk*~RQYj{^_|oY>j!5=w z8FmvBm);$*hdVsHU30BHQz9e6lkUF&ybEd_n&+}dpET!+yFRekwZ9S z5ypJ+qP{E#lrjY>vuPtx=oCm(O|S7+ggNCvm8TJ|w7(XHw!!B>JiJ&Z{oxrEDb`Fy z%9`lv+o<|?YIiL}4m)(J-g>VkYD5KBlRdg^uk;sh3Xfo_rUPs>=N!ZGsqHG*Naf`Rc9wP8y|+keVFsRuWcoRD6OEFU+qlXIq&*TvNU zNAOrdQgoRLJDfY*1-q$rJAC`MNqhizXhuE_c(+f2hi&ZbM5@_>LnW}^PPmLpE8LGW zy3h~nXyU_1bGi0gMSqQ~S>xTf=oS@YvS^F!(CpBh%33M5YlWk++-}3{d!99P;}H?c zrYmskl!pMxPFx*Cn5H_ZkNnxHcQfq3>Pw4XW0P0;VofBQ#_u@oV$6t|QIjy7;g-~s zwU^;@Kg~!=o#Wi^R|6SW>7Jk z+quGt-b2o{ScQAxhC-tkuQ+1@hGbNq5dezrwYU@s%C|H;`pn1dZ8`#AlLsyn$ zeM&K3MW)QKyRxS?en9ni1HeaZE2c>S>I&e@5h6tFF8%^0xf+bMd?9v{T0w64q_9++ zv53JtTBY(35``4zon%`r0+87I1}^_XX1|Lvp9rxQeT%hv))TH}oqh)b;wy#ipz`z5 z00@?c(RN~};|Q7E-YDH7@FH1=v&~%G!K@gz3%6&vXu|&H53Z_gVWTfHsB&dXFkb21 zNg@k$msE3Tvx(kn_>sGl-tZHgeMdIzPDUGM)ZQKUP;w1{c*o}U{NSS$jZ@7XP5++L@Uf5V#j##u(%_Wlw>wH9J=h}U(M^7mVjSI2U)c~wI3n-CHU&J zWpbtApDQp!Z(@kTkRDJpmTV2X{p2Y!_?{o*{~OBCp$dFh}O7dIAnO^ zEx7HQTbHIl=0f}^gqO14AiBGZe3px6rK-*EOQ%Lwmzi23{`9)W%3VHhx0bJFR`$w= z;l)PA^N(@8@YGZ2on_i|+DPsk0}{f)n8ApOa`IM=n`*|YwXeTK)T4upn|*BFwP8)Y zOZDD%=Or#^d#E1s=mNKpzwuHyG0bGh@NRmOh+k%EI3#Y?v^o>brj_-y*0vi}yCUJx z4g@y06v610oj&9ihH~CUnU!tk+KO4{hecoV)8_Qryvx~UKQCy{^JuZ(sG&2Qv7exN zJ8~*tFzQp|`N7AEl=7j8B@xz!Y0dikBkJc&0N8?St~vtgrMn*0!VUZhhi|0+)nXqw2> zV=<#M_)Jmdk49l(6Er|;L)7;vr}wa=&EA&kz2V)mW_E!C+qMF699YL2u@_Ow+PW^( zzQQ`1lW-0-IZLL?VLj{Q^4&&2@oieUnk6iIq))3ek@)vqJgZmTcLBrPiOzlAAyqvZ z8Ske)*PIm~M9XhvZ6cQCPxDc2kB~N;d|`TJ?RyL49xe#haUSs2=CsXWR3HYK#NUjp zTfGD!*ev=^B{OE^V(t@XEY_E#>FK`!Mo>#?Lp0)(vbb5+HuPF!`<4Cn>VX>tc{cH3 z3369%oM~btJ!9e({^_!0qccoO7C{lcjd**!q%C-uPhTTHBvS{8;?CYfYt`BowSQV2 z^B^A+bQl@^deRjAb;eV?-f!g2oCEWo^p1VDT5CfPVSS6kumG2h7S^~t%t)}blR|a| zX(LF<0Y;Zo$)~Ko!A((3KeHssjbTqBJbd^vkqRgV%2mrhY)a;krvN^!5jc!(ioOjOj%&7#?TwU zWpl@m-9WLt39+Q_jexK=F}AakUXQ7V>a!C5!XFW7kPjNXFFG|ePs1`?K32`)WvtTq zs+YXz;X@71j+?>nDX)o>CC|blLASORzk$M$$qm6kscj#_5&rH>UP6Q!wEG$qc^2#t zvK2Il+!Wf9g+2Z;sZ$6W?p;kLughl@sO>E;^NE(?ROOh!m_%5HCu5`yo0;zAZd{w+ zSl(;)T5SLH*J|ZljrSac795<1hdDJ_MQ%p12bPCsq)Wb2HNE|u6SLxG`BZ{|9k>$B zYWW8`!o#E}jfp3{3+1t)9LEtxwTa?2<~hQHua+c^*b5c{O=TJN61Uw-W_;9CPC}+T z68n)i_$@m5~6aIFts+xw#8T| z2$z4SzKzJF!^QKbaTg@fqGOX;9a%nhQV_!rzuIS=2@i-=wP{B`u)L#7V#nj5hq*mdEz;ty1 zv^R*-=0KnrJ^=2~;Pw4VAhl4AS)p=yTRxtXn;eMWSui!)SmbW75AEI5w1-O-H$?^t z`Yv~0BF7buy&-j2a`3(M6fI!SXG7)rWv%gc>{mI@EWErb*(7yRO5XB{$gG0GF zt22IiV^U!s*d6^Xw&~LwVFEQsdt+Bq-MY?nsZ_;lS;tTojs$9B^~4RSyti}JFlh9S z*ayOe=&95mVMy0n3Kbg*q+^PfKla$kXr=L^+pMRBaTsYlvTi@ zYU6l}swq&Nh6YOb!cM-Ktv>7NBEGHZlrq0ajvhl};9i}ox1Y*n%M8RPX+a#ax&D(M zgvby=9P0n~=>G2s+lw$Fy{z?ue+aVk;`MKB>;Fv-dd2wc3TruOPP*kQ9cUcbX(=73 z@6UL~sedm23#jbntL^1YI&OJry~*bbNFmQit^vW<0H9fPJ}00{>a&p$Nm79`AR0B#Fo|VgAA^1RSR)7 z!}bPl4M};s+@&zQy6am$y5muMi=6vF z+yqcHJP^5mR+BXjWm_7OVPx>NE0%!gP3BwS+GxY23g5=)*?!1_0Cw!&x_y&&riWR! za=xkx+gLgkTOXor%QG~h?v^xt0w)w%Ia(H2fR=&?Ovy8 zN!R0Qs8Ni`3N^a<4zx@7S%vZrpou~Tn5*HsJdrk=qd7M2lRO|Y`P-CMWi!5q9M82-#mCxG+&%gJ97(}5rqaIq>{y3f*zhK8&)?d}Rp|U9d zf)U87=%lzinq7@s_v3~I9-Qn|^|g(OTF<^huJ}u0!W|h!N*76O;JbTPcG-Ne8?QQW0?U6ngA1oWbUEEsf1gI@1$w<6NHe zpN~@yY2XMLZOz8QR%dt6t9!wOhz0|8$4f~^hzup2{aOG|Lj1X>#DFcE0UH*z!5)Y2 zs3><#L(0jNkAixcct;154tCcKi+6V_$g-lcf;Wk&QpG{uI503f&ldK>FmzjdPzPeAR4f#me31N%ql`^Zz`(eFJu>tS!g##EKKSvu@SB;HS! zTUPmV;)$CkEnDC*2Yjln<&FN{XN9~eW+_UNG3;IFaznkW%cd4RPcb%mU|?N?V`i&y}KxYMkPH{jPSrS(Y(ll=q> z>xB~J6B&4Yckj^~E*yQ%BrabqJ79JqF%{3qVCB4-{BW(H=3%;PZ)Zw4%39k&qKC88 zJlrK}Ht-`-^K;XFndZpz$g}HRbA1m@R&)me$Hn!_8fm3#!mKSNx*OC<+G-7jB^7El zjFR<_Sr1zo8Q3X>9}43&;pMRYeOvIB-@eu-PW3gZupqh1d%lp^x~LsS}J` z3K~MdR#_4V0)mHev`8S{q*TAi@b=cTA5JH$3R-dj6lW*{;mfWh%_dSmq`1wPJ@O6oX#$Ui2 zs;4yT2>XGL#}hbIbSi2a*f~DiC!AI6i$ByOom5$}`XUWXEzf*17sW!-!dO%)N48W8 z>H-+5&I%kIOtDpi5o^RFOh=hd!-OJ}FVjmUI^IpF5KTq@@{=Uk4DPkB-*>M`4@x7GU*jb4UMsUi&J z$_zZ$A&S)po@dl13C8U^;nYpAp_$Ih?K>iIhBFPkF5Mn0n4C8jX-}cklDq=9`uc#5 z0!F71903;wkgf!DDX{VhU(eqz9$sg% z2kB{k{eac=>w!1sDN)SYHS40Q61SX!Ran%l{o}){_bG@^qmNOGuDr~z<5jET>)mH8 zlKUu^%}WjV9R8r}FhBk-y?Feof% z@&3r?YS>GC{kn6$=GwHJRREg_@#iAnUkP5QEWue;(IVS?t*6Zn@n8Ny}Z4&DO#>Y^YqO(5AORLEoYrgY8p45%*wBk1uIcR1_#!)F1 zdyKxA$LQs>bjwft66n6&rz)hOb|xi_FGcS9sT&&5OKYe(Lea0TecUMW6rYuJPW*NG zzTsGuf_jS)IMnu;Q)M7sIo?XYhtVS^B|v_BLD!{v(%_Ma_>o4XAdomI69^~%G<-y0 z>mbkmwrq2eCH<8!d84NMi^u;V>Z`+={NA`nj~EO_IdUVVK}HD(qepj%bR#7#k{d9( zyK{szN{Mu%w4f*>R7AvqiYTb>zQ5~w-}kRw*R$<8=iK=`=iHyq&0ULEqH!m`QOkEh zm6JO>jM&YAFPJPF!wZ{nv&=g(yONoyV3p=xIX_ICNruni*F53i$&^nYx_#ta2RLYW zHJH34(knUtq&B~=A+I4TH!jy*cC1}t;h# z%J;DR{zG_|ip7yOWg^OFlot6s&=T$*MH z1z=2niG+~sC_%&QC2q?n=v(UrJg>&Or*13eNm3K8fZ|~p=y#QFOY;5-IYhh>wl7iyk@O-wOuk7lk~&$`SSBsNxipp{{al2mmUpT_Xw&Y z55i|%n8T@Mb|{i-s6}=)^$l6aHCr{K$eZmbQwuefSG**cWYZe8zdBjw+x^axHx9za zsOupEvrGy{Xd!8io)l;|FG)>#W(|S6yK2ZbQ3zV@dH$a?WQDvNiqRf-bu#^+^+F3` z%U>mZu=`!eHFE;A$yb|j|B>)5x&5-Xj7E_Q$ltE@zNA}XeIB_{x)qgKhrziuJH3CH z^x*k-6*%Ix+pM0%lJa*S8H7O1Ho;{>Zf*9@gISOqFQ}R#AOGSX2>!Y5z-U&uNtrUEEZvwT`qvxLf+)`^TSkEc2fJRg2LmYG{nhtJgg?O&>%=&`lO8{$PhF-wueRD=VsW*APwtR2TDSFTkS^Fk-(kYkaLw*1f*3Qa|UO6NXDr|O{*!! zcvG@J-|~_rLc(;A^=q+UKJsn!=x-MBz4y&h8Q4_#OuO~eq(vs*e(IK*786>YywB*! zD9)Gx_Ya`C9FT#Xi7y$v{ro$Me2V($PNZgd%pY-WWuI5LoDpv8qaps!p{vVzaTHT4 z2~FhUOAFy{%P(}!VJK3q_i3jZp+!Sn9C<)|8Y zi9fV@D-$aP86C2kBI-wvGC{Ajy*gjT?r_dPed^4~$GA3%`8ByN%y?3{}X{XB3^els8IZ zuldWu@`^$%!JoT~!R8w~7h`n=5N7)^#7E$C$_u>JraM`tT+mlEw7zZ>on*)2ttnH~!UMfdJRP zo+wwO2|ryBnclWdPrwYm%D@(Nl^m5a!6guw+_@Cf0qUBavL|wSEV~o@CRb=C^ZuDU zW!Q0xSUXSmQ`6P=ku;27{!*!bk{rdg*Dpa?l=gHhSEI;CZ5=}OmwIoF5R&B zYZ1~;eUwjbXKuLjk>F^DHJaJcUdMZ_WBa(#PnzQEuV`;hvKO6*Ge?2T8tfo;E1A!O zkdLvAKh*53+R;LiFf*0ORXxv87o=&heQlFE(rnM8Q_Aeq3Uy%l`0!Kp|lI^SvDgrPn>w)(+h;b~4NbrTZVzyIy0AP4?| zg`H!yB{;V;%Zp9?3S{_q4D%0A*F^SePNqd*F{S@dp{N9Y8Z{75_PT<40t8IPg(!T$n~m^N5GU_u%qrcEMQeg{dtIaEv`HYeABXEM$Di>93N0Ia&tje@*1l`RMscB z*9C%>33-iAz6LejzA9`v5kRm@P>uekbS$j>AbPlrLbcp9IZl30&)QiZ_n_$*2)1CV znC+^zsoPGuiwxmEY-LKU)1%iH@VUaeBpBj^Yb-QSeKaqShGP^pHVoEoo{nD6H@$4o zsGbLwjx#e|HL))2gC|M}=zUlr^+-)VHGsH?Tefs0()<&f^6Gw+>jdcYrt&eA` zZvJ4xd^n9yrL5qI@o0o{E{TwNfxP(YJ!3wMPL@PF59UDsO2?KaPp^usKd@gK$zWFAZftKlwo#g9f9(`J{RR z;9hZ^o#Okq?Eh%lvAN>63Ml05vdxt6V+-2*skn}%pca&f>DJ86YdxRsd{kD-jfXWG z-yx;xP0pbv6M9naHn~t!9IjS6AV}Z7MxisLvzO_KD!SJ`I8<^>iP~^pG$Yfi7u-wP zW~8LZbS!|&wWJlxvS=1FXh}iN-bb`9KlzPr+;)4}MIBCYPv!@A;T~gZ)3cz?6)RL$ zR`A!IcY0QkaH~9SIitEU z2AJlRD+L~^`E~*MLEkkNKbg0gU|3WA<7DPo(D#~HE^R7_tsoEm3|H3+W|hi`DvT!Lrb)qx^n5H+ zz)l)scD6;1x-3)Af85uCsWwBSHKdL&I9}>^+8#H~t|b}Pnq!!LScs4lLcS9D4PoW4 z{aDM?D!loczVuPNo9ibhOhNyfOB0LQk=mCxTnpOx`Mn&rR>V8|z|$61p3~ztwD;ph zGfSQOIy?G*IP6S+UE#t11CW}#JYGW7c6m{xMUUT zv}&wkUVOA%Szhz5yriH?ThNnEaj<87am{Ba3eFmTazV|hbkV~C?jas{RI<113NN;y z^iHOCoGXxPiW$r+=}a3gi&3R@uTH7BQI-|w$f|$#+jJXei$W~ zMWGuTSTzimv=xsvG&lT(OqG<<@i2LTMVODoiQa)&OEJ^OXwU*?_P%(Q>BOq$fYqB| zR}Nq@uG?e(AVjS&XvZ?NyH(<+V2o1}t?GEs$lsaVMq`!9rH(_F+jh@g6QzkyEYh+Z zD(d0D4xdQZyXZ?T;62^9HoKgaMPHT!J_b(B&ATs+WQO4fIpFbWeWUTNN#U$VYXQcn{iWICX@?6M4q#(=(4Xxd+ zKR(c`9*w?x25AdQ}>s>8aveWON^rRI+t znhgfE&{k=cY4)`Wik%kTZtHniZln1@d^_e!L58N+GK$^A)SW)P;T1F?@V5{J`$p8` zxgfD_&&-6)B2Exad`|fZ%fhohm-p(2dfRTn^$EEISYE45n#_<`!AQO4)OY55@f?ko z1!@JEQ@Px2`!I2i)>i7LcLxPAC_$NMJsKs?yxCUPr@uj~r*pVp?q=`)ENa9L)2UMH z->7+@I=RwaFPQG7TXGJoeF%3}3cq3t#urpH9`DmzHr??ZM?Q~pmsHtv9Mbm*6 z3f*14>dX+>N)mq~`0lW2ytBvbq;gX3bSi(@9*#Xa3=U;AByZn%@g}Dg)zz`UQPj6p z;lAJW8vPdU9ekJBue6RM%HYmi9#<}3*bF+w`&c6RP?X}5r#FB-C-Z0?AMWL4IJK9? zw*##=guoY3K1sCazIA2;up{c^W80b8TM{&d4I1vH(rvllPc=%@*t|9hzC0~Fw{);8 zbDnrIy=bd!9u#WdWjRdSVG`*aruxz9NEv=ngnn7y8UB;U=*_Rp3uT{wRAaWez=U$rQXv5Tr z6&wGOXBRH+98}WE?OlE&SHS1$YbE%eAjWV$>&~Gclz+#1x^aa&A26L&E={l@mT0UR z`{Qv=zrrIC%hC}F@5oj`mPog8U9V(UPZK#NBa0eEf76V0?+lHNO7I+;#tCTU8$9ML zhL)4M7asE9LTD@IxA>g-Y332HPz!IRLrU)&oo%nY-f18u4Q5XEyKLo+MEo!5jTl{7 zP6hI!_kEhVOAH~l(*@3mfXz9de$(0vuTWR>yX48uLDui7W$o3^<+p0x$y-zs-v_OH z`h1J=m)sJaW%3onZ0V_jZfeS#Q?GC#I^QV%d{<(@r{k74%&|aMXz}PzW}%ube{V|*WQMOp&6!&u z&eDOs^ZfRT^Pf~icareR!JC{%(r0Gg5{u>Dvu|!+WzAapn>z1kzk!G-C*w+=KFqAm zsZY?j%IiS>A@9&cqtV^d*GwB3pIn!Xz$dn+Ml4vL6JxYM5gwykQc~ZttRhx``%c^0 zmb7guPP6B`M-?k490A(FNDR@s^oo=7Z;=SU3X@Di+o(`=nN-}eXESfs+~reoHhZTh z3t8Q_RA5ohHw@uk?~<1?F%8XSjHcer+rG-!oCq~eU}0uvb%niORx9&u;~EDY(+R0nyA% zc$!=86LEt*o|64S3yv`KnE;wZuy~==_qf{G zB(-}lf{0}CrY?c&c;BuyHQRhPy~HnI_XuN0Ve&c{y~mlosZucuY0-H^!Nt;gH_s52 z5~Ix#U4Y@*u*ACUC!K>$=A|a}Wsf&~;26p?`uK59S=}AK8B~OLa!|&JlGf7`+1poT zclejsXZlny+RYhSq=mb+F(N7Vl1e1EU;?w1A3Ub7U=a|sN}{A$AlCk2240dh8gv2Q z5otqz;0c3^L^A7C2-OKhr(`H$D_XFi{;$+`#rPoBrlAKE(Q>B3!zI`yVE+|-t&c|F zNQe%~TfW-(0Y4`kqHCzGshg(*$2buhrfM<0@bZuW<6XLIQeg<8-MLUZvUN54t7Z| zzr`_%E;W_OOtCAJNkv-Dy=cytWlSXD)h{uudko;~ki^za@;ReoOzJ zw5e@I)>HF`U|zF^^pWm)oi(Y|irQM=ADyQ7!AMBmp>sQ(grkfbcj z8du~yQ}1IxArIla8y<-Y_B8GV&HB@MlG|`Vvchg%)KJ>SD zYL}3UE{wvI?lIRi*r|O|di^_{P03bZ*BM+Of5WhE${*v!$WS61sRV0b`Rr~bvatZQ zD_;+otz6L*@zS?!lOD7>a1BgXdGVbisu01MXSrh)%>c6v|HSc8nma!`dX*3_^|BlxM(}-TN`U{Nxkh)#q z7D1sU+I^~=aiC7am_2vvA0Q5s4D``DS61v8ZB5hpkp}{3;D#>6|6-HEeu9rGT6tyxP zV_n_aNfh=~Y0ajM`ap&?RJ6K%#X|Y)RKRGuMNtP7=wB@4G{FV}JNH!& zpiJKm+6)KZKU91PNMTe`U6;2Rmss7bd*HXi&;<0-SlAfQ9m~XcJ@52(H`pl0)O*Zi z|DAL%`B5A=O?jqTI{Nlfb7NleR6u#2n=a%-%Ek@)aVe>zxosbVQo2Bg-1juyoyUk_ z840Zt=M7qVpZ6bsXBaVAx-j>)d@K%@sK0fJseg!l@9FY#nZJ4GK|dOWt4wcZMnQ#~ z#0pGGkUdkr`?A(8BoAjd= zlJu@nB{9Z`QN#I7orqiG#xqQ%OCya#Q3P9dMUu)~?Oq{+_5vjvUFeNyHbn#5M+>6y zjN-2zvQjUPCA9NJntnP`4!aP0z1p~7BU0olvR6i~sxn!~7DSWEG8z(u_vgV4CRh$~ zCyq`gvyWb>57)|K#M0c{J51?qT=rz5nH8V!n6$Ik6IhIce-M?ru<{FfB7B5dEwt!^ z)QGc%*}dZ55ltOo;cS^|Y3_AO3YYabIfYl-OtIfemoiSV&85zR*r=Y zE-i3k`qpMyb*+VW^WBV72kCP6cR@Wt0*i=vz0bb<3^t&j?#S-dul`JKU1!H;n+;Cs z366E6=Fi&lTD9pba-HQrnau*&*ef>H#+bW)tXIpDweLrR60!oTl0@#PV|NU9X{+ib zDK)gZHTSmDx&!tPI6SOcp#nf_p zckk}9?`)(wrug|=bfTYVY4|bSbS~H;uqZkOD7w@I{hf$d_P1l;lcubx9kY-KlvkNl zy3L(vP(^3E;w;i|82LWSSbeNPchG5qD@|QAjCq(^f6VR3bwc{kN$Q}nD)7f{5UXM) z?lw(!C3Hel51Mm>iyb$kZFoC-u=ewM{p>gMol{C({U*75p);jtO(5>73DgI6E2dt0v+b7OrnG+!= zQn$mPJMhb>!plH;txhkzVEL_O&srf4Yz>TiT0cm&NIS8&VAlI8In~SL^(k7kM#iAg zjK<_~yq?f@j#XNEZAMRZc8=+o%u~%z%9)w0koH9%(`09xaJkuisvR9l9R`Eod8?>G ze?6Vp;QcjrR{CkSpv8*$z8@}Ys{6q;7m{OK6BdPcTM)S=6M_-^qu6-CZ!#&m50K2_ zw>j9^;P=wA)GZaXsK@MwdUW*pV{o@Xzf0jBp*CaHtA+Jl-d!rxCMjI`YH6xLkqtS^J2(kPti*bKJ5Cqi3;Y8yu@ zD*ncQ8f1aR?L1zd4|B`CaJ6_x+y*Pjm@dsTr!yvPa7d^7i5wG{{0u(|6DdDz7R492 z^?z2Y$8t(s6^mFi<#1xvlA5?@p7$384M7knT&i0*`|k$YXqr@8?h_H}`=<^=8Sm3* zG-7N$4kEaO5g^KMX#aZ^T;n#`Mm=cxKz{{oc@HA5W5>fIT|L(CZrV|bE;}`wy+=Fl zvp=HKB_1VTfUGr+vMk)3i%$@j+;SrP14!xVW5=2m?9J2g!)NitGC4Z*QG|P>D2-{N z%yPkb2JdX?r$v?G$7HKA$(D-Dtw&xoEVH&ol&QCGQT10}a8?F9keNL?^d>R0^A0p) za?CNMzw}6U+1C=8zMz)-r9LdCr4`+M8|_b1nhI%N1T6?&fR@_Cn#l6Dp;h2_S}ljP zVYce#iCY$CE)=)`MUNDNCp0Oea<+`vbzEwW=41x16+(LBXsX~;EhDNik|ziEOM=I5 zU`A(|zPf^k)a7$0rkq9|*XxsFeWL^A?4#S-E?sF17_LotRPx|dBRa)sNIKM4dhzwa z^1VbE-vbJj)YXZ9CbxXfP&Vsyxv^ANMYL6`y1d~ zwymU3iXI7#Tiw%5eCjf@EV%W0wI&_^%&EB>y;`6>71}H6gy($p`sG_miv0%Qd*YmV<2NurBk!BjaPr;7# z<1J&Eb@{AGl1nH>}HO4RX__qLT#VaF_(s7D?*kdxz@$ z&8PMQK10+~Tv)eG*00rjW}n<V*xj}o35te*JW4miWxBE@dz z_`&+CbMdAp3_@0dnhOQ!{H_fJeoO9GTY`1wtk1-%+s0^ZxwW3&qCYq>3T27_g&))x z)W+s@C9vm0?3t}T88r|ZF5TJAic504@HZthD3s_qBvg}npuyHt6o~?F?KGG zuK3iH$^PcN{b2ntfAWB>l`<81JdN5}6(SWvvef0aR z?D}jN*Kc^cE>6#@9%o@{h<;t&O)3(MFuh<+&l<&Iw<3Xq;(`^Xm3hdb6%F%vnRK=K zcynJF&KJf>z{MA1s3z~u{NhyyKcyqr3W zMDf{jxvOwNXL+E$FFx6xR$iQCQrF-1)|NkGp*$&nLm9eAY{&(590A@1UjZHBHx&5f z=GHyxYj-!wh$IuE7g5f>z@`GO0;-*=Z)Wq!%9V#O&>kAzb;z zfk^%;RKkiR<54>rX^*?mqamgc$}TII_Z0cINnKi3{cFO_$zgC zBoIn@Ba)fjy#Z_+RZI$xf>00X%cB{P%o{Sc@-^Y$bDTrFN+ zerakSn4TNSJ62MFY$FXbuP&elz|TkyVBQFoTfc9)Y)e9X35v?GyV(Td{4Je;1Ct=t z64e0eB*e`tAQOptFOxcE!<78(Bk~uVuXx+z0j!$LBDKl<+~nkFBi@8@Ks5jmR(xM> z+i;W1^hsyn${MOg7(iO<##_x>O|~2d;FO{RFpfz9=+rNmLowEm+!-TaWWou)E$Z>A zn$*0cNz5q#VKQQu3<@cdRL*N=%k_M9K~^UeIbD6qt-(>Cj-VF-07NFha-ekM0Dvig z7q4miky*WW$6K9L7(fO@FNMi#>nAy{XQwJ}fl16XHxL)e-<;UUI;wfhk7G5M%Aou-2dbmys(OX#Rz?&$aEQKD;^( zND3tHq?F>FCEqChxh}14#i181#u8j{QcBL7nDko2uu@7$96%3QYiL00{sC$h`~B)dPM`dTh2_3EpN(&L16TX7Ntis;k#^?G9{Wg~jo! zX%;hcYGH=au!0f@tCIP&lmb9`fs9jaLPkC1iR~2zF&+NuWO9NbPz?x7Mih23v<06@PSM%c?J0C(D3-@~e%6nu!;8y& z*_~-(Y>me@A8$e)AdJky~&P!q#b2y3JQbQC$4 zUP!OuWxB*~?EY)#DP(M|??YX}oX> zZdjsNje$b30rRRp=W>cd&m{BZ5^yg*-I-kJ;H6Rv5)j{%1fG`d)&V=AS-Z5@ziB8C zbY)49!7hd@YGkQoqu_6bNnJ}L!5Q^r7-f@L05YXsdQ27uVg|spdMwQAI@w=C%j-m|3eyvl!iY)h@&8Vs%S#3B z(I`W(N*t&ZK5>3Rtr*`2x&w9DXJW!qdg;<65-vu#10XNKKx7ruvWH{FEy>bo1AJj} z=Hvhw-ZpRzO$3tH#~7+U&)b8P%A=NzL$P=H(2!7c2K(|tbwoxfI!M$=IO-eE;%i4e zNi`Ul@w1#VSh-S6yA(FXb&nj^o{P^MX0Vsy!nqz1jN8tkP0{NLOg zeR^_l+{_Ci&OAjbaY8Pbto+7H=r16D4iRqXM@OT{Tax<5o4=c@tAo0U*(U=HZzv3U z39j%i3~rP|YI7b*0@P;25;OS~6^4qB-fW9yo;N8^WQpmv=|adUbA1&$oB&`H_%q-S z$;@3+25usEz~A&c2XsOSq(J4wnUROP%7K6p0#!mhemL>vFcGZ=V+4?p6KSmfKQRrF z5{6d|EM)?dHg!^u`yWQ_KXw{0PM$WSIwWZ?=;!d%8V@^TwCvQL$vrMeuZ`@aJ(=!a z?;ULS8pn&m)mgRlt35Q~J}7pb!U_E2?uV^&sa@&=yoIxsMjI)MNxyv0@cx0{6wT#Ihn8we3>uIzce`{05Bu3l-hr2JCh*i|IPhBnjG-5oV-#{@j!Fi2^X0; z`cs7~a^_6GNQm*;?89_YQ^-K@9p!<@n$ZU@un#UxtM#eX23(x!eOQzpl-E?}778-* z4?HsaXt6UO{FV+SXe`0b8!|yB00CaN2Zd!t2x(eus%bwmS!==E4BXFalFerP<@nlA ze}ZD0l3t9y!&1Nc?D{+-k5tFE&3dV^vo9KPe4G)Z=7-bb%gq>HtT%O zgMy_wl4!=fH(EmaeOi1}!dk}T%7+Su8k@qKj5TZ|;0z)W6gaRZ(p!rvUrR^qCbVH( z#X>p;N281jtnFzbVp0zk?g`@{YLV5?Z3W0pT;J*_B$P{62PH@{1N&dI{)ie231*g3 zg{RG9pgO)!QlYFA;c<%9{j+vrAO?DRk~Y()`ipfW^}-us4$N%qTF&EQjPqVLucbK! z5`?97sGW7ym-dXR+5^cMXXx1?JT-=4Q;Dp}Wf?H^-Q$e$1TmR1BVE%3#_>Cl`7&ss zu=zAmQNmziOFR-XQp*2lW<(?VzmUkTu@yp2&E6TW)c?anf-w=~c7z)XV@c1y7vOKj zP|2Jm?nm4QMbjT1(NPH)t{C` zDk5(>L;SusK0@FU`VX))Q$;r6Rk+B*rt8hX4T+G3)hh!LAm^sk*J{ny`|7wQlVmBs zczgsov`kr4YSSmFl2agpD)TQnv4-9@_@GVMhnvh8HR>NA zmkv=DkqO%~K%gO`Yg0)h#PjrXZ_)rfH~%2oV|7>rI_;cKN3u$xnFLP8AcrOBZoM`I z`bz3yF7KzrjifQrL3e%T7EU=J`R2$LB~U;XG;+AO8%4EL+SSqFuFEM zP?pAf{{sjme8VfELrM)BD=8u$EW_1nZfFFhvLOubz3;ncy*JD!2@b-G&l+Cqj0yTf zJx2*4iFiY%JqAYB#-Rz~;3XOmIC#@y_>x;FKCn!kz>b7o1`wqT>mX{Bj(E4vqJQNI zswgQ1D+MmWYoi7D2#X1Bnr`+POaueABYyIgZLh8>eU9g7P!{B`W zS_6s(5mgk=K$5117A04^YMWDt!E6yYs7(WZ?22RO{+0Szlg1h7e=p^4Zaf9Pbt??KoYfyh5M zR&~kY+;#`=jlY@XWFerIbmzcJl|`I)ENO(y#`iy!PPPmJbzE2GZ#$I*CEkA3SoioSC=`I_OHy+{HaZG1_`)FlVk4#3~C`JPHm z9K|wc5$sxZiAW-0{ltAb~IJpXGQc9i=2k3EXgq#d^hF8}Fs^ zC3q7$K_m&wne3N(H9ic~AezQ1@!BQZp7FKyHAtB~+8=6Q0o%Jr75@*Q7g-9I$f77y zOHR23X`|DzHNh4eYWlfsS_x?Ab;N^U#HwBxb(`p@?*Z9pJQa8q{A#*O1d0U3PU9jn zlo^=lWC{K}=io_B&6n2!48L`W(q{O@CcA1CFoq7C^rwUs>*#uOMKed--Snk?8aED| zu+cCkAtjMrg-(Dm`h?PmVptaAzA8Y2n_QXoKY2nX;~B1jZfJMZ8KUemoqdEdJNBf2 zGeS{>-p5zIOv6Uz{iUS`G(ym62SMN=$2}?2FrSPFjEmsrKvHy0Zj(|(K&VEOldygQ zE<_(Ep<7o5DTl`6JANb1WD`wR?-LEHCl-ujRMu604xJ3s>hE{omL$fh;5tpZ`NW`2 zdcKlz#sZMLEuHl0jd+6<5wE1@1m1Z9g0MkG{vPNnpOoh&o1_f%Wo5YJ;N4kui%1*| z7&I{&J=DXma8iH_YVKs5f4f_MUu-)T>da zb^U^UZ}~HhB!SDUxOEN!tLUWP@>#30Orq2#biUC77r{;0wWvUBNYUS3?Kv7RM^qpK znIlOtZ#Q&wu`L4ZOpFFI{M05QJOrpZp_PC@BZ%v}Opf~kl;3+0X_Hh*6~BL(?Q}^; zH{(cNrlH&ET{bcO4}dQamFW?&f-wc`ab9Lb1Hp^bCbx(lAWbQKb8)kMru>oOKLF3V zU8qsMWf(l@D_a1G*L?AQELYjDO>NiD)8Y zN-M#&$mdvMlsDTuh+!^CD#@&*1$H=sqD3K*wgvJ8r;n4b#*3Xhh?F{c@0l0#If0(75#I>bpbwE8o@g{>!T#@iY&N+4#J$vEYVMN17(Yos6Z`03B_wDMn%l1+Z|FtUqsY&JqdEmkL{+4+-{jTI<8y1TA6V5Bw zZlMf{J-n=>N=PCCQScF^OU##vfnnIa$V7=Bi8km@2ayEYXfEE%ya=#t0Rp8ly2{K{ zm_!x3Or>%0y_*1x%&HfBj~%dKhVQ~N8c!QXlEHnxp-z3Sb8oIFmd%TT9fiL=^}juZWI(Nd z8tVC#5%xt=O0^Rb`h||Dh^b~-q9q^L`~#FFvi&u_w1{w&`8*|<9WXY*E#ZT-a=%ME zX_wS<7e%nkTuAgoV9mXJDIxE?M7(`lcY;1#OS$&1-|6|Tq(SU0t#hDX@_NTdNaJNp zkBGe9jf0@WfHRSz2^$N8EY;`Rss8|Xr&E@e+Gs7 zOm79!8bcraxznX{!&$2(imdQh?8AtgpOs7@Wm2*@t-AUbfu-{o5sIMoYCpn zjN&vG?bTi;?#rQwfvb{p7{seDb@a}j27~dumuyu_Vtx1U=;M6F-YuJijt`;G_j#IZZu2x5hP7n!QQUQl4N=_j2UYDzEq4grJQ2Y~N95$lvi{ zw#k6eO$EVk7VqfhWg1Y62D@Dl3TG)vIfOI*L@1^ z@~!cCWyUhBd-0C#<5M$%L{Y{q2>`5WwL#avwwceZh2l0a19R){f$oZC`r;h#k zt%C6zW3QSbEf`so*{+y|=$*rz5%2p{KzCfv3nii2)U#wS#o$ALuaJCB2LZq4Xyl-z zhGAKv_X?NhFO%vQ4!QDd8AsmVpDU)f+FF8pYO2L+P|FTTL-#cJ-UZ+o6`~91+a2@4wXb5H7liuSkCGGP5F!!Y0 zIbpdOVgD~W=Dpn(_IeB)Bl<8$Lssq;O$N7XVrMF#Vpbk9XAA zI=u3Xtu^p7JA0x8oh;_k0>^pj{#KI|Gkb#Yko#K9B^y}>P{k*8)H~1YrsSV|3A=i_ z@;XtR)01W8^Qy_~oxxW}g*OHh{hKC3c@Qx^-}zej9CW^d1$TN?j5-0Wwv>dLs4uHF zC7JT~&928VYkAd+BrPu^PJCy2d);dhV(s}Rp}NWdlOU?O=ei*KbIm{7awfqcDWsoo zbvgfr4cyy#L1a(8QM!CR-by(WS@8M!60ZYu`%1dh73v$}ugja{bLai9f!jxiQDVeX z`Oy;{9CoLaWu#-6gr4^0xwF?|yJ&zLYq|fUDk&2R?vxq*2;g0s4Y{L`Oi35p>%Kbs zDSZg)yW~>`LCcdr3NZcQsllEk0pU$<8iYm2Lkx1bc}cdCD@Q~Ho9YuwFYLx%T0 zj9@DjdBgma#zvJZpH*BlTt27b`Sk@K@qze)bghK)SiP1-zr<)bGWw1Z;Ax}5(}@rJ zE@3}{8XtV$xYmETWNF{3{&DEe?BL3(0<1}tDoxujR{%)cHzUwiI#&VfVKHI)Sv%O%tmOwLZM?u=dOh6O%_`hM&v zx2LswChX|t7RqMTzbX8TWf_ZDICj-5-8N#HZM|QQQaVUFcq2?%r&4!Xm-&^a%XxD> z;8jWbiZ(DsWb@wS+@a*)2SuvX`G8eG?Vw7{cA(3LJLCLju5O1GlgblFF zm!KfT_Cv(&?lR&Ykl9MO5yHq|=uGZ3_j z=&PxJfR;pVYEi~bsAh@g8RBe(fvk<$*`XFqZ&h7fYG;w$V-=&DIV20;5`R}7*;1 z?<+5;%^MZ+z?q=oF$kW?**(FNfYGs}@dpAB%kz#P(B{-v_Hp3F?=LL(J~DlH7YMRWu;b&jO3XSvKRz+k zb9icFg&o+m0FJlx+_MiAK*-u5_A^1)>h4P%US19(X|c;)U*l^y@GWSO{EZ`5qU&cG ztB(vl!mv8Nj*{W9!6!m<{|A3SfWK3A{9k7GSdUI>3c88CC)T3TRCoT=gS7epg%$uJV9v;MMZt z2uiL)-G+oU(+6XCr5j89zY}4g{vm>|LtdkY)*3|7+8}Otzh8*RTSaT|B@AQ(^nAf_ zgI12Chpzf@05UqMUR@|6LebNHMpVW&1&YIQx&#_$Ma zL3THZdANK*Z|iAyRTIVd!}hb8PR|g=zYk9-X@TD{tGy^RQq@s5xF(Gh>!pv%0L=|e ztR7g6dQU@E<_Tw23=UB;ERdTgg>NpJz2Wf1IG5G1-L9P#U z+oyOTMhTZ80k!+J!oVol;vKtHs%pAGZxc$xfx-7M>nXkJ9h0nKSb!+wIT0 z6g>)dI6vKD4y!i|pD>}CR{K5pf{?RNFQWojF1+4m@#+?(S>{D338EaEGk|rBTY1P` zI&dF|iFbVbFu*D2_F>~-_>YKq9t&Os8t}UC)>KQH5Yxh;0<+*XE3Hc14(+2)_cVXl ztnxTJ{db1I4wO)KBZ7lKSmJSxkF>5f3xl}f_cHiWkHh8-qOIrbLv7qXW!)=BI~}IC z%)fZ64Y?6r{a&(?#A^QDy&{#gv{&|j;IdkO^mq3Cct*{@F)056Ec>#IP?@M&*go6Zd#R@oduX%bmuK7<} z@`UvTdT4q^igvn<{{XXHhDU6Bh_sQg+m^D-SGb2I4YO=w0hZZsb|Hn)Vc9Dsu1XKh zO6bkplzWiv$gNnb;4!v{Q^S2D_i-}ZIu3c~bX1FP=$#I&)YN*k!wmGPr<~= zp|hPHd&9~@=J`!}e81UO*@dDq*u7nyAeQJ)PV-%(3pG?YnPt<6?(xZf$6sIE zWUU~7CxvhLfW{lnUo153q}Gf!z zxYPkXf#;(Is|ihUYM|pfIs*SZfstu$J4_F-5mx|TtEUqaXoyFXx zwE`0X{_y8zkuL4_lmV~ zvlg@+<;wCgPQ&)R?_s+tRBbHPwT!r6mH=J9Vb`QU+)v5hl4t>2XC6+_+&Izj^|w^GAwmx zS8vn{p=fIE{{VyvM7FzK{?r1F8#EzD{D>O6b!bO>mlo>BW*rV*^BPWpzqn2$a>cY@5|o0}R- z97UtoXd{j4j63Dhzki8)2ZeOe)3g9q0t<=sg5a(XM^8y{0-_o|N0ahls*SM}4xPHU z?dfx5i?>zYX_U5^#|LB=&RV#wLy1@*rMV2G!85AMo%?_VaKTmnSe3lh(lW$CXlqcX zt6U+2PzX1YpdT&T*jm426+brbd%+Z;msk3P!9YUw_tgjsI7+Qs+Gz<)41yqtA!qXt^iJan#N@CP#ho}Iq;SNY7hS2QRkGJmV; z{{Rqa8sfSBddxbUva0*-;6Fa`TvI$R_8-7;qm~e^&r5w46|U#?}{DwB^&7w@zW;;9QzVu)5-6n{>ECvMI(f_>9`C z_%`$6Vss7nh(1hPp{eGCy3?w$H14H+)Szm5O9at^vb+Ji@dG+4hakUT>h5)9z)JrIPopj*Fub&`P9WL@k zxuf1_mAbTk{U)MY&)I-pT$%~gYz;`Jl~ZkEBGxPYexwyl0c+&e+=qB=Twzx3XWjx0 zZJhpjekD>SNT`(@TSPWxS$dvcJ9v-$VrYZRYP@hI>m2%?#NNBqUl257eB1Z5Ddy+s ze9Mxlu2=W(H<%a(o5sIywFF$rzbmIbw3i2bZ;qk2O`u|$8Ps6ek^4nTvS?hr<+UsH zyyM_U;Qq%YsD4jq>@aj1z1WBjV%6RI_?MK5ZCI`aZjKV5HdXF$?=3}{boVeCiu$uF zMHsJXz@XL_R)dJ}01Li=b#POC^mznislsmPZTaFgt!tT{R=5vnmW!QM($0mH{^ws< z&?Tk$VTu~-Czvqy4ihsR~l5ZudVmc#h!6m8o$?XNTsWlT>U{q z_9b8&ki~Qfsf2=BYh$V2UsVhEf~seI-cdy^ zjrKx;cqdc&5k&&%bbH0U`NmW8`|lTEyBTh#{HC4ZhZ2!!>CdcOLfsu

Mf!*Y<8;r6UB5IPmkJPO!Dz@mu+{)aYZG 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

t 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 br}Uk{ZCyi|*XawLGawCrGZ`!7_^JQd5@F8I literal 0 HcmV?d00001 diff --git a/dalim-app/public/vercel.svg b/dalim-app/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/dalim-app/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dalim-app/public/window.svg b/dalim-app/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/dalim-app/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dalim-app/src/app/api/approvals/route.ts b/dalim-app/src/app/api/approvals/route.ts new file mode 100644 index 0000000..78f8099 --- /dev/null +++ b/dalim-app/src/app/api/approvals/route.ts @@ -0,0 +1,16 @@ +import { NextRequest } from "next/server"; +import { getApprovals } from "@/lib/dalim-service"; + +export async function GET(request: NextRequest) { + const searchParams = request.nextUrl.searchParams; + const limit = parseInt(searchParams.get("limit") ?? "20"); + const cursor = searchParams.get("cursor") ?? undefined; + + try { + const data = await getApprovals(limit, cursor); + return Response.json(data); + } catch (error) { + console.error("Failed to fetch approvals:", error); + return Response.json({ error: "Failed to fetch approvals" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/assets/[id]/route.ts b/dalim-app/src/app/api/assets/[id]/route.ts new file mode 100644 index 0000000..abc013b --- /dev/null +++ b/dalim-app/src/app/api/assets/[id]/route.ts @@ -0,0 +1,19 @@ +import { getAssetById } from "@/lib/dalim-service"; + +export async function GET( + _request: Request, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + + try { + const asset = await getAssetById(id); + if (!asset) { + return Response.json({ error: "Asset not found" }, { status: 404 }); + } + return Response.json(asset); + } catch (error) { + console.error("Failed to fetch asset:", error); + return Response.json({ error: "Failed to fetch asset" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/assets/route.ts b/dalim-app/src/app/api/assets/route.ts new file mode 100644 index 0000000..63b664f --- /dev/null +++ b/dalim-app/src/app/api/assets/route.ts @@ -0,0 +1,16 @@ +import { NextRequest } from "next/server"; +import { getAssets } from "@/lib/dalim-service"; + +export async function GET(request: NextRequest) { + const searchParams = request.nextUrl.searchParams; + const limit = parseInt(searchParams.get("limit") ?? "24"); + const cursor = searchParams.get("cursor") ?? undefined; + + try { + const data = await getAssets(limit, cursor); + return Response.json(data); + } catch (error) { + console.error("Failed to fetch assets:", error); + return Response.json({ error: "Failed to fetch assets" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/channels/route.ts b/dalim-app/src/app/api/channels/route.ts new file mode 100644 index 0000000..0b9c104 --- /dev/null +++ b/dalim-app/src/app/api/channels/route.ts @@ -0,0 +1,11 @@ +import { getChannels } from "@/lib/dalim-service"; + +export async function GET() { + try { + const channels = await getChannels(); + return Response.json(channels); + } catch (error) { + console.error("Failed to fetch channels:", error); + return Response.json({ error: "Failed to fetch channels" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/collections/route.ts b/dalim-app/src/app/api/collections/route.ts new file mode 100644 index 0000000..309ea93 --- /dev/null +++ b/dalim-app/src/app/api/collections/route.ts @@ -0,0 +1,16 @@ +import { NextRequest } from "next/server"; +import { getCollections } from "@/lib/dalim-service"; + +export async function GET(request: NextRequest) { + const searchParams = request.nextUrl.searchParams; + const limit = parseInt(searchParams.get("limit") ?? "20"); + const cursor = searchParams.get("cursor") ?? undefined; + + try { + const data = await getCollections(limit, cursor); + return Response.json(data); + } catch (error) { + console.error("Failed to fetch collections:", error); + return Response.json({ error: "Failed to fetch collections" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/distribution/route.ts b/dalim-app/src/app/api/distribution/route.ts new file mode 100644 index 0000000..5b59477 --- /dev/null +++ b/dalim-app/src/app/api/distribution/route.ts @@ -0,0 +1,34 @@ +import { getDistributionJobs, sendToChannel } from "@/lib/dalim-service"; +import { NextRequest } from "next/server"; + +export async function GET(request: NextRequest) { + const assetId = request.nextUrl.searchParams.get("assetId") ?? undefined; + + try { + const jobs = await getDistributionJobs(assetId); + return Response.json(jobs); + } catch (error) { + console.error("Failed to fetch distribution jobs:", error); + return Response.json({ error: "Failed to fetch jobs" }, { status: 500 }); + } +} + +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { assetId, channelId } = body; + + if (!assetId || !channelId) { + return Response.json( + { error: "assetId and channelId are required" }, + { status: 400 } + ); + } + + const job = await sendToChannel(assetId, channelId); + return Response.json(job, { status: 201 }); + } catch (error) { + console.error("Failed to create distribution job:", error); + return Response.json({ error: "Failed to send to channel" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/folders/[id]/assets/route.ts b/dalim-app/src/app/api/folders/[id]/assets/route.ts new file mode 100644 index 0000000..1011a96 --- /dev/null +++ b/dalim-app/src/app/api/folders/[id]/assets/route.ts @@ -0,0 +1,20 @@ +import { getAssetsByFolder } from "@/lib/dalim-service"; +import { NextRequest } from "next/server"; + +export async function GET( + request: NextRequest, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + const searchParams = request.nextUrl.searchParams; + const limit = parseInt(searchParams.get("limit") ?? "24", 10); + const cursor = searchParams.get("cursor") ?? undefined; + + try { + const assets = await getAssetsByFolder(id, limit, cursor); + return Response.json(assets); + } catch (error) { + console.error("Failed to fetch folder assets:", error); + return Response.json({ error: "Failed to fetch assets" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/folders/[id]/route.ts b/dalim-app/src/app/api/folders/[id]/route.ts new file mode 100644 index 0000000..11a8866 --- /dev/null +++ b/dalim-app/src/app/api/folders/[id]/route.ts @@ -0,0 +1,19 @@ +import { getFolderById } from "@/lib/dalim-service"; + +export async function GET( + _request: Request, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + + try { + const folder = await getFolderById(id); + if (!folder) { + return Response.json({ error: "Folder not found" }, { status: 404 }); + } + return Response.json(folder); + } catch (error) { + console.error("Failed to fetch folder:", error); + return Response.json({ error: "Failed to fetch folder" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/health/route.ts b/dalim-app/src/app/api/health/route.ts new file mode 100644 index 0000000..1057c18 --- /dev/null +++ b/dalim-app/src/app/api/health/route.ts @@ -0,0 +1,9 @@ +import { isMockMode } from "@/lib/dalim-client"; + +export async function GET() { + return Response.json({ + status: "ok", + mockMode: isMockMode(), + timestamp: new Date().toISOString(), + }); +} diff --git a/dalim-app/src/app/api/processes/route.ts b/dalim-app/src/app/api/processes/route.ts new file mode 100644 index 0000000..7551ee6 --- /dev/null +++ b/dalim-app/src/app/api/processes/route.ts @@ -0,0 +1,21 @@ +import { getProcesses } from "@/lib/dalim-service"; +import { NextRequest } from "next/server"; + +export async function GET(request: NextRequest) { + const limit = parseInt( + request.nextUrl.searchParams.get("limit") ?? "20", + 10 + ); + const cursor = request.nextUrl.searchParams.get("cursor") ?? undefined; + + try { + const data = await getProcesses(limit, cursor); + return Response.json(data); + } catch (error) { + console.error("Failed to fetch processes:", error); + return Response.json( + { error: "Failed to fetch processes" }, + { status: 500 } + ); + } +} diff --git a/dalim-app/src/app/api/projects/[id]/assets/route.ts b/dalim-app/src/app/api/projects/[id]/assets/route.ts new file mode 100644 index 0000000..ea839ce --- /dev/null +++ b/dalim-app/src/app/api/projects/[id]/assets/route.ts @@ -0,0 +1,21 @@ +import { getAssetsByProject } from "@/lib/dalim-service"; +import { NextRequest } from "next/server"; + +export async function GET( + request: NextRequest, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + const searchParams = request.nextUrl.searchParams; + const folderId = searchParams.get("folderId") ?? undefined; + const limit = parseInt(searchParams.get("limit") ?? "24", 10); + const cursor = searchParams.get("cursor") ?? undefined; + + try { + const assets = await getAssetsByProject(id, folderId, limit, cursor); + return Response.json(assets); + } catch (error) { + console.error("Failed to fetch project assets:", error); + return Response.json({ error: "Failed to fetch assets" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/projects/[id]/folders/route.ts b/dalim-app/src/app/api/projects/[id]/folders/route.ts new file mode 100644 index 0000000..8258686 --- /dev/null +++ b/dalim-app/src/app/api/projects/[id]/folders/route.ts @@ -0,0 +1,16 @@ +import { getFoldersByProject } from "@/lib/dalim-service"; + +export async function GET( + _request: Request, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + + try { + const folders = await getFoldersByProject(id); + return Response.json(folders); + } catch (error) { + console.error("Failed to fetch project folders:", error); + return Response.json({ error: "Failed to fetch folders" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/projects/[id]/route.ts b/dalim-app/src/app/api/projects/[id]/route.ts new file mode 100644 index 0000000..79307e7 --- /dev/null +++ b/dalim-app/src/app/api/projects/[id]/route.ts @@ -0,0 +1,19 @@ +import { getProjectById } from "@/lib/dalim-service"; + +export async function GET( + _request: Request, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + + try { + const project = await getProjectById(id); + if (!project) { + return Response.json({ error: "Project not found" }, { status: 404 }); + } + return Response.json(project); + } catch (error) { + console.error("Failed to fetch project:", error); + return Response.json({ error: "Failed to fetch project" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/projects/route.ts b/dalim-app/src/app/api/projects/route.ts new file mode 100644 index 0000000..94240b6 --- /dev/null +++ b/dalim-app/src/app/api/projects/route.ts @@ -0,0 +1,16 @@ +import { NextRequest } from "next/server"; +import { getProjects } from "@/lib/dalim-service"; + +export async function GET(request: NextRequest) { + const searchParams = request.nextUrl.searchParams; + const limit = parseInt(searchParams.get("limit") ?? "20"); + const cursor = searchParams.get("cursor") ?? undefined; + + try { + const data = await getProjects(limit, cursor); + return Response.json(data); + } catch (error) { + console.error("Failed to fetch projects:", error); + return Response.json({ error: "Failed to fetch projects" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/search/route.ts b/dalim-app/src/app/api/search/route.ts new file mode 100644 index 0000000..03214e8 --- /dev/null +++ b/dalim-app/src/app/api/search/route.ts @@ -0,0 +1,17 @@ +import { NextRequest } from "next/server"; +import { searchAssets } from "@/lib/dalim-service"; + +export async function GET(request: NextRequest) { + const searchParams = request.nextUrl.searchParams; + const query = searchParams.get("q") ?? ""; + const limit = parseInt(searchParams.get("limit") ?? "24"); + const cursor = searchParams.get("cursor") ?? undefined; + + try { + const data = await searchAssets(query, [], limit, cursor); + return Response.json(data); + } catch (error) { + console.error("Search failed:", error); + return Response.json({ error: "Search failed" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/api/workflows/route.ts b/dalim-app/src/app/api/workflows/route.ts new file mode 100644 index 0000000..757b9a2 --- /dev/null +++ b/dalim-app/src/app/api/workflows/route.ts @@ -0,0 +1,16 @@ +import { NextRequest } from "next/server"; +import { getWorkflows } from "@/lib/dalim-service"; + +export async function GET(request: NextRequest) { + const searchParams = request.nextUrl.searchParams; + const limit = parseInt(searchParams.get("limit") ?? "20"); + const cursor = searchParams.get("cursor") ?? undefined; + + try { + const data = await getWorkflows(limit, cursor); + return Response.json(data); + } catch (error) { + console.error("Failed to fetch workflows:", error); + return Response.json({ error: "Failed to fetch workflows" }, { status: 500 }); + } +} diff --git a/dalim-app/src/app/assets/[id]/page.tsx b/dalim-app/src/app/assets/[id]/page.tsx new file mode 100644 index 0000000..f6ca084 --- /dev/null +++ b/dalim-app/src/app/assets/[id]/page.tsx @@ -0,0 +1,226 @@ +"use client"; + +import { useState } from "react"; +import { useParams } from "next/navigation"; +import { useAsset, useDistributionJobs, useProcesses } from "@/hooks/use-dalim"; +import { AssetDetail } from "@/components/assets/asset-detail"; +import { SendToDialog } from "@/components/distribution/send-to-dialog"; +import { Badge } from "@/components/ui/badge"; +import { Card } from "@/components/ui/card"; +import { Skeleton } from "@/components/ui/skeleton"; +import Link from "next/link"; + +function getJobStatusColor(status: string) { + switch (status) { + case "completed": return "bg-green-100 text-green-800"; + case "processing": return "bg-blue-100 text-blue-800"; + case "queued": return "bg-yellow-100 text-yellow-800"; + case "failed": return "bg-red-100 text-red-800"; + default: return "bg-gray-100 text-gray-800"; + } +} + +export default function AssetDetailPage() { + const { id } = useParams<{ id: string }>(); + const { data: asset, isLoading } = useAsset(id); + const { data: jobs } = useDistributionJobs(id); + const { data: processes } = useProcesses(); + const [sendToOpen, setSendToOpen] = useState(false); + + // Filter processes for this asset + const assetProcesses = + processes?.items.filter((p) => p.entity?.id === id) ?? []; + + if (isLoading) { + return ( +

+ ); + } + + if (!asset) { + return ( +
+

Asset not found

+ + Back to assets + +
+ ); + } + + return ( +
+
+
+ + + + + +

{asset.name}

+
+
+ + +
+
+ + + + {/* Distribution history */} + {jobs && jobs.length > 0 && ( +
+

Distribution History

+
+ {jobs.map((job) => ( + +
+

{job.channelName}

+

+ by {job.initiatedBy} ·{" "} + {new Date(job.initiatedAt).toLocaleDateString("en-GB", { + day: "numeric", + month: "short", + hour: "2-digit", + minute: "2-digit", + })} +

+
+ + {job.status} + +
+ ))} +
+
+ )} + + {/* Process Monitor */} + {assetProcesses.length > 0 && ( +
+

Processes

+
+ {assetProcesses.map((proc) => ( + +
+

{proc.name}

+ + {proc.status} + +
+ {proc.progress !== undefined && ( +
+
+
+ )} + {proc.startDate && ( +

+ Started{" "} + {new Date(proc.startDate).toLocaleDateString("en-GB", { + day: "numeric", + month: "short", + hour: "2-digit", + minute: "2-digit", + })} + {proc.endDate && + ` — Completed ${new Date(proc.endDate).toLocaleDateString("en-GB", { + day: "numeric", + month: "short", + hour: "2-digit", + minute: "2-digit", + })}`} +

+ )} + + ))} +
+
+ )} + + setSendToOpen(false)} + /> +
+ ); +} diff --git a/dalim-app/src/app/assets/page.tsx b/dalim-app/src/app/assets/page.tsx new file mode 100644 index 0000000..31102b4 --- /dev/null +++ b/dalim-app/src/app/assets/page.tsx @@ -0,0 +1,27 @@ +"use client"; + +import { useAssets } from "@/hooks/use-dalim"; +import { AssetGrid } from "@/components/assets/asset-grid"; + +export default function AssetsPage() { + const { data, isLoading } = useAssets(24); + + return ( +
+
+

Assets

+

+ Browse all assets across projects +

+
+ +
+

+ {data?.totalCount ?? 0} assets +

+
+ + +
+ ); +} diff --git a/dalim-app/src/app/collections/page.tsx b/dalim-app/src/app/collections/page.tsx new file mode 100644 index 0000000..5790e73 --- /dev/null +++ b/dalim-app/src/app/collections/page.tsx @@ -0,0 +1,116 @@ +"use client"; + +import { useCollections } from "@/hooks/use-dalim"; +import { Card } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Skeleton } from "@/components/ui/skeleton"; +import Image from "next/image"; + +// Mock: assign some assets to collections for visual appeal +const collectionAssets: Record = { + COL001: ["A001", "A002", "A005"], + COL002: ["A007", "A003"], + COL003: ["A004", "A006", "A008", "A003"], +}; + +function getPlaceholderIndex(id: string): number { + const num = parseInt(id.replace(/\D/g, ""), 10) || 1; + return ((num - 1) % 8) + 1; +} + +export default function CollectionsPage() { + const { data, isLoading } = useCollections(); + + return ( +
+
+

Collections

+

+ Browse curated asset collections +

+
+ + {isLoading ? ( +
+ {Array.from({ length: 3 }).map((_, i) => ( + + +
+ + +
+
+ ))} +
+ ) : ( +
+ {data?.items.map((collection) => { + const assetIds = collectionAssets[collection.id] ?? []; + return ( + + {/* Thumbnail mosaic */} +
+ {assetIds.length >= 3 ? ( +
+ {assetIds.slice(0, 3).map((aId, i) => ( +
+ + {i < 2 && ( +
+ )} +
+ ))} +
+ ) : assetIds.length > 0 ? ( + + ) : ( +
+ + + +
+ )} +
+ +
+
+

{collection.name}

+ + {assetIds.length} assets + +
+ {collection.description && ( +

+ {collection.description} +

+ )} + {collection.creationDate && ( +

+ Created{" "} + {new Date(collection.creationDate).toLocaleDateString()} +

+ )} +
+ + ); + })} +
+ )} +
+ ); +} diff --git a/dalim-app/src/app/favicon.ico b/dalim-app/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/dalim-app/src/app/globals.css b/dalim-app/src/app/globals.css new file mode 100644 index 0000000..2bbe554 --- /dev/null +++ b/dalim-app/src/app/globals.css @@ -0,0 +1,131 @@ +@import "tailwindcss"; +@import "tw-animate-css"; +@import "shadcn/tailwind.css"; + +@custom-variant dark (&:is(.dark *)); + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --font-sans: "Noto Sans Display", system-ui, sans-serif; + --font-mono: var(--font-geist-mono); + --font-heading: "Noto Sans Display", system-ui, sans-serif; + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --color-chart-5: var(--chart-5); + --color-chart-4: var(--chart-4); + --color-chart-3: var(--chart-3); + --color-chart-2: var(--chart-2); + --color-chart-1: var(--chart-1); + --color-ring: var(--ring); + --color-input: var(--input); + --color-border: var(--border); + --color-destructive: var(--destructive); + --color-accent-foreground: var(--accent-foreground); + --color-accent: var(--accent); + --color-muted-foreground: var(--muted-foreground); + --color-muted: var(--muted); + --color-secondary-foreground: var(--secondary-foreground); + --color-secondary: var(--secondary); + --color-primary-foreground: var(--primary-foreground); + --color-primary: var(--primary); + --color-popover-foreground: var(--popover-foreground); + --color-popover: var(--popover); + --color-card-foreground: var(--card-foreground); + --color-card: var(--card); + --radius-sm: calc(var(--radius) * 0.6); + --radius-md: calc(var(--radius) * 0.8); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) * 1.4); + --radius-2xl: calc(var(--radius) * 1.8); + --radius-3xl: calc(var(--radius) * 2.2); + --radius-4xl: calc(var(--radius) * 2.6); +} + +/* MediaMarkt-inspired color scheme — red #DF0000 */ +:root { + --background: #ffffff; + --foreground: #1a1a1a; + --card: #ffffff; + --card-foreground: #1a1a1a; + --popover: #ffffff; + --popover-foreground: #1a1a1a; + --primary: #df0000; + --primary-foreground: #ffffff; + --secondary: #f5f5f5; + --secondary-foreground: #1a1a1a; + --muted: #f5f5f5; + --muted-foreground: #737373; + --accent: #fef2f2; + --accent-foreground: #df0000; + --destructive: #b91c1c; + --border: #e5e5e5; + --input: #e5e5e5; + --ring: #df0000; + --chart-1: #df0000; + --chart-2: #333333; + --chart-3: #737373; + --chart-4: #a3a3a3; + --chart-5: #d4d4d4; + --radius: 0.5rem; + --sidebar: #1a1a1a; + --sidebar-foreground: #f5f5f5; + --sidebar-primary: #df0000; + --sidebar-primary-foreground: #ffffff; + --sidebar-accent: #333333; + --sidebar-accent-foreground: #f5f5f5; + --sidebar-border: #333333; + --sidebar-ring: #df0000; +} + +.dark { + --background: #0a0a0a; + --foreground: #f5f5f5; + --card: #1a1a1a; + --card-foreground: #f5f5f5; + --popover: #1a1a1a; + --popover-foreground: #f5f5f5; + --primary: #df0000; + --primary-foreground: #ffffff; + --secondary: #262626; + --secondary-foreground: #f5f5f5; + --muted: #262626; + --muted-foreground: #a3a3a3; + --accent: #371111; + --accent-foreground: #fca5a5; + --destructive: #ef4444; + --border: #333333; + --input: #333333; + --ring: #df0000; + --chart-1: #df0000; + --chart-2: #a3a3a3; + --chart-3: #737373; + --chart-4: #525252; + --chart-5: #333333; + --sidebar: #0a0a0a; + --sidebar-foreground: #f5f5f5; + --sidebar-primary: #df0000; + --sidebar-primary-foreground: #ffffff; + --sidebar-accent: #1a1a1a; + --sidebar-accent-foreground: #f5f5f5; + --sidebar-border: #333333; + --sidebar-ring: #df0000; +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } + html { + @apply font-sans; + } +} diff --git a/dalim-app/src/app/layout.tsx b/dalim-app/src/app/layout.tsx new file mode 100644 index 0000000..7c7d34c --- /dev/null +++ b/dalim-app/src/app/layout.tsx @@ -0,0 +1,46 @@ +import type { Metadata } from "next"; +import { Noto_Sans_Display } from "next/font/google"; +import "./globals.css"; +import { Providers } from "@/components/providers"; +import { Sidebar } from "@/components/layout/sidebar"; +import { Header } from "@/components/layout/header"; +import { ErrorBoundary } from "@/components/error-boundary"; + +const notoSansDisplay = Noto_Sans_Display({ + variable: "--font-noto-sans-display", + subsets: ["latin"], + weight: ["300", "400", "500", "600", "700"], +}); + +export const metadata: Metadata = { + title: "Dalim DAM", + description: "Digital Asset Management powered by Dalim ES FUSiON", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + +
+ +
+
+
+ {children} +
+
+
+
+ + + ); +} diff --git a/dalim-app/src/app/not-found.tsx b/dalim-app/src/app/not-found.tsx new file mode 100644 index 0000000..b10ce70 --- /dev/null +++ b/dalim-app/src/app/not-found.tsx @@ -0,0 +1,19 @@ +import Link from "next/link"; + +export default function NotFound() { + return ( +
+

404

+

Page not found

+

+ The page you're looking for doesn't exist or has been moved. +

+ + Back to Dashboard + +
+ ); +} diff --git a/dalim-app/src/app/page.tsx b/dalim-app/src/app/page.tsx new file mode 100644 index 0000000..303a9a5 --- /dev/null +++ b/dalim-app/src/app/page.tsx @@ -0,0 +1,218 @@ +"use client"; + +import { + useProjects, + useAssets, + useApprovals, + useDistributionJobs, + useChannels, +} from "@/hooks/use-dalim"; +import { Card } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Separator } from "@/components/ui/separator"; +import { AssetGrid } from "@/components/assets/asset-grid"; +import Image from "next/image"; +import Link from "next/link"; + +function getPlaceholderIndex(id: string): number { + const num = parseInt(id.replace(/\D/g, ""), 10) || 1; + return ((num - 1) % 8) + 1; +} + +function getJobStatusColor(status: string) { + switch (status) { + case "completed": + return "bg-green-100 text-green-800"; + case "processing": + return "bg-blue-100 text-blue-800"; + case "queued": + return "bg-yellow-100 text-yellow-800"; + case "failed": + return "bg-red-100 text-red-800"; + default: + return "bg-gray-100 text-gray-800"; + } +} + +export default function DashboardPage() { + const { data: projects } = useProjects(5); + const { data: assets } = useAssets(8); + const { data: approvals } = useApprovals(5); + const { data: jobs } = useDistributionJobs(); + const { data: channels } = useChannels(); + + const pendingApprovals = + approvals?.items.filter((a) => a.status === "PENDING") ?? []; + const connectedChannels = + channels?.filter((c) => c.status === "connected").length ?? 0; + + return ( +
+
+

Dashboard

+

+ Overview of your digital asset management +

+
+ + {/* Stats */} +
+ +

Projects

+

+ {projects?.totalCount ?? "—"} +

+
+ +

Assets

+

+ {assets?.totalCount ?? "—"} +

+
+ +

Pending Approvals

+

+ {pendingApprovals.length || "—"} +

+
+ +

Distributions

+

{jobs?.length ?? "—"}

+
+ +

Platforms

+

+ {connectedChannels || "—"} +

+
+
+ + {/* Recent Assets */} +
+
+

Recent Assets

+ + View all + +
+ +
+ + + +
+ {/* Recent Projects */} +
+
+

Recent Projects

+ + View all + +
+
+ {projects?.items.map((project) => ( + + +
+
+

{project.name}

+

+ {project.description} +

+
+
+ {project.status && ( + + {project.status} + + )} +
+
+
+ + ))} +
+
+ + {/* Activity feed: approvals + distributions */} +
+
+

Activity

+ + View all + +
+
+ {/* Pending approvals */} + {pendingApprovals.map((approval) => ( + +
+
+ +
+
+

+ {approval.entity.name} +

+

+ Approval needed ·{" "} + {approval.approver.firstName}{" "} + {approval.approver.lastName} +

+
+
+ + Pending + +
+ ))} + + {/* Recent distributions */} + {jobs?.slice(0, 4).map((job) => ( + +
+

+ {job.assetName} +

+

+ Sent to {job.channelName} +

+
+ + {job.status} + +
+ ))} +
+
+
+
+ ); +} diff --git a/dalim-app/src/app/processes/page.tsx b/dalim-app/src/app/processes/page.tsx new file mode 100644 index 0000000..382f9d5 --- /dev/null +++ b/dalim-app/src/app/processes/page.tsx @@ -0,0 +1,158 @@ +"use client"; + +import { useProcesses } from "@/hooks/use-dalim"; +import { Card } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Skeleton } from "@/components/ui/skeleton"; +import Link from "next/link"; + +function getStatusColor(status: string) { + switch (status) { + case "COMPLETED": + return "bg-green-100 text-green-800"; + case "IN_PROGRESS": + return "bg-blue-100 text-blue-800"; + case "QUEUED": + return "bg-yellow-100 text-yellow-800"; + case "FAILED": + return "bg-red-100 text-red-800"; + default: + return "bg-gray-100 text-gray-800"; + } +} + +export default function ProcessesPage() { + const { data, isLoading } = useProcesses(); + + return ( +
+
+

Process Monitor

+

+ Track running, queued, and completed processes +

+
+ + {/* Stats */} +
+ +

Total

+

+ {data?.totalCount ?? "—"} +

+
+ +

In Progress

+

+ {data?.items.filter((p) => p.status === "IN_PROGRESS").length ?? + "—"} +

+
+ +

Queued

+

+ {data?.items.filter((p) => p.status === "QUEUED").length ?? "—"} +

+
+ +

Completed

+

+ {data?.items.filter((p) => p.status === "COMPLETED").length ?? + "—"} +

+
+
+ + {/* Process list */} + {isLoading ? ( +
+ {Array.from({ length: 3 }).map((_, i) => ( + + ))} +
+ ) : ( +
+ {data?.items.map((process) => ( + +
+
+
+
+

{process.name}

+ {process.entity && ( + + {process.entity.name} + + )} +
+
+ + {process.status.replace("_", " ")} + +
+ + {/* Progress bar */} + {process.progress !== undefined && ( +
+
+ Progress + {process.progress}% +
+
+
+
+
+ )} + + {/* Timestamps */} +
+ {process.startDate && ( + + Started:{" "} + {new Date(process.startDate).toLocaleDateString("en-GB", { + day: "numeric", + month: "short", + hour: "2-digit", + minute: "2-digit", + })} + + )} + {process.endDate && ( + + Completed:{" "} + {new Date(process.endDate).toLocaleDateString("en-GB", { + day: "numeric", + month: "short", + hour: "2-digit", + minute: "2-digit", + })} + + )} +
+ + ))} +
+ )} +
+ ); +} diff --git a/dalim-app/src/app/projects/[id]/page.tsx b/dalim-app/src/app/projects/[id]/page.tsx new file mode 100644 index 0000000..8b2341c --- /dev/null +++ b/dalim-app/src/app/projects/[id]/page.tsx @@ -0,0 +1,157 @@ +"use client"; + +import { useState } from "react"; +import { useParams } from "next/navigation"; +import { + useProject, + useProjectFolders, + useProjectAssets, +} from "@/hooks/use-dalim"; +import { Card } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Skeleton } from "@/components/ui/skeleton"; +import { Separator } from "@/components/ui/separator"; +import { FolderTree } from "@/components/folders/folder-tree"; +import { AssetGrid } from "@/components/assets/asset-grid"; +import Link from "next/link"; + +export default function ProjectDetailPage() { + const { id } = useParams<{ id: string }>(); + const [selectedFolderId, setSelectedFolderId] = useState( + undefined + ); + + const { data: project, isLoading: projectLoading } = useProject(id); + const { data: folders, isLoading: foldersLoading } = useProjectFolders(id); + const { data: assets, isLoading: assetsLoading } = useProjectAssets( + id, + selectedFolderId + ); + + if (projectLoading) { + return ( +
+ + +
+ +
+ +
+
+
+ ); + } + + if (!project) { + return ( +
+

Project not found

+ + Back to projects + +
+ ); + } + + return ( +
+ {/* Header */} +
+
+
+ + + + + +

+ {project.name} +

+ {project.status && ( + {project.status} + )} +
+ {project.description && ( +

+ {project.description} +

+ )} +
+ {project.customer && ( + + {project.customer.name} + + )} +
+ + {/* Stats bar */} +
+
+ Folders: + {folders?.length ?? 0} +
+
+ Assets: + {assets?.totalCount ?? 0} +
+ {project.lastModificationDate && ( +
+ Updated: + + {new Date(project.lastModificationDate).toLocaleDateString()} + +
+ )} +
+ + + + {/* Folder tree + asset grid */} +
+ +

+ Folders +

+ +
+ +
+
+

+ {selectedFolderId + ? `Showing assets in "${folders?.find((f) => f.id === selectedFolderId)?.name}"` + : "All project assets"} +

+

+ {assets?.totalCount ?? 0} assets +

+
+ +
+
+
+ ); +} diff --git a/dalim-app/src/app/projects/page.tsx b/dalim-app/src/app/projects/page.tsx new file mode 100644 index 0000000..7c5b064 --- /dev/null +++ b/dalim-app/src/app/projects/page.tsx @@ -0,0 +1,64 @@ +"use client"; + +import { useProjects } from "@/hooks/use-dalim"; +import { Card } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Skeleton } from "@/components/ui/skeleton"; +import Link from "next/link"; + +export default function ProjectsPage() { + const { data, isLoading } = useProjects(20); + + return ( +
+
+

Projects

+

+ Browse all projects and their assets +

+
+ + {isLoading ? ( +
+ {Array.from({ length: 6 }).map((_, i) => ( + + + + + + ))} +
+ ) : ( +
+ {data?.items.map((project) => ( + + +

{project.name}

+

+ {project.description} +

+
+ {project.status && ( + + {project.status} + + )} + {project.customer && ( + + {project.customer.name} + + )} +
+ {project.lastModificationDate && ( +

+ Updated {new Date(project.lastModificationDate).toLocaleDateString()} +

+ )} +
+ + ))} +
+ )} +
+ ); +} diff --git a/dalim-app/src/app/search/page.tsx b/dalim-app/src/app/search/page.tsx new file mode 100644 index 0000000..e64e7f9 --- /dev/null +++ b/dalim-app/src/app/search/page.tsx @@ -0,0 +1,275 @@ +"use client"; + +import { useState, Suspense } from "react"; +import { useSearchParams, useRouter } from "next/navigation"; +import { useSearch } from "@/hooks/use-dalim"; +import { Card } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Input } from "@/components/ui/input"; +import { Skeleton } from "@/components/ui/skeleton"; +import { Separator } from "@/components/ui/separator"; +import Image from "next/image"; +import Link from "next/link"; + +function getPlaceholderIndex(id: string): number { + const num = parseInt(id.replace(/\D/g, ""), 10) || 1; + return ((num - 1) % 8) + 1; +} + +function SearchContent() { + const searchParams = useSearchParams(); + const router = useRouter(); + const initialQuery = searchParams.get("q") ?? ""; + const [query, setQuery] = useState(initialQuery); + const [activeFacets, setActiveFacets] = useState>({}); + const [viewMode, setViewMode] = useState<"grid" | "list">("list"); + + const { data, isLoading } = useSearch(initialQuery); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + if (query.trim()) { + router.push(`/search?q=${encodeURIComponent(query.trim())}`); + } + }; + + const toggleFacet = (name: string, value: string) => { + setActiveFacets((prev) => { + const next = { ...prev }; + if (next[name] === value) { + delete next[name]; + } else { + next[name] = value; + } + return next; + }); + }; + + // Client-side facet filtering on mock data + const filteredItems = data?.items.filter((item) => { + for (const [facetName, facetValue] of Object.entries(activeFacets)) { + if (facetName === "mimeType" && item.mimeType !== facetValue) return false; + // For status facet we don't have it on SearchResult, skip + } + return true; + }); + + return ( +
+ {/* Search bar */} +
+ setQuery(e.target.value)} + className="flex-1 text-base h-12" + autoFocus + /> + +
+ + {!initialQuery ? ( +
+ + + +

+ Search across all assets +

+

+ Try “banner”, “packaging”, or “logo” +

+
+ ) : isLoading ? ( +
+ {Array.from({ length: 4 }).map((_, i) => ( + + ))} +
+ ) : ( +
+ {/* Facet sidebar */} + {data?.facets && data.facets.length > 0 && ( +
+
+

Filters

+ {Object.keys(activeFacets).length > 0 && ( + + )} +
+ {data.facets.map((facet) => ( +
+

+ {facet.name === "mimeType" ? "File Type" : facet.name} +

+
+ {facet.values.map((v) => { + const isActive = activeFacets[facet.name] === v.value; + return ( + + ); + })} +
+
+ ))} +
+ )} + + {/* Results */} +
+
+

+ {filteredItems?.length ?? 0} results for “{initialQuery}” + {Object.keys(activeFacets).length > 0 && " (filtered)"} +

+
+ + +
+
+ + {viewMode === "list" ? ( +
+ {filteredItems?.map((item) => ( + + +
+ {item.name} +
+
+

+ {item.name} +

+ {item.description && ( +

+ {item.description} +

+ )} +
+
+ {item.mimeType && ( + + {item.mimeType.split("/").pop()} + + )} +
+
+ + ))} +
+ ) : ( +
+ {filteredItems?.map((item) => ( + + +
+ {item.name} +
+
+

{item.name}

+ {item.mimeType && ( +

+ {item.mimeType.split("/").pop()} +

+ )} +
+
+ + ))} +
+ )} + + {filteredItems?.length === 0 && ( +
+ No results match your filters +
+ )} +
+
+ )} +
+ ); +} + +export default function SearchPage() { + return ( +
+
+

Search

+

+ Find assets across all projects +

+
+ + + +
+ } + > + + +
+ ); +} diff --git a/dalim-app/src/app/workflows/page.tsx b/dalim-app/src/app/workflows/page.tsx new file mode 100644 index 0000000..33bf645 --- /dev/null +++ b/dalim-app/src/app/workflows/page.tsx @@ -0,0 +1,293 @@ +"use client"; + +import { + useWorkflows, + useApprovals, + useChannels, + useDistributionJobs, +} from "@/hooks/use-dalim"; +import { Card } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Skeleton } from "@/components/ui/skeleton"; +import { Separator } from "@/components/ui/separator"; + +function getApprovalStatusColor(status: string): string { + switch (status) { + case "APPROVED": + return "bg-green-100 text-green-800"; + case "PENDING": + return "bg-yellow-100 text-yellow-800"; + case "REJECTED": + return "bg-red-100 text-red-800"; + default: + return "bg-gray-100 text-gray-800"; + } +} + +function getJobStatusColor(status: string): string { + switch (status) { + case "completed": + return "bg-green-100 text-green-800"; + case "processing": + return "bg-blue-100 text-blue-800"; + case "queued": + return "bg-yellow-100 text-yellow-800"; + case "failed": + return "bg-red-100 text-red-800"; + default: + return "bg-gray-100 text-gray-800"; + } +} + +function getChannelStatusColor(status: string): string { + switch (status) { + case "connected": + return "bg-green-500"; + case "available": + return "bg-yellow-500"; + case "coming_soon": + return "bg-gray-400"; + default: + return "bg-gray-400"; + } +} + +const categoryLabels: Record = { + pim: "Product Data", + social: "Social Media", + web: "Web & App", + instore: "In-Store", + print: "Print", + advertising: "Advertising", + google: "Google", +}; + +export default function WorkflowsPage() { + const { data: workflows, isLoading: wfLoading } = useWorkflows(); + const { data: approvals, isLoading: apLoading } = useApprovals(); + const { data: channels, isLoading: chLoading } = useChannels(); + const { data: jobs, isLoading: jobsLoading } = useDistributionJobs(); + + return ( +
+
+

+ Workflows & Distribution +

+

+ Manage workflows, approvals, and asset distribution to platforms +

+
+ + {/* Stats row */} +
+ +

Workflows

+

+ {workflows?.items.length ?? "—"} +

+
+ +

Pending Approvals

+

+ {approvals?.items.filter((a) => a.status === "PENDING").length ?? + "—"} +

+
+ +

+ Connected Platforms +

+

+ {channels?.filter((c) => c.status === "connected").length ?? "—"} +

+
+ +

+ Recent Distributions +

+

{jobs?.length ?? "—"}

+
+
+ + {/* Two-column layout */} +
+ {/* Left: Workflows & Approvals */} +
+ {/* Active Workflows */} +
+

Active Workflows

+ {wfLoading ? ( +
+ {Array.from({ length: 3 }).map((_, i) => ( + + ))} +
+ ) : ( +
+ {workflows?.items.map((wf) => ( + +
+
+

{wf.name}

+ {wf.description && ( +

+ {wf.description} +

+ )} +
+ + v{wf.revision} + +
+
+ ))} +
+ )} +
+ + + + {/* Approval Queue */} +
+

Approval Queue

+ {apLoading ? ( +
+ {Array.from({ length: 3 }).map((_, i) => ( + + ))} +
+ ) : ( +
+ {approvals?.items.map((approval) => ( + +
+

+ {approval.entity.name} +

+

+ {approval.entity.type} · Level{" "} + {approval.level} ·{" "} + {approval.approver.firstName}{" "} + {approval.approver.lastName} +

+
+ + {approval.status} + +
+ ))} +
+ )} +
+
+ + {/* Right: Distribution channels & activity */} +
+ {/* Connected Platforms */} +
+

+ Distribution Platforms +

+ {chLoading ? ( +
+ {Array.from({ length: 5 }).map((_, i) => ( + + ))} +
+ ) : ( +
+ {Object.entries( + channels?.reduce( + (acc, ch) => { + if (!acc[ch.category]) acc[ch.category] = []; + acc[ch.category].push(ch); + return acc; + }, + {} as Record + ) ?? {} + ).map(([category, items]) => ( +
+

+ {categoryLabels[category] ?? category} +

+
+ {items!.map((ch) => ( +
+
+
+ {ch.name} +
+ + {ch.status.replace("_", " ")} + +
+ ))} +
+
+ ))} +
+ )} +
+ + + + {/* Recent Distribution Activity */} +
+

+ Recent Distribution Activity +

+ {jobsLoading ? ( +
+ {Array.from({ length: 4 }).map((_, i) => ( + + ))} +
+ ) : ( +
+ {jobs?.map((job) => ( + +
+

+ {job.assetName} +

+

+ → {job.channelName} · by{" "} + {job.initiatedBy} ·{" "} + {new Date(job.initiatedAt).toLocaleDateString( + "en-GB", + { + day: "numeric", + month: "short", + hour: "2-digit", + minute: "2-digit", + } + )} +

+
+ + {job.status} + +
+ ))} +
+ )} +
+
+
+
+ ); +} diff --git a/dalim-app/src/components/assets/asset-card.tsx b/dalim-app/src/components/assets/asset-card.tsx new file mode 100644 index 0000000..6b33ef0 --- /dev/null +++ b/dalim-app/src/components/assets/asset-card.tsx @@ -0,0 +1,88 @@ +"use client"; + +import type { Asset } from "@/lib/dalim-types"; +import { Card } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import Image from "next/image"; + +function formatFileSize(bytes?: number): string { + if (!bytes) return "—"; + if (bytes < 1024) return `${bytes} B`; + if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`; + if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`; + return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`; +} + +function getFileIcon(mimeType?: string): string { + if (!mimeType) return "DOC"; + if (mimeType.includes("pdf")) return "PDF"; + if (mimeType.includes("image") || mimeType.includes("tiff")) return "IMG"; + if (mimeType.includes("illustrator") || mimeType.includes("svg")) return "AI"; + if (mimeType.includes("indesign")) return "INDD"; + if (mimeType.includes("zip")) return "ZIP"; + return "FILE"; +} + +function getStatusColor(status?: string): string { + switch (status) { + case "APPROVED": + return "bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-300"; + case "IN_REVIEW": + return "bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-300"; + case "PENDING": + return "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300"; + case "REJECTED": + return "bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-300"; + default: + return "bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-300"; + } +} + +function getPlaceholderIndex(id: string): number { + const num = parseInt(id.replace(/\D/g, ""), 10) || 1; + return ((num - 1) % 8) + 1; +} + +export function AssetCard({ asset }: { asset: Asset }) { + const icon = getFileIcon(asset.mimeType); + const placeholderSrc = `/placeholders/placeholder-${getPlaceholderIndex(asset.id)}.jpg`; + + return ( + +
+ {asset.name} +
+ + {icon} + +
+
+
+

+ {asset.name} +

+
+ + {formatFileSize(asset.fileSize)} + + {asset.status && ( + + {asset.status} + + )} +
+ {asset.project && ( +

+ {asset.project.name} +

+ )} +
+
+ ); +} diff --git a/dalim-app/src/components/assets/asset-detail.tsx b/dalim-app/src/components/assets/asset-detail.tsx new file mode 100644 index 0000000..d067fd1 --- /dev/null +++ b/dalim-app/src/components/assets/asset-detail.tsx @@ -0,0 +1,178 @@ +"use client"; + +import type { Asset } from "@/lib/dalim-types"; +import { Badge } from "@/components/ui/badge"; +import { Card } from "@/components/ui/card"; +import { Separator } from "@/components/ui/separator"; +import Image from "next/image"; +import Link from "next/link"; + +function formatFileSize(bytes?: number): string { + if (!bytes) return "—"; + if (bytes < 1024) return `${bytes} B`; + if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`; + if (bytes < 1024 * 1024 * 1024) + return `${(bytes / (1024 * 1024)).toFixed(1)} MB`; + return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`; +} + +function getFileIcon(mimeType?: string): string { + if (!mimeType) return "DOC"; + if (mimeType.includes("pdf")) return "PDF"; + if (mimeType.includes("image") || mimeType.includes("tiff")) return "IMG"; + if (mimeType.includes("illustrator") || mimeType.includes("svg")) return "AI"; + if (mimeType.includes("indesign")) return "INDD"; + if (mimeType.includes("zip")) return "ZIP"; + return "FILE"; +} + +function getStatusColor(status?: string): string { + switch (status) { + case "APPROVED": + return "bg-green-100 text-green-800"; + case "IN_REVIEW": + return "bg-yellow-100 text-yellow-800"; + case "PENDING": + return "bg-blue-100 text-blue-800"; + case "REJECTED": + return "bg-red-100 text-red-800"; + default: + return "bg-gray-100 text-gray-800"; + } +} + +function formatDate(dateStr?: string): string { + if (!dateStr) return "—"; + return new Date(dateStr).toLocaleDateString("en-GB", { + day: "numeric", + month: "short", + year: "numeric", + hour: "2-digit", + minute: "2-digit", + }); +} + +function getPlaceholderIndex(id: string): number { + const num = parseInt(id.replace(/\D/g, ""), 10) || 1; + return ((num - 1) % 8) + 1; +} + +export function AssetDetail({ asset }: { asset: Asset }) { + const icon = getFileIcon(asset.mimeType); + const placeholderSrc = `/placeholders/placeholder-${getPlaceholderIndex(asset.id)}.jpg`; + + return ( +
+ {/* Preview area */} +
+ + {asset.name} +
+ + {icon} + +
+
+
+ + {/* Metadata panel */} +
+ +
+

{asset.name}

+ {asset.description && ( +

+ {asset.description} +

+ )} +
+ + + + {asset.status && ( +
+ Status + + {asset.status} + +
+ )} + +
+ + + + + +
+ + + + {asset.project && ( +
+ Project + + {asset.project.name} + +
+ )} + + {asset.folder && ( +
+ Folder + {asset.folder.name} +
+ )} + + {asset.folder?.path && ( +
+ Path +

+ {asset.folder.path} +

+
+ )} +
+ + {asset.metadatas && asset.metadatas.length > 0 && ( + +

Metadata

+
+ {asset.metadatas.map((m) => ( + + ))} +
+
+ )} +
+
+ ); +} + +function MetaRow({ label, value }: { label: string; value: string }) { + return ( +
+ {label} + {value} +
+ ); +} diff --git a/dalim-app/src/components/assets/asset-grid.tsx b/dalim-app/src/components/assets/asset-grid.tsx new file mode 100644 index 0000000..5972aad --- /dev/null +++ b/dalim-app/src/components/assets/asset-grid.tsx @@ -0,0 +1,87 @@ +"use client"; + +import { useState } from "react"; +import type { Asset } from "@/lib/dalim-types"; +import { AssetCard } from "./asset-card"; +import { Skeleton } from "@/components/ui/skeleton"; +import { SendToDialog } from "@/components/distribution/send-to-dialog"; +import Link from "next/link"; + +export function AssetGrid({ + assets, + isLoading, + linkPrefix = "/assets", +}: { + assets?: Asset[]; + isLoading: boolean; + linkPrefix?: string; +}) { + const [sendToAsset, setSendToAsset] = useState(null); + + if (isLoading) { + return ( +
+ {Array.from({ length: 8 }).map((_, i) => ( +
+ + + +
+ ))} +
+ ); + } + + if (!assets || assets.length === 0) { + return ( +
+ No assets found +
+ ); + } + + return ( + <> +
+ {assets.map((asset) => ( +
+ + + + +
+ ))} +
+ {sendToAsset && ( + setSendToAsset(null)} + /> + )} + + ); +} diff --git a/dalim-app/src/components/distribution/send-to-dialog.tsx b/dalim-app/src/components/distribution/send-to-dialog.tsx new file mode 100644 index 0000000..f8d6344 --- /dev/null +++ b/dalim-app/src/components/distribution/send-to-dialog.tsx @@ -0,0 +1,173 @@ +"use client"; + +import { useState } from "react"; +import { useChannels, useSendToChannel } from "@/hooks/use-dalim"; +import type { DistributionChannel } from "@/lib/dalim-types"; +import { Badge } from "@/components/ui/badge"; +import { cn } from "@/lib/utils"; + +const categoryLabels: Record = { + pim: "Product Data", + social: "Social Media", + web: "Web & App", + instore: "In-Store", + print: "Print", + advertising: "Advertising", + google: "Google", +}; + +const categoryOrder = ["web", "social", "google", "advertising", "pim", "instore", "print"]; + +const channelIcons: Record = { + database: , + globe: , + smartphone: , + "shopping-cart": , + facebook: , + video: , + linkedin: , + google: , + youtube: , + tag: , + monitor: , + layout: , + printer: , + mail: , + target: , + store: , +}; + +interface SendToDialogProps { + assetId: string; + assetName: string; + isOpen: boolean; + onClose: () => void; +} + +export function SendToDialog({ + assetId, + assetName, + isOpen, + onClose, +}: SendToDialogProps) { + const { data: channels, isLoading } = useChannels(); + const sendMutation = useSendToChannel(); + const [sentChannels, setSentChannels] = useState>(new Set()); + + if (!isOpen) return null; + + const grouped = channels?.reduce( + (acc, ch) => { + if (!acc[ch.category]) acc[ch.category] = []; + acc[ch.category].push(ch); + return acc; + }, + {} as Record + ); + + const handleSend = async (channelId: string) => { + await sendMutation.mutateAsync({ assetId, channelId }); + setSentChannels((prev) => new Set(prev).add(channelId)); + }; + + return ( +
+
+
+ {/* Header */} +
+
+

Send To Platform

+

+ Distribute {assetName} +

+
+ +
+ + {/* Content */} +
+ {isLoading ? ( +

+ Loading channels... +

+ ) : ( + categoryOrder.map((cat) => { + const items = grouped?.[cat]; + if (!items?.length) return null; + return ( +
+

+ {categoryLabels[cat] ?? cat} +

+
+ {items.map((ch) => { + const isSent = sentChannels.has(ch.id); + const isDisabled = + ch.status === "coming_soon" || isSent; + return ( + + ); + })} +
+
+ ); + }) + )} +
+
+
+ ); +} diff --git a/dalim-app/src/components/error-boundary.tsx b/dalim-app/src/components/error-boundary.tsx new file mode 100644 index 0000000..c8d5dcf --- /dev/null +++ b/dalim-app/src/components/error-boundary.tsx @@ -0,0 +1,60 @@ +"use client"; + +import { Component, type ReactNode } from "react"; +import { Card } from "@/components/ui/card"; + +interface Props { + children: ReactNode; + fallback?: ReactNode; +} + +interface State { + hasError: boolean; + error?: Error; +} + +export class ErrorBoundary extends Component { + constructor(props: Props) { + super(props); + this.state = { hasError: false }; + } + + static getDerivedStateFromError(error: Error): State { + return { hasError: true, error }; + } + + render() { + if (this.state.hasError) { + if (this.props.fallback) return this.props.fallback; + return ( + + + + +

Something went wrong

+

+ {this.state.error?.message ?? "An unexpected error occurred"} +

+ +
+ ); + } + + return this.props.children; + } +} diff --git a/dalim-app/src/components/folders/folder-tree.tsx b/dalim-app/src/components/folders/folder-tree.tsx new file mode 100644 index 0000000..7ecabc7 --- /dev/null +++ b/dalim-app/src/components/folders/folder-tree.tsx @@ -0,0 +1,91 @@ +"use client"; + +import type { Folder } from "@/lib/dalim-types"; +import { cn } from "@/lib/utils"; +import { Skeleton } from "@/components/ui/skeleton"; + +interface FolderTreeProps { + folders?: Folder[]; + isLoading?: boolean; + selectedId?: string; + onSelect: (folderId: string | undefined) => void; +} + +export function FolderTree({ + folders, + isLoading, + selectedId, + onSelect, +}: FolderTreeProps) { + if (isLoading) { + return ( +
+ {Array.from({ length: 4 }).map((_, i) => ( + + ))} +
+ ); + } + + if (!folders || folders.length === 0) { + return ( +

No folders

+ ); + } + + return ( +
+ + {folders.map((folder) => ( + + ))} +
+ ); +} diff --git a/dalim-app/src/components/layout/header.tsx b/dalim-app/src/components/layout/header.tsx new file mode 100644 index 0000000..5bb4689 --- /dev/null +++ b/dalim-app/src/components/layout/header.tsx @@ -0,0 +1,34 @@ +"use client"; + +import { useState } from "react"; +import { useRouter } from "next/navigation"; +import { Input } from "@/components/ui/input"; + +export function Header() { + const [searchQuery, setSearchQuery] = useState(""); + const router = useRouter(); + + const handleSearch = (e: React.FormEvent) => { + e.preventDefault(); + if (searchQuery.trim()) { + router.push(`/search?q=${encodeURIComponent(searchQuery.trim())}`); + } + }; + + return ( +
+
+ setSearchQuery(e.target.value)} + className="w-full" + /> +
+
+ ES FUSiON +
+
+ ); +} diff --git a/dalim-app/src/components/layout/sidebar.tsx b/dalim-app/src/components/layout/sidebar.tsx new file mode 100644 index 0000000..e75b0d5 --- /dev/null +++ b/dalim-app/src/components/layout/sidebar.tsx @@ -0,0 +1,113 @@ +"use client"; + +import Link from "next/link"; +import Image from "next/image"; +import { usePathname } from "next/navigation"; +import { cn } from "@/lib/utils"; + +const navItems = [ + { href: "/", label: "Dashboard", icon: "LayoutDashboard" }, + { href: "/projects", label: "Projects", icon: "FolderKanban" }, + { href: "/assets", label: "Assets", icon: "FileImage" }, + { href: "/search", label: "Search", icon: "Search" }, + { href: "/collections", label: "Collections", icon: "Library" }, + { href: "/workflows", label: "Workflows", icon: "GitBranch" }, + { href: "/processes", label: "Processes", icon: "Activity" }, +]; + +const icons: Record = { + LayoutDashboard: ( + + + + ), + FolderKanban: ( + + + + ), + FileImage: ( + + + + ), + Search: ( + + + + ), + Library: ( + + + + ), + GitBranch: ( + + + + ), + Activity: ( + + + + ), +}; + +export function Sidebar() { + const pathname = usePathname(); + + return ( + + ); +} diff --git a/dalim-app/src/components/providers.tsx b/dalim-app/src/components/providers.tsx new file mode 100644 index 0000000..8b06a7c --- /dev/null +++ b/dalim-app/src/components/providers.tsx @@ -0,0 +1,22 @@ +"use client"; + +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { useState } from "react"; + +export function Providers({ children }: { children: React.ReactNode }) { + const [queryClient] = useState( + () => + new QueryClient({ + defaultOptions: { + queries: { + staleTime: 60 * 1000, // 1 minute + refetchOnWindowFocus: false, + }, + }, + }) + ); + + return ( + {children} + ); +} diff --git a/dalim-app/src/components/ui/avatar.tsx b/dalim-app/src/components/ui/avatar.tsx new file mode 100644 index 0000000..e4fed86 --- /dev/null +++ b/dalim-app/src/components/ui/avatar.tsx @@ -0,0 +1,109 @@ +"use client" + +import * as React from "react" +import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar" + +import { cn } from "@/lib/utils" + +function Avatar({ + className, + size = "default", + ...props +}: AvatarPrimitive.Root.Props & { + size?: "default" | "sm" | "lg" +}) { + return ( + + ) +} + +function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) { + return ( + + ) +} + +function AvatarFallback({ + className, + ...props +}: AvatarPrimitive.Fallback.Props) { + return ( + + ) +} + +function AvatarBadge({ className, ...props }: React.ComponentProps<"span">) { + return ( + svg]:hidden", + "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", + "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", + className + )} + {...props} + /> + ) +} + +function AvatarGroup({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AvatarGroupCount({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3", + className + )} + {...props} + /> + ) +} + +export { + Avatar, + AvatarImage, + AvatarFallback, + AvatarGroup, + AvatarGroupCount, + AvatarBadge, +} diff --git a/dalim-app/src/components/ui/badge.tsx b/dalim-app/src/components/ui/badge.tsx new file mode 100644 index 0000000..b20959d --- /dev/null +++ b/dalim-app/src/components/ui/badge.tsx @@ -0,0 +1,52 @@ +import { mergeProps } from "@base-ui/react/merge-props" +import { useRender } from "@base-ui/react/use-render" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80", + secondary: + "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80", + destructive: + "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20", + outline: + "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground", + ghost: + "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50", + link: "text-primary underline-offset-4 hover:underline", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Badge({ + className, + variant = "default", + render, + ...props +}: useRender.ComponentProps<"span"> & VariantProps) { + return useRender({ + defaultTagName: "span", + props: mergeProps<"span">( + { + className: cn(badgeVariants({ variant }), className), + }, + props + ), + render, + state: { + slot: "badge", + variant, + }, + }) +} + +export { Badge, badgeVariants } diff --git a/dalim-app/src/components/ui/button.tsx b/dalim-app/src/components/ui/button.tsx new file mode 100644 index 0000000..f061d1f --- /dev/null +++ b/dalim-app/src/components/ui/button.tsx @@ -0,0 +1,60 @@ +"use client" + +import { Button as ButtonPrimitive } from "@base-ui/react/button" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80", + outline: + "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground", + ghost: + "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50", + destructive: + "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: + "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2", + xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3", + sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5", + lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2", + icon: "size-8", + "icon-xs": + "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3", + "icon-sm": + "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg", + "icon-lg": "size-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +function Button({ + className, + variant = "default", + size = "default", + ...props +}: ButtonPrimitive.Props & VariantProps) { + return ( + + ) +} + +export { Button, buttonVariants } diff --git a/dalim-app/src/components/ui/card.tsx b/dalim-app/src/components/ui/card.tsx new file mode 100644 index 0000000..40cac5f --- /dev/null +++ b/dalim-app/src/components/ui/card.tsx @@ -0,0 +1,103 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +function Card({ + className, + size = "default", + ...props +}: React.ComponentProps<"div"> & { size?: "default" | "sm" }) { + return ( +
img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", + className + )} + {...props} + /> + ) +} + +function CardHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardDescription({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardAction({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardContent({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { + Card, + CardHeader, + CardFooter, + CardTitle, + CardAction, + CardDescription, + CardContent, +} diff --git a/dalim-app/src/components/ui/dialog.tsx b/dalim-app/src/components/ui/dialog.tsx new file mode 100644 index 0000000..014f5aa --- /dev/null +++ b/dalim-app/src/components/ui/dialog.tsx @@ -0,0 +1,160 @@ +"use client" + +import * as React from "react" +import { Dialog as DialogPrimitive } from "@base-ui/react/dialog" + +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" +import { XIcon } from "lucide-react" + +function Dialog({ ...props }: DialogPrimitive.Root.Props) { + return +} + +function DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) { + return +} + +function DialogPortal({ ...props }: DialogPrimitive.Portal.Props) { + return +} + +function DialogClose({ ...props }: DialogPrimitive.Close.Props) { + return +} + +function DialogOverlay({ + className, + ...props +}: DialogPrimitive.Backdrop.Props) { + return ( + + ) +} + +function DialogContent({ + className, + children, + showCloseButton = true, + ...props +}: DialogPrimitive.Popup.Props & { + showCloseButton?: boolean +}) { + return ( + + + + {children} + {showCloseButton && ( + + } + > + + Close + + )} + + + ) +} + +function DialogHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function DialogFooter({ + className, + showCloseButton = false, + children, + ...props +}: React.ComponentProps<"div"> & { + showCloseButton?: boolean +}) { + return ( +
+ {children} + {showCloseButton && ( + }> + Close + + )} +
+ ) +} + +function DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) { + return ( + + ) +} + +function DialogDescription({ + className, + ...props +}: DialogPrimitive.Description.Props) { + return ( + + ) +} + +export { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogOverlay, + DialogPortal, + DialogTitle, + DialogTrigger, +} diff --git a/dalim-app/src/components/ui/dropdown-menu.tsx b/dalim-app/src/components/ui/dropdown-menu.tsx new file mode 100644 index 0000000..9d5ebbd --- /dev/null +++ b/dalim-app/src/components/ui/dropdown-menu.tsx @@ -0,0 +1,268 @@ +"use client" + +import * as React from "react" +import { Menu as MenuPrimitive } from "@base-ui/react/menu" + +import { cn } from "@/lib/utils" +import { ChevronRightIcon, CheckIcon } from "lucide-react" + +function DropdownMenu({ ...props }: MenuPrimitive.Root.Props) { + return +} + +function DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) { + return +} + +function DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) { + return +} + +function DropdownMenuContent({ + align = "start", + alignOffset = 0, + side = "bottom", + sideOffset = 4, + className, + ...props +}: MenuPrimitive.Popup.Props & + Pick< + MenuPrimitive.Positioner.Props, + "align" | "alignOffset" | "side" | "sideOffset" + >) { + return ( + + + + + + ) +} + +function DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) { + return +} + +function DropdownMenuLabel({ + className, + inset, + ...props +}: MenuPrimitive.GroupLabel.Props & { + inset?: boolean +}) { + return ( + + ) +} + +function DropdownMenuItem({ + className, + inset, + variant = "default", + ...props +}: MenuPrimitive.Item.Props & { + inset?: boolean + variant?: "default" | "destructive" +}) { + return ( + + ) +} + +function DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) { + return +} + +function DropdownMenuSubTrigger({ + className, + inset, + children, + ...props +}: MenuPrimitive.SubmenuTrigger.Props & { + inset?: boolean +}) { + return ( + + {children} + + + ) +} + +function DropdownMenuSubContent({ + align = "start", + alignOffset = -3, + side = "right", + sideOffset = 0, + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DropdownMenuCheckboxItem({ + className, + children, + checked, + inset, + ...props +}: MenuPrimitive.CheckboxItem.Props & { + inset?: boolean +}) { + return ( + + + + + + + {children} + + ) +} + +function DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) { + return ( + + ) +} + +function DropdownMenuRadioItem({ + className, + children, + inset, + ...props +}: MenuPrimitive.RadioItem.Props & { + inset?: boolean +}) { + return ( + + + + + + + {children} + + ) +} + +function DropdownMenuSeparator({ + className, + ...props +}: MenuPrimitive.Separator.Props) { + return ( + + ) +} + +function DropdownMenuShortcut({ + className, + ...props +}: React.ComponentProps<"span">) { + return ( + + ) +} + +export { + DropdownMenu, + DropdownMenuPortal, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuLabel, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuSub, + DropdownMenuSubTrigger, + DropdownMenuSubContent, +} diff --git a/dalim-app/src/components/ui/input.tsx b/dalim-app/src/components/ui/input.tsx new file mode 100644 index 0000000..7d21bab --- /dev/null +++ b/dalim-app/src/components/ui/input.tsx @@ -0,0 +1,20 @@ +import * as React from "react" +import { Input as InputPrimitive } from "@base-ui/react/input" + +import { cn } from "@/lib/utils" + +function Input({ className, type, ...props }: React.ComponentProps<"input">) { + return ( + + ) +} + +export { Input } diff --git a/dalim-app/src/components/ui/scroll-area.tsx b/dalim-app/src/components/ui/scroll-area.tsx new file mode 100644 index 0000000..84c1e9f --- /dev/null +++ b/dalim-app/src/components/ui/scroll-area.tsx @@ -0,0 +1,55 @@ +"use client" + +import * as React from "react" +import { ScrollArea as ScrollAreaPrimitive } from "@base-ui/react/scroll-area" + +import { cn } from "@/lib/utils" + +function ScrollArea({ + className, + children, + ...props +}: ScrollAreaPrimitive.Root.Props) { + return ( + + + {children} + + + + + ) +} + +function ScrollBar({ + className, + orientation = "vertical", + ...props +}: ScrollAreaPrimitive.Scrollbar.Props) { + return ( + + + + ) +} + +export { ScrollArea, ScrollBar } diff --git a/dalim-app/src/components/ui/separator.tsx b/dalim-app/src/components/ui/separator.tsx new file mode 100644 index 0000000..6e1369e --- /dev/null +++ b/dalim-app/src/components/ui/separator.tsx @@ -0,0 +1,25 @@ +"use client" + +import { Separator as SeparatorPrimitive } from "@base-ui/react/separator" + +import { cn } from "@/lib/utils" + +function Separator({ + className, + orientation = "horizontal", + ...props +}: SeparatorPrimitive.Props) { + return ( + + ) +} + +export { Separator } diff --git a/dalim-app/src/components/ui/sheet.tsx b/dalim-app/src/components/ui/sheet.tsx new file mode 100644 index 0000000..78c0a76 --- /dev/null +++ b/dalim-app/src/components/ui/sheet.tsx @@ -0,0 +1,138 @@ +"use client" + +import * as React from "react" +import { Dialog as SheetPrimitive } from "@base-ui/react/dialog" + +import { cn } from "@/lib/utils" +import { Button } from "@/components/ui/button" +import { XIcon } from "lucide-react" + +function Sheet({ ...props }: SheetPrimitive.Root.Props) { + return +} + +function SheetTrigger({ ...props }: SheetPrimitive.Trigger.Props) { + return +} + +function SheetClose({ ...props }: SheetPrimitive.Close.Props) { + return +} + +function SheetPortal({ ...props }: SheetPrimitive.Portal.Props) { + return +} + +function SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) { + return ( + + ) +} + +function SheetContent({ + className, + children, + side = "right", + showCloseButton = true, + ...props +}: SheetPrimitive.Popup.Props & { + side?: "top" | "right" | "bottom" | "left" + showCloseButton?: boolean +}) { + return ( + + + + {children} + {showCloseButton && ( + + } + > + + Close + + )} + + + ) +} + +function SheetHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function SheetFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function SheetTitle({ className, ...props }: SheetPrimitive.Title.Props) { + return ( + + ) +} + +function SheetDescription({ + className, + ...props +}: SheetPrimitive.Description.Props) { + return ( + + ) +} + +export { + Sheet, + SheetTrigger, + SheetClose, + SheetContent, + SheetHeader, + SheetFooter, + SheetTitle, + SheetDescription, +} diff --git a/dalim-app/src/components/ui/skeleton.tsx b/dalim-app/src/components/ui/skeleton.tsx new file mode 100644 index 0000000..0118624 --- /dev/null +++ b/dalim-app/src/components/ui/skeleton.tsx @@ -0,0 +1,13 @@ +import { cn } from "@/lib/utils" + +function Skeleton({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { Skeleton } diff --git a/dalim-app/src/components/ui/tooltip.tsx b/dalim-app/src/components/ui/tooltip.tsx new file mode 100644 index 0000000..69e8a82 --- /dev/null +++ b/dalim-app/src/components/ui/tooltip.tsx @@ -0,0 +1,66 @@ +"use client" + +import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip" + +import { cn } from "@/lib/utils" + +function TooltipProvider({ + delay = 0, + ...props +}: TooltipPrimitive.Provider.Props) { + return ( + + ) +} + +function Tooltip({ ...props }: TooltipPrimitive.Root.Props) { + return +} + +function TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) { + return +} + +function TooltipContent({ + className, + side = "top", + sideOffset = 4, + align = "center", + alignOffset = 0, + children, + ...props +}: TooltipPrimitive.Popup.Props & + Pick< + TooltipPrimitive.Positioner.Props, + "align" | "alignOffset" | "side" | "sideOffset" + >) { + return ( + + + + {children} + + + + + ) +} + +export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } diff --git a/dalim-app/src/hooks/use-dalim.ts b/dalim-app/src/hooks/use-dalim.ts new file mode 100644 index 0000000..793ff02 --- /dev/null +++ b/dalim-app/src/hooks/use-dalim.ts @@ -0,0 +1,189 @@ +"use client"; + +import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; +import type { + Project, + Folder, + Asset, + Collection, + Workflow, + Approval, + ProcessMonitorEntry, + DistributionChannel, + DistributionJob, + PagingResponse, + SearchResponse, +} from "@/lib/dalim-types"; + +async function fetchAPI(url: string): Promise { + const res = await fetch(url); + if (!res.ok) throw new Error(`API error: ${res.status}`); + return res.json(); +} + +export function useProjects(limit = 20) { + return useQuery({ + queryKey: ["projects", limit], + queryFn: () => + fetchAPI>(`/api/projects?limit=${limit}`), + }); +} + +export function useProject(id: string) { + return useQuery({ + queryKey: ["project", id], + queryFn: () => fetchAPI(`/api/projects/${id}`), + enabled: !!id, + }); +} + +export function useAssets(limit = 24) { + return useQuery({ + queryKey: ["assets", limit], + queryFn: () => + fetchAPI>(`/api/assets?limit=${limit}`), + }); +} + +export function useAsset(id: string) { + return useQuery({ + queryKey: ["asset", id], + queryFn: () => fetchAPI(`/api/assets/${id}`), + enabled: !!id, + }); +} + +export function useSearch(query: string, limit = 24) { + return useQuery({ + queryKey: ["search", query, limit], + queryFn: () => + fetchAPI( + `/api/search?q=${encodeURIComponent(query)}&limit=${limit}` + ), + enabled: query.length > 0, + }); +} + +export function useWorkflows(limit = 20) { + return useQuery({ + queryKey: ["workflows", limit], + queryFn: () => + fetchAPI>(`/api/workflows?limit=${limit}`), + }); +} + +export function useApprovals(limit = 20) { + return useQuery({ + queryKey: ["approvals", limit], + queryFn: () => + fetchAPI>(`/api/approvals?limit=${limit}`), + }); +} + +export function useCollections(limit = 20) { + return useQuery({ + queryKey: ["collections", limit], + queryFn: () => + fetchAPI>(`/api/collections?limit=${limit}`), + }); +} + +export function useProcesses(limit = 20) { + return useQuery({ + queryKey: ["processes", limit], + queryFn: () => + fetchAPI>( + `/api/processes?limit=${limit}` + ), + }); +} + +// === Phase 2: Project detail & folder browsing === + +export function useProjectFolders(projectId: string) { + return useQuery({ + queryKey: ["project-folders", projectId], + queryFn: () => fetchAPI(`/api/projects/${projectId}/folders`), + enabled: !!projectId, + }); +} + +export function useProjectAssets( + projectId: string, + folderId?: string, + limit = 24 +) { + return useQuery({ + queryKey: ["project-assets", projectId, folderId, limit], + queryFn: () => { + const params = new URLSearchParams({ limit: String(limit) }); + if (folderId) params.set("folderId", folderId); + return fetchAPI>( + `/api/projects/${projectId}/assets?${params}` + ); + }, + enabled: !!projectId, + }); +} + +export function useFolderAssets(folderId: string, limit = 24) { + return useQuery({ + queryKey: ["folder-assets", folderId, limit], + queryFn: () => + fetchAPI>( + `/api/folders/${folderId}/assets?limit=${limit}` + ), + enabled: !!folderId, + }); +} + +export function useFolder(id: string) { + return useQuery({ + queryKey: ["folder", id], + queryFn: () => fetchAPI(`/api/folders/${id}`), + enabled: !!id, + }); +} + +// === Distribution / Send-to === + +export function useChannels() { + return useQuery({ + queryKey: ["channels"], + queryFn: () => fetchAPI("/api/channels"), + }); +} + +export function useDistributionJobs(assetId?: string) { + return useQuery({ + queryKey: ["distribution-jobs", assetId], + queryFn: () => { + const params = assetId ? `?assetId=${assetId}` : ""; + return fetchAPI(`/api/distribution${params}`); + }, + }); +} + +export function useSendToChannel() { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ + assetId, + channelId, + }: { + assetId: string; + channelId: string; + }) => { + const res = await fetch("/api/distribution", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ assetId, channelId }), + }); + if (!res.ok) throw new Error("Failed to send"); + return res.json() as Promise; + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["distribution-jobs"] }); + }, + }); +} diff --git a/dalim-app/src/lib/dalim-client.ts b/dalim-app/src/lib/dalim-client.ts new file mode 100644 index 0000000..44b11cc --- /dev/null +++ b/dalim-app/src/lib/dalim-client.ts @@ -0,0 +1,68 @@ +import { GraphQLClient } from "graphql-request"; + +interface TokenResponse { + access_token: string; + token_type: string; + expires_in: number; +} + +let cachedToken: string | null = null; +let tokenExpiry: number = 0; + +function isMockMode(): boolean { + return process.env.DALIM_MOCK_MODE === "true"; +} + +async function getAccessToken(): Promise { + if (cachedToken && Date.now() < tokenExpiry) { + return cachedToken; + } + + const tokenUrl = process.env.DALIM_TOKEN_URL!; + const response = await fetch(tokenUrl, { + method: "POST", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body: new URLSearchParams({ + grant_type: "password", + client_id: process.env.DALIM_CLIENT_ID!, + client_secret: process.env.DALIM_CLIENT_SECRET!, + username: process.env.DALIM_USERNAME!, + password: process.env.DALIM_PASSWORD!, + }), + }); + + if (!response.ok) { + throw new Error(`Token request failed: ${response.status} ${response.statusText}`); + } + + const data: TokenResponse = await response.json(); + cachedToken = data.access_token; + // Expire 60 seconds early to avoid edge cases + tokenExpiry = Date.now() + (data.expires_in - 60) * 1000; + + return cachedToken; +} + +export function getDalimClient(): GraphQLClient { + const url = process.env.DALIM_GRAPHQL_URL!; + return new GraphQLClient(url); +} + +export async function dalimQuery( + query: string, + variables?: Record +): Promise { + if (isMockMode()) { + throw new Error("MOCK_MODE: Use dalimMockQuery instead"); + } + + const token = await getAccessToken(); + const client = getDalimClient(); + + return client.request(query, variables, { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json", + }); +} + +export { isMockMode }; diff --git a/dalim-app/src/lib/dalim-queries.ts b/dalim-app/src/lib/dalim-queries.ts new file mode 100644 index 0000000..9474417 --- /dev/null +++ b/dalim-app/src/lib/dalim-queries.ts @@ -0,0 +1,223 @@ +// GraphQL query strings for Dalim ES FUSiON API +// Reference: ../docs/dalim-api-reference.md + +export const QUERIES = { + // === System === + whoami: `query { whoami { login firstName lastName email } }`, + + serverInformation: `query { serverInformation { version build } }`, + + // === Projects === + projects: ` + query projects($filter: iFilter, $limit: Int, $cursor: ID) { + projects(filter: $filter, limit: $limit, cursor: $cursor) { + items { + id + name + description + status + creationDate + lastModificationDate + customer { id name } + } + cursor + totalCount + } + } + `, + + projectById: ` + query projectById($id: [ID!]!) { + projectById(id: $id) { + id + name + description + status + creationDate + lastModificationDate + customer { id name } + metadatas { name value } + } + } + `, + + // === Folders === + folders: ` + query folders($filter: iFilter, $limit: Int, $cursor: ID) { + folders(filter: $filter, limit: $limit, cursor: $cursor) { + items { + id + name + path + creationDate + volume { id name } + } + cursor + totalCount + } + } + `, + + folderById: ` + query folderById($id: [ID!]!) { + folderById(id: $id) { + id + name + path + creationDate + volume { id name } + } + } + `, + + // === Assets === + assets: ` + query assets($filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy) { + assets(filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy) { + items { + id + name + description + creationDate + lastModificationDate + currentRevision + mimeType + fileSize + status + folder { id name } + project { id name } + } + cursor + totalCount + } + } + `, + + assetById: ` + query assetById($id: [ID!]!) { + assetById(id: $id) { + id + name + description + creationDate + lastModificationDate + currentRevision + mimeType + fileSize + status + folder { id name path } + project { id name } + metadatas { name value } + } + } + `, + + // === Search === + search: ` + query search($filter: iSearchFilter!, $facets: [String!]!, $limit: Int, $cursor: ID) { + search(filter: $filter, facets: $facets, limit: $limit, cursor: $cursor) { + items { + id + name + description + type + mimeType + creationDate + lastModificationDate + } + totalCount + cursor + facets { name values { value count } } + } + } + `, + + // === Workflows === + workflows: ` + query workflows($filter: iFilter, $limit: Int, $cursor: ID) { + workflows(filter: $filter, limit: $limit, cursor: $cursor) { + items { + id + name + description + revision + } + cursor + totalCount + } + } + `, + + workflowsByEntity: ` + query workflowsByEntity($entityId: ID!) { + workflowsByEntity(entityId: $entityId) { + id + name + revision + } + } + `, + + // === Approvals === + approvals: ` + query approvals($filter: iFilter, $limit: Int, $cursor: ID) { + approvals(filter: $filter, limit: $limit, cursor: $cursor) { + items { + id + status + entity { id name type } + approver { id login firstName lastName } + level + } + cursor + totalCount + } + } + `, + + // === Collections === + collections: ` + query collections($filter: iFilter, $limit: Int, $cursor: ID) { + collections(filter: $filter, limit: $limit, cursor: $cursor) { + items { + id + name + description + creationDate + } + cursor + totalCount + } + } + `, + + collectionById: ` + query collectionById($id: [ID!]!) { + collectionById(id: $id) { + id + name + description + creationDate + } + } + `, + + // === Process Monitoring === + processMonitoring: ` + query processMonitoring($filter: iFilter, $limit: Int, $cursor: ID) { + processMonitoring(filter: $filter, limit: $limit, cursor: $cursor) { + items { + id + name + status + progress + startDate + endDate + entity { id name type } + } + cursor + totalCount + } + } + `, +} as const; diff --git a/dalim-app/src/lib/dalim-service.ts b/dalim-app/src/lib/dalim-service.ts new file mode 100644 index 0000000..a2062a2 --- /dev/null +++ b/dalim-app/src/lib/dalim-service.ts @@ -0,0 +1,351 @@ +// Unified service layer — returns mock or real data based on DALIM_MOCK_MODE + +import { isMockMode, dalimQuery } from "./dalim-client"; +import { QUERIES } from "./dalim-queries"; +import { + mockProjects, + mockFolders, + mockAssets, + mockCollections, + mockWorkflows, + mockApprovals, + mockProcesses, + mockChannels, + mockDistributionJobs, + folderProjectMap, +} from "./mock/data"; +import type { + Project, + Folder, + Asset, + Collection, + Workflow, + Approval, + ProcessMonitorEntry, + DistributionChannel, + DistributionJob, + PagingResponse, + SearchResponse, +} from "./dalim-types"; + +// === Projects === + +export async function getProjects( + limit = 20, + cursor?: string +): Promise> { + if (isMockMode()) { + return { + items: mockProjects, + cursor: null, + totalCount: mockProjects.length, + }; + } + const data = await dalimQuery<{ projects: PagingResponse }>( + QUERIES.projects, + { limit, cursor } + ); + return data.projects; +} + +export async function getProjectById(id: string): Promise { + if (isMockMode()) { + return mockProjects.find((p) => p.id === id) ?? null; + } + const data = await dalimQuery<{ projectById: Project[] }>( + QUERIES.projectById, + { id: [id] } + ); + return data.projectById?.[0] ?? null; +} + +// === Folders === + +export async function getFolders( + limit = 20, + cursor?: string +): Promise> { + if (isMockMode()) { + return { + items: mockFolders, + cursor: null, + totalCount: mockFolders.length, + }; + } + const data = await dalimQuery<{ folders: PagingResponse }>( + QUERIES.folders, + { limit, cursor } + ); + return data.folders; +} + +// === Assets === + +export async function getAssets( + limit = 24, + cursor?: string, + filter?: Record +): Promise> { + if (isMockMode()) { + return { + items: mockAssets, + cursor: null, + totalCount: mockAssets.length, + }; + } + const data = await dalimQuery<{ assets: PagingResponse }>( + QUERIES.assets, + { limit, cursor, filter } + ); + return data.assets; +} + +export async function getAssetById(id: string): Promise { + if (isMockMode()) { + return mockAssets.find((a) => a.id === id) ?? null; + } + const data = await dalimQuery<{ assetById: Asset[] }>( + QUERIES.assetById, + { id: [id] } + ); + return data.assetById?.[0] ?? null; +} + +// === Search === + +export async function searchAssets( + query: string, + facets: string[] = [], + limit = 24, + cursor?: string +): Promise { + if (isMockMode()) { + const filtered = mockAssets.filter( + (a) => + a.name.toLowerCase().includes(query.toLowerCase()) || + a.description?.toLowerCase().includes(query.toLowerCase()) + ); + return { + items: filtered.map((a) => ({ + id: a.id, + name: a.name, + description: a.description, + type: "Asset", + mimeType: a.mimeType, + creationDate: a.creationDate, + lastModificationDate: a.lastModificationDate, + })), + totalCount: filtered.length, + cursor: null, + facets: [ + { + name: "mimeType", + values: [ + { value: "application/pdf", count: 3 }, + { value: "image/tiff", count: 1 }, + { value: "application/illustrator", count: 1 }, + ], + }, + { + name: "status", + values: [ + { value: "APPROVED", count: 3 }, + { value: "IN_REVIEW", count: 2 }, + { value: "PENDING", count: 2 }, + ], + }, + ], + }; + } + const data = await dalimQuery<{ search: SearchResponse }>(QUERIES.search, { + filter: { query }, + facets, + limit, + cursor, + }); + return data.search; +} + +// === Workflows === + +export async function getWorkflows( + limit = 20, + cursor?: string +): Promise> { + if (isMockMode()) { + return { + items: mockWorkflows, + cursor: null, + totalCount: mockWorkflows.length, + }; + } + const data = await dalimQuery<{ workflows: PagingResponse }>( + QUERIES.workflows, + { limit, cursor } + ); + return data.workflows; +} + +// === Approvals === + +export async function getApprovals( + limit = 20, + cursor?: string +): Promise> { + if (isMockMode()) { + return { + items: mockApprovals, + cursor: null, + totalCount: mockApprovals.length, + }; + } + const data = await dalimQuery<{ approvals: PagingResponse }>( + QUERIES.approvals, + { limit, cursor } + ); + return data.approvals; +} + +// === Processes === + +export async function getProcesses( + limit = 20, + cursor?: string +): Promise> { + if (isMockMode()) { + return { + items: mockProcesses, + cursor: null, + totalCount: mockProcesses.length, + }; + } + const data = await dalimQuery<{ + processMonitoring: PagingResponse; + }>(QUERIES.processMonitoring, { limit, cursor }); + return data.processMonitoring; +} + +// === Collections === + +export async function getCollections( + limit = 20, + cursor?: string +): Promise> { + if (isMockMode()) { + return { + items: mockCollections, + cursor: null, + totalCount: mockCollections.length, + }; + } + const data = await dalimQuery<{ collections: PagingResponse }>( + QUERIES.collections, + { limit, cursor } + ); + return data.collections; +} + +// === Project-specific queries === + +export async function getFoldersByProject( + projectId: string +): Promise { + if (isMockMode()) { + const folderIds = Object.entries(folderProjectMap) + .filter(([, pId]) => pId === projectId) + .map(([fId]) => fId); + return mockFolders.filter((f) => folderIds.includes(f.id)); + } + // Real API: use folders query with project filter + const data = await dalimQuery<{ folders: PagingResponse }>( + QUERIES.folders, + { filter: { projectId }, limit: 100 } + ); + return data.folders.items; +} + +export async function getAssetsByProject( + projectId: string, + folderId?: string, + limit = 24, + cursor?: string +): Promise> { + if (isMockMode()) { + let filtered = mockAssets.filter((a) => a.project?.id === projectId); + if (folderId) { + filtered = filtered.filter((a) => a.folder?.id === folderId); + } + return { items: filtered, cursor: null, totalCount: filtered.length }; + } + const filter: Record = { projectId }; + if (folderId) filter.folderId = folderId; + const data = await dalimQuery<{ assets: PagingResponse }>( + QUERIES.assets, + { filter, limit, cursor } + ); + return data.assets; +} + +export async function getAssetsByFolder( + folderId: string, + limit = 24, + cursor?: string +): Promise> { + if (isMockMode()) { + const filtered = mockAssets.filter((a) => a.folder?.id === folderId); + return { items: filtered, cursor: null, totalCount: filtered.length }; + } + const data = await dalimQuery<{ assets: PagingResponse }>( + QUERIES.assets, + { filter: { folderId }, limit, cursor } + ); + return data.assets; +} + +export async function getFolderById(id: string): Promise { + if (isMockMode()) { + return mockFolders.find((f) => f.id === id) ?? null; + } + const data = await dalimQuery<{ folderById: Folder[] }>( + QUERIES.folderById, + { id: [id] } + ); + return data.folderById?.[0] ?? null; +} + +// === Distribution Channels === + +export async function getChannels(): Promise { + // Mock-only for now — real API would use a custom integration layer + return mockChannels; +} + +export async function getDistributionJobs( + assetId?: string +): Promise { + let jobs = mockDistributionJobs; + if (assetId) { + jobs = jobs.filter((j) => j.assetId === assetId); + } + return jobs; +} + +export async function sendToChannel( + assetId: string, + channelId: string +): Promise { + const asset = mockAssets.find((a) => a.id === assetId); + const channel = mockChannels.find((c) => c.id === channelId); + const job: DistributionJob = { + id: `DJ${Date.now()}`, + assetId, + assetName: asset?.name ?? assetId, + channelId, + channelName: channel?.name ?? channelId, + status: "queued", + initiatedBy: "dporter", + initiatedAt: new Date().toISOString(), + }; + mockDistributionJobs.push(job); + return job; +} diff --git a/dalim-app/src/lib/dalim-types.ts b/dalim-app/src/lib/dalim-types.ts new file mode 100644 index 0000000..c672fc6 --- /dev/null +++ b/dalim-app/src/lib/dalim-types.ts @@ -0,0 +1,148 @@ +// TypeScript types for Dalim ES FUSiON API responses + +export interface PagingResponse { + items: T[]; + cursor: string | null; + totalCount: number; +} + +export interface FacetValue { + value: string; + count: number; +} + +export interface Facet { + name: string; + values: FacetValue[]; +} + +// === Core Entities === + +export interface Project { + id: string; + name: string; + description?: string; + status?: string; + creationDate?: string; + lastModificationDate?: string; + customer?: { id: string; name: string }; + metadatas?: MetadataValue[]; +} + +export interface Folder { + id: string; + name: string; + path?: string; + creationDate?: string; + volume?: { id: string; name: string }; +} + +export interface Asset { + id: string; + name: string; + description?: string; + creationDate?: string; + lastModificationDate?: string; + currentRevision?: number; + mimeType?: string; + fileSize?: number; + status?: string; + folder?: { id: string; name: string; path?: string }; + project?: { id: string; name: string }; + metadatas?: MetadataValue[]; +} + +export interface MetadataValue { + name: string; + value: string; +} + +export interface Collection { + id: string; + name: string; + description?: string; + creationDate?: string; +} + +// === Workflow & Approval === + +export interface Workflow { + id: string; + name: string; + description?: string; + revision?: number; +} + +export interface Approval { + id: string; + status: string; + entity: { id: string; name: string; type: string }; + approver: { id: string; login: string; firstName: string; lastName: string }; + level: number; +} + +export interface ProcessMonitorEntry { + id: string; + name: string; + status: string; + progress?: number; + startDate?: string; + endDate?: string; + entity?: { id: string; name: string; type: string }; +} + +// === Search === + +export interface SearchResult { + id: string; + name: string; + description?: string; + type: string; + mimeType?: string; + creationDate?: string; + lastModificationDate?: string; +} + +export interface SearchResponse { + items: SearchResult[]; + totalCount: number; + cursor: string | null; + facets: Facet[]; +} + +// === Distribution / Send-to Destinations === + +export interface DistributionChannel { + id: string; + name: string; + category: "pim" | "social" | "web" | "instore" | "print" | "advertising" | "google"; + icon: string; + description: string; + status: "connected" | "available" | "coming_soon"; +} + +export interface DistributionJob { + id: string; + assetId: string; + assetName: string; + channelId: string; + channelName: string; + status: "queued" | "processing" | "completed" | "failed"; + initiatedBy: string; + initiatedAt: string; + completedAt?: string; +} + +// === Auth === + +export interface WhoAmI { + login: string; + firstName: string; + lastName: string; + email: string; +} + +export interface ServerInfo { + version: string; + build: string; +} diff --git a/dalim-app/src/lib/mock/data.ts b/dalim-app/src/lib/mock/data.ts new file mode 100644 index 0000000..e710fd1 --- /dev/null +++ b/dalim-app/src/lib/mock/data.ts @@ -0,0 +1,305 @@ +import type { + Project, + Folder, + Asset, + Collection, + Workflow, + Approval, + ProcessMonitorEntry, + SearchResult, + DistributionChannel, + DistributionJob, +} from "@/lib/dalim-types"; + +// === Mock Projects === +export const mockProjects: Project[] = [ + { + id: "P001", + name: "Spring Campaign 2024", + description: "Marketing assets for spring product launch", + status: "ACTIVE", + creationDate: "2024-01-15T10:00:00Z", + lastModificationDate: "2024-03-20T14:30:00Z", + customer: { id: "C001", name: "Acme Corp" }, + }, + { + id: "P002", + name: "Product Packaging v3", + description: "Updated packaging design files for Q2 release", + status: "ACTIVE", + creationDate: "2024-02-01T09:00:00Z", + lastModificationDate: "2024-03-18T11:00:00Z", + customer: { id: "C001", name: "Acme Corp" }, + }, + { + id: "P003", + name: "Annual Report 2023", + description: "Corporate annual report design and print files", + status: "COMPLETED", + creationDate: "2023-11-01T08:00:00Z", + lastModificationDate: "2024-01-10T16:00:00Z", + customer: { id: "C002", name: "Global Industries" }, + }, + { + id: "P004", + name: "Website Rebrand", + description: "New brand identity assets for website refresh", + status: "ACTIVE", + creationDate: "2024-03-01T10:00:00Z", + lastModificationDate: "2024-03-25T09:00:00Z", + customer: { id: "C003", name: "TechStart Inc" }, + }, + { + id: "P005", + name: "Trade Show Materials", + description: "Booth graphics, brochures, and digital displays", + status: "IN_REVIEW", + creationDate: "2024-02-15T14:00:00Z", + lastModificationDate: "2024-03-22T10:00:00Z", + customer: { id: "C002", name: "Global Industries" }, + }, +]; + +// === Folder → Project mapping === +export const folderProjectMap: Record = { + F001: "P001", F002: "P001", F003: "P001", + F004: "P002", F005: "P002", + F006: "P003", F007: "P004", F008: "P004", + F009: "P005", F010: "P005", +}; + +// === Mock Folders === +export const mockFolders: Folder[] = [ + { id: "F001", name: "Print Ready", path: "/Spring Campaign 2024/Print Ready", creationDate: "2024-01-15T10:00:00Z" }, + { id: "F002", name: "Digital", path: "/Spring Campaign 2024/Digital", creationDate: "2024-01-15T10:00:00Z" }, + { id: "F003", name: "Photography", path: "/Spring Campaign 2024/Photography", creationDate: "2024-01-20T09:00:00Z" }, + { id: "F004", name: "Artwork", path: "/Product Packaging v3/Artwork", creationDate: "2024-02-01T09:00:00Z" }, + { id: "F005", name: "Proofs", path: "/Product Packaging v3/Proofs", creationDate: "2024-02-05T11:00:00Z" }, + { id: "F006", name: "Final Files", path: "/Annual Report 2023/Final Files", creationDate: "2023-12-01T09:00:00Z" }, + { id: "F007", name: "Logos", path: "/Website Rebrand/Logos", creationDate: "2024-03-01T10:00:00Z" }, + { id: "F008", name: "Style Guide", path: "/Website Rebrand/Style Guide", creationDate: "2024-03-02T10:00:00Z" }, + { id: "F009", name: "Booth Graphics", path: "/Trade Show Materials/Booth Graphics", creationDate: "2024-02-15T14:00:00Z" }, + { id: "F010", name: "Brochures", path: "/Trade Show Materials/Brochures", creationDate: "2024-02-15T14:00:00Z" }, +]; + +// === Mock Assets === +export const mockAssets: Asset[] = [ + { + id: "A001", + name: "hero-banner-spring-v3.pdf", + description: "Main hero banner for spring campaign landing page", + creationDate: "2024-01-20T10:00:00Z", + lastModificationDate: "2024-03-15T14:30:00Z", + currentRevision: 3, + mimeType: "application/pdf", + fileSize: 4500000, + status: "APPROVED", + folder: { id: "F001", name: "Print Ready", path: "/Spring Campaign 2024/Print Ready" }, + project: { id: "P001", name: "Spring Campaign 2024" }, + }, + { + id: "A002", + name: "product-shot-01.tif", + description: "Main product photography - front angle", + creationDate: "2024-02-10T09:00:00Z", + lastModificationDate: "2024-03-10T11:00:00Z", + currentRevision: 1, + mimeType: "image/tiff", + fileSize: 85000000, + status: "APPROVED", + folder: { id: "F003", name: "Photography" }, + project: { id: "P001", name: "Spring Campaign 2024" }, + }, + { + id: "A003", + name: "packaging-front-v2.ai", + description: "Front panel design for primary packaging", + creationDate: "2024-02-05T14:00:00Z", + lastModificationDate: "2024-03-20T16:00:00Z", + currentRevision: 2, + mimeType: "application/illustrator", + fileSize: 12000000, + status: "IN_REVIEW", + folder: { id: "F004", name: "Artwork" }, + project: { id: "P002", name: "Product Packaging v3" }, + }, + { + id: "A004", + name: "social-media-kit.zip", + description: "Complete social media asset package - all sizes", + creationDate: "2024-03-01T10:00:00Z", + lastModificationDate: "2024-03-18T15:00:00Z", + currentRevision: 1, + mimeType: "application/zip", + fileSize: 25000000, + status: "PENDING", + folder: { id: "F002", name: "Digital" }, + project: { id: "P001", name: "Spring Campaign 2024" }, + }, + { + id: "A005", + name: "annual-report-final.indd", + description: "Final InDesign file for annual report", + creationDate: "2023-12-15T09:00:00Z", + lastModificationDate: "2024-01-08T14:00:00Z", + currentRevision: 5, + mimeType: "application/x-indesign", + fileSize: 150000000, + status: "APPROVED", + folder: { id: "F001", name: "Print Ready" }, + project: { id: "P003", name: "Annual Report 2023" }, + }, + { + id: "A006", + name: "booth-backdrop-3m.pdf", + description: "3-meter booth backdrop for trade show", + creationDate: "2024-02-20T11:00:00Z", + lastModificationDate: "2024-03-22T09:00:00Z", + currentRevision: 2, + mimeType: "application/pdf", + fileSize: 35000000, + status: "IN_REVIEW", + folder: { id: "F005", name: "Proofs" }, + project: { id: "P005", name: "Trade Show Materials" }, + }, + { + id: "A007", + name: "logo-rebrand-primary.svg", + description: "New primary logo - full color", + creationDate: "2024-03-05T10:00:00Z", + lastModificationDate: "2024-03-25T08:00:00Z", + currentRevision: 4, + mimeType: "image/svg+xml", + fileSize: 45000, + status: "APPROVED", + folder: { id: "F002", name: "Digital" }, + project: { id: "P004", name: "Website Rebrand" }, + }, + { + id: "A008", + name: "brochure-trifold-v1.pdf", + description: "Tri-fold brochure for trade show distribution", + creationDate: "2024-03-10T14:00:00Z", + lastModificationDate: "2024-03-21T16:00:00Z", + currentRevision: 1, + mimeType: "application/pdf", + fileSize: 8500000, + status: "PENDING", + folder: { id: "F005", name: "Proofs" }, + project: { id: "P005", name: "Trade Show Materials" }, + }, +]; + +// === Mock Collections === +export const mockCollections: Collection[] = [ + { id: "COL001", name: "Approved for Print", description: "All assets approved for print production", creationDate: "2024-01-01T00:00:00Z" }, + { id: "COL002", name: "Brand Guidelines", description: "Core brand identity assets and guidelines", creationDate: "2024-01-01T00:00:00Z" }, + { id: "COL003", name: "Q2 Deliverables", description: "All deliverables due in Q2 2024", creationDate: "2024-03-01T00:00:00Z" }, +]; + +// === Mock Workflows === +export const mockWorkflows: Workflow[] = [ + { id: "W001", name: "Print Approval", description: "Standard print approval workflow — preflight, color check, sign-off", revision: 1 }, + { id: "W002", name: "Digital Review", description: "Digital asset review and approval for web & app", revision: 2 }, + { id: "W003", name: "Packaging QC", description: "Quality control for packaging files — dielines, barcode verification", revision: 1 }, + { id: "W004", name: "Send to Social Platforms", description: "Distribute approved assets to Meta, TikTok, LinkedIn", revision: 3 }, + { id: "W005", name: "Send to PIM", description: "Sync product images and data sheets to Stibo STEP", revision: 2 }, + { id: "W006", name: "Send to Google Platforms", description: "Push creatives to Google Ads, Performance Max, CM360, YouTube", revision: 1 }, + { id: "W007", name: "In-Store Distribution", description: "Distribute to ESL, in-store TV, POP displays, and digital screens", revision: 1 }, + { id: "W008", name: "Send to E-Commerce", description: "Publish product assets to website, mobile app, and PWA storefront", revision: 4 }, + { id: "W009", name: "Print Fulfillment", description: "Send to print production — flyers, catalogues, large-format", revision: 2 }, + { id: "W010", name: "Programmatic Distribution", description: "Push ad creatives to DV360 and Trade Desk campaigns", revision: 1 }, +]; + +// === Mock Approvals === +export const mockApprovals: Approval[] = [ + { + id: "AP001", + status: "PENDING", + entity: { id: "A003", name: "packaging-front-v2.ai", type: "Asset" }, + approver: { id: "U001", login: "jsmith", firstName: "John", lastName: "Smith" }, + level: 1, + }, + { + id: "AP002", + status: "PENDING", + entity: { id: "A006", name: "booth-backdrop-3m.pdf", type: "Asset" }, + approver: { id: "U002", login: "mwilson", firstName: "Maria", lastName: "Wilson" }, + level: 1, + }, + { + id: "AP003", + status: "APPROVED", + entity: { id: "A001", name: "hero-banner-spring-v3.pdf", type: "Asset" }, + approver: { id: "U001", login: "jsmith", firstName: "John", lastName: "Smith" }, + level: 2, + }, + { + id: "AP004", + status: "PENDING", + entity: { id: "A008", name: "brochure-trifold-v1.pdf", type: "Asset" }, + approver: { id: "U003", login: "dporter", firstName: "Dave", lastName: "Porter" }, + level: 1, + }, +]; + +// === Mock Distribution Channels (from MMS Tech Architecture) === +export const mockChannels: DistributionChannel[] = [ + { id: "CH01", name: "PIM (Stibo STEP)", category: "pim", icon: "database", description: "Product Information Management — sync product data & assets", status: "connected" }, + { id: "CH02", name: "Website (Unified Platform)", category: "web", icon: "globe", description: "MediaMarkt.es web storefront", status: "connected" }, + { id: "CH03", name: "Mobile App", category: "web", icon: "smartphone", description: "MediaMarkt mobile app (Unified Platform)", status: "connected" }, + { id: "CH04", name: "E-Commerce (Shop/PWA)", category: "web", icon: "shopping-cart", description: "Consumer web shop & progressive web app", status: "connected" }, + { id: "CH05", name: "Meta (Facebook & Instagram)", category: "social", icon: "facebook", description: "Publish to Facebook & Instagram feeds, stories, and ads", status: "connected" }, + { id: "CH06", name: "TikTok", category: "social", icon: "video", description: "Push creative assets to TikTok Ads Manager", status: "connected" }, + { id: "CH07", name: "LinkedIn", category: "social", icon: "linkedin", description: "Distribute to LinkedIn company page & ad campaigns", status: "available" }, + { id: "CH08", name: "Google Ads & Performance Max", category: "google", icon: "google", description: "Google Ads, Performance Max, CM360, YouTube", status: "connected" }, + { id: "CH09", name: "YouTube", category: "google", icon: "youtube", description: "Upload video assets to YouTube channels", status: "available" }, + { id: "CH10", name: "Electronic Shelf Labels (Pricer)", category: "instore", icon: "tag", description: "Push pricing & product images to in-store ESL", status: "connected" }, + { id: "CH11", name: "In-Store TV", category: "instore", icon: "monitor", description: "Digital signage content for in-store TV screens", status: "connected" }, + { id: "CH12", name: "In-Store Screens (Digital)", category: "instore", icon: "layout", description: "Interactive in-store display screens", status: "available" }, + { id: "CH13", name: "In-Store POP", category: "instore", icon: "printer", description: "Point-of-purchase materials & signage", status: "available" }, + { id: "CH14", name: "Print Fulfillment", category: "print", icon: "printer", description: "Flyers, catalogues, and print production", status: "connected" }, + { id: "CH15", name: "Customer Comms Hub", category: "advertising", icon: "mail", description: "Email, SMS, and push notifications (Unified Platform)", status: "connected" }, + { id: "CH16", name: "Programmatic (DV360 / Trade Desk)", category: "advertising", icon: "target", description: "Programmatic display & video advertising", status: "connected" }, + { id: "CH17", name: "Retail Media & Marketplace", category: "advertising", icon: "store", description: "Retail media network and marketplace listings", status: "coming_soon" }, +]; + +// === Mock Distribution Jobs === +export const mockDistributionJobs: DistributionJob[] = [ + { id: "DJ01", assetId: "A001", assetName: "hero-banner-spring-v3.pdf", channelId: "CH02", channelName: "Website (Unified Platform)", status: "completed", initiatedBy: "jsmith", initiatedAt: "2024-03-20T14:00:00Z", completedAt: "2024-03-20T14:02:30Z" }, + { id: "DJ02", assetId: "A001", assetName: "hero-banner-spring-v3.pdf", channelId: "CH05", channelName: "Meta (Facebook & Instagram)", status: "completed", initiatedBy: "jsmith", initiatedAt: "2024-03-20T14:05:00Z", completedAt: "2024-03-20T14:06:15Z" }, + { id: "DJ03", assetId: "A007", assetName: "logo-rebrand-primary.svg", channelId: "CH01", channelName: "PIM (Stibo STEP)", status: "processing", initiatedBy: "mwilson", initiatedAt: "2024-03-25T09:00:00Z" }, + { id: "DJ04", assetId: "A003", assetName: "packaging-front-v2.ai", channelId: "CH14", channelName: "Print Fulfillment", status: "queued", initiatedBy: "dporter", initiatedAt: "2024-03-22T10:30:00Z" }, + { id: "DJ05", assetId: "A004", assetName: "social-media-kit.zip", channelId: "CH06", channelName: "TikTok", status: "completed", initiatedBy: "mwilson", initiatedAt: "2024-03-18T16:00:00Z", completedAt: "2024-03-18T16:01:45Z" }, + { id: "DJ06", assetId: "A006", assetName: "booth-backdrop-3m.pdf", channelId: "CH11", channelName: "In-Store TV", status: "failed", initiatedBy: "jsmith", initiatedAt: "2024-03-22T11:00:00Z" }, + { id: "DJ07", assetId: "A007", assetName: "logo-rebrand-primary.svg", channelId: "CH08", channelName: "Google Ads & Performance Max", status: "processing", initiatedBy: "mwilson", initiatedAt: "2024-03-25T09:05:00Z" }, + { id: "DJ08", assetId: "A002", assetName: "product-shot-01.tif", channelId: "CH10", channelName: "Electronic Shelf Labels (Pricer)", status: "completed", initiatedBy: "dporter", initiatedAt: "2024-03-15T10:00:00Z", completedAt: "2024-03-15T10:00:45Z" }, +]; + +// === Mock Processes === +export const mockProcesses: ProcessMonitorEntry[] = [ + { + id: "PR001", + name: "Preflight Check", + status: "COMPLETED", + progress: 100, + startDate: "2024-03-20T14:00:00Z", + endDate: "2024-03-20T14:02:00Z", + entity: { id: "A001", name: "hero-banner-spring-v3.pdf", type: "Asset" }, + }, + { + id: "PR002", + name: "Color Conversion", + status: "IN_PROGRESS", + progress: 65, + startDate: "2024-03-22T10:00:00Z", + entity: { id: "A003", name: "packaging-front-v2.ai", type: "Asset" }, + }, + { + id: "PR003", + name: "PDF Export", + status: "QUEUED", + progress: 0, + entity: { id: "A006", name: "booth-backdrop-3m.pdf", type: "Asset" }, + }, +]; diff --git a/dalim-app/src/lib/utils.ts b/dalim-app/src/lib/utils.ts new file mode 100644 index 0000000..bd0c391 --- /dev/null +++ b/dalim-app/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/dalim-app/tsconfig.json b/dalim-app/tsconfig.json new file mode 100644 index 0000000..cf9c65d --- /dev/null +++ b/dalim-app/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + "**/*.mts" + ], + "exclude": ["node_modules"] +} diff --git a/docs/api_parsed.json b/docs/api_parsed.json new file mode 100644 index 0000000..37524eb --- /dev/null +++ b/docs/api_parsed.json @@ -0,0 +1,10815 @@ +{ + "operations": [ + { + "name": "activities", + "type": "query", + "description": "List of topLevel activities", + "response_type": "[Activity!]", + "arguments": [ + { + "name": "type", + "type": "ActivityType", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"name\", direction : ASC}", + "required": false + } + ], + "example_query": "query activities( $type: ActivityType, $orderBy: iOrderBy ) { activities( type: $type, orderBy: $orderBy ) { id name bypassed icon color category } }", + "example_variables": "{\"type\": \"InputFile\", \"orderBy\": {\"property\": \"name\", \"direction\": \"ASC\"}}", + "example_response": "{ \"data\": { \"activities\": [ { \"id\": 4, \"name\": \"abc123\", \"bypassed\": false, \"icon\": \"4\", \"color\": \"abc123\", \"category\": \"xyz789\" } ] } }" + }, + { + "name": "activityById", + "type": "query", + "description": "Activity by Id", + "response_type": "[Activity!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query activityById($id: [ID!]!) { activityById(id: $id) { id name bypassed icon color category } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"activityById\": [ { \"id\": \"4\", \"name\": \"abc123\", \"bypassed\": false, \"icon\": 4, \"color\": \"xyz789\", \"category\": \"xyz789\" } ] } }" + }, + { + "name": "activityIconById", + "type": "query", + "description": "", + "response_type": "[ActivityIcon!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query activityIconById($id: [ID!]!) { activityIconById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationUser { ...UserFragment } creationDate } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"activityIconById\": [ { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\" } ] } }" + }, + { + "name": "activityIcons", + "type": "query", + "description": "Retrieve Activity Icon", + "response_type": "an ActivityIconPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query activityIcons( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { activityIcons( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ActivityIconFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"activityIcons\": { \"lowerCursor\": 4, \"upperCursor\": \"4\", \"hasMoreItems\": true, \"objectList\": [ActivityIcon] } } }" + }, + { + "name": "activityPresets", + "type": "query", + "description": "List of activity presets", + "response_type": "[Activity!]", + "arguments": [ + { + "name": "type", + "type": "ActivityType", + "description": "", + "required": false + }, + { + "name": "name", + "type": "String", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"name\", direction : ASC}", + "required": false + } + ], + "example_query": "query activityPresets( $type: ActivityType, $name: String, $orderBy: iOrderBy ) { activityPresets( type: $type, name: $name, orderBy: $orderBy ) { id name bypassed icon color category } }", + "example_variables": "{ \"type\": \"InputFile\", \"name\": \"abc123\", \"orderBy\": {\"property\": \"name\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"activityPresets\": [ { \"id\": 4, \"name\": \"xyz789\", \"bypassed\": false, \"icon\": 4, \"color\": \"xyz789\", \"category\": \"xyz789\" } ] } }" + }, + { + "name": "activityVariables", + "type": "query", + "description": "Retrieve variables names depending on WorkflowableTypeName", + "response_type": "[String]", + "arguments": [ + { + "name": "scope", + "type": "WorkflowableTypeName!", + "description": "", + "required": true + } + ], + "example_query": "query activityVariables($scope: WorkflowableTypeName!) { activityVariables(scope: $scope) }", + "example_variables": "{\"scope\": \"Folder\"}", + "example_response": "{\"data\": {\"activityVariables\": [\"abc123\"]}}" + }, + { + "name": "annotationStatusById", + "type": "query", + "description": "", + "response_type": "[AnnotationStatus!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query annotationStatusById($id: [ID!]!) { annotationStatusById(id: $id) { id lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } color icon isActive order translations } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"annotationStatusById\": [ { \"id\": \"4\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"color\": \"xyz789\", \"icon\": \"xyz789\", \"isActive\": true, \"order\": 123, \"translations\": {} } ] } }" + }, + { + "name": "annotationStatuses", + "type": "query", + "description": "", + "response_type": "[AnnotationStatus!]", + "arguments": [ + { + "name": "onlyActive", + "type": "Boolean", + "description": "Default = true", + "required": false + } + ], + "example_query": "query annotationStatuses($onlyActive: Boolean) { annotationStatuses(onlyActive: $onlyActive) { id lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } color icon isActive order translations } }", + "example_variables": "{\"onlyActive\": true}", + "example_response": "{ \"data\": { \"annotationStatuses\": [ { \"id\": 4, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"color\": \"xyz789\", \"icon\": \"abc123\", \"isActive\": false, \"order\": 123, \"translations\": {} } ] } }" + }, + { + "name": "anyCollections", + "type": "query", + "description": "Returns the paginated list of any top-level collections (Smart Collections and Collections).", + "response_type": "an AnyCollectionPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query anyCollections( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { anyCollections( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...AnyCollectionFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"anyCollections\": { \"lowerCursor\": \"4\", \"upperCursor\": \"4\", \"hasMoreItems\": false, \"objectList\": [AnyCollection] } } }" + }, + { + "name": "approvals", + "type": "query", + "description": "Retrieve objects to approve by the current logged user", + "response_type": "an ApprovalPagingResponse!", + "arguments": [ + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + }, + { + "name": "exclude", + "type": "[ApprovableTypeName!]", + "description": "", + "required": true + } + ], + "example_query": "query approvals( $limit: Int, $cursor: ID, $orderBy: iOrderBy, $exclude: [ApprovableTypeName!] ) { approvals( limit: $limit, cursor: $cursor, orderBy: $orderBy, exclude: $exclude ) { lowerCursor upperCursor hasMoreItems objectList { ...WithApprovalFragment } } }", + "example_variables": "{ \"limit\": 123, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"}, \"exclude\": [\"Project\"] }", + "example_response": "{ \"data\": { \"approvals\": { \"lowerCursor\": \"4\", \"upperCursor\": 4, \"hasMoreItems\": false, \"objectList\": [WithApproval] } } }" + }, + { + "name": "approvalsByUser", + "type": "query", + "description": "Retrieve objects to approve for a specific user", + "response_type": "an ApprovalPagingResponse!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + }, + { + "name": "exclude", + "type": "[ApprovableTypeName!]", + "description": "", + "required": true + } + ], + "example_query": "query approvalsByUser( $id: ID!, $limit: Int, $cursor: ID, $orderBy: iOrderBy, $exclude: [ApprovableTypeName!] ) { approvalsByUser( id: $id, limit: $limit, cursor: $cursor, orderBy: $orderBy, exclude: $exclude ) { lowerCursor upperCursor hasMoreItems objectList { ...WithApprovalFragment } } }", + "example_variables": "{ \"id\": \"4\", \"limit\": 987, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"}, \"exclude\": [\"Project\"] }", + "example_response": "{ \"data\": { \"approvalsByUser\": { \"lowerCursor\": 4, \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [WithApproval] } } }" + }, + { + "name": "assetById", + "type": "query", + "description": "Retrieve Assets by ID or [ID]", + "response_type": "[Asset!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query assetById($id: [ID!]!) { assetById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"assetById\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"approvalSummary\": \"NONE\", \"approvalStatus\": [ApprovalActivityStatus], \"approvals\": [ApprovalCycle], \"workflowName\": \"abc123\", \"isAlias\": false, \"processes\": [Process], \"uuid\": \"abc123\", \"priority\": 987, \"isCheckedOut\": false, \"checkedOutBy\": User, \"privateWorkingRevision\": 987, \"isArchived\": true, \"archiveId\": 4, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"project\": Project, \"parents\": [Container], \"numberOfRevisions\": 987, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"medias\": [Media], \"notes\": [Note], \"relationFrom\": [Relation], \"relationTo\": [Relation], \"accessControls\": {} } ] } }" + }, + { + "name": "assets", + "type": "query", + "description": "Retrieve Assets by filter", + "response_type": "an AssetPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query assets( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { assets( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...AssetFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 987, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"assets\": { \"lowerCursor\": \"4\", \"upperCursor\": \"4\", \"hasMoreItems\": false, \"objectList\": [Asset] } } }" + }, + { + "name": "authentications", + "type": "query", + "description": "", + "response_type": "[Authentication!]!", + "arguments": [ + { + "name": "id", + "type": "ID", + "description": "", + "required": false + } + ], + "example_query": "query authentications($id: ID) { authentications(id: $id) { id type name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } authorizationURL tokenURL clientId isActive samlSetup { ...SAMLSetupFragment } } }", + "example_variables": "{\"id\": \"4\"}", + "example_response": "{ \"data\": { \"authentications\": [ { \"id\": \"4\", \"type\": \"INTERNAL\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"authorizationURL\": \"http://www.test.com/\", \"tokenURL\": \"http://www.test.com/\", \"clientId\": \"4\", \"isActive\": true, \"samlSetup\": SAMLSetup } ] } }" + }, + { + "name": "checkVolumeConnectivity", + "type": "query", + "description": "check connectivity of a volume to it's storage location or server", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "query checkVolumeConnectivity($id: ID!) { checkVolumeConnectivity(id: $id) }", + "example_variables": "{\"id\": 4}", + "example_response": "{\"data\": {\"checkVolumeConnectivity\": true}}" + }, + { + "name": "clientApplications", + "type": "query", + "description": "", + "response_type": "[ClientApplication!]!", + "arguments": [ + { + "name": "id", + "type": "ID", + "description": "", + "required": false + } + ], + "example_query": "query clientApplications($id: ID) { clientApplications(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } allowIntrospection maxQueryDepth redirectURL secret schema defaultTokenDuration algorithm { ...JWTAlgorithmFragment } } }", + "example_variables": "{\"id\": \"4\"}", + "example_response": "{ \"data\": { \"clientApplications\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"allowIntrospection\": false, \"maxQueryDepth\": 123, \"redirectURL\": \"http://www.test.com/\", \"secret\": \"abc123\", \"schema\": [\"ADMIN\"], \"defaultTokenDuration\": {}, \"algorithm\": JWTAlgorithm } ] } }" + }, + { + "name": "closeDialogueConnection", + "type": "query", + "description": "Close a Dialogue connection", + "response_type": "an ID!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "query closeDialogueConnection($id: ID!) { closeDialogueConnection(id: $id) }", + "example_variables": "{\"id\": \"4\"}", + "example_response": "{\"data\": {\"closeDialogueConnection\": 4}}" + }, + { + "name": "collectionById", + "type": "query", + "description": "Retrieve Collections by ID or [ID]", + "response_type": "[Collection!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query collectionById($id: [ID!]!) { collectionById(id: $id) { id name description color lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } icon lName translations children { ...PagingResponseFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly accessControlList { ...AccessControlListFragment } path { ...CollectionFragment } parents { ...ContainerFragment } destination { ...EntityFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"collectionById\": [ { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"abc123\", \"color\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"icon\": 4, \"lName\": \"xyz789\", \"translations\": {}, \"children\": PagingResponse, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": false, \"accessControlList\": AccessControlList, \"path\": [Collection], \"parents\": [Container], \"destination\": Entity } ] } }" + }, + { + "name": "collections", + "type": "query", + "description": "Returns the paginated list of top-level collections.", + "response_type": "a CollectionPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query collections( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { collections( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...CollectionFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"collections\": { \"lowerCursor\": 4, \"upperCursor\": \"4\", \"hasMoreItems\": false, \"objectList\": [Collection] } } }" + }, + { + "name": "colorSpaceById", + "type": "query", + "description": "", + "response_type": "[ColorSpace!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query colorSpaceById($id: [ID!]!) { colorSpaceById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } parents { ...ContainerFragment } colorEngine blackPointCompensation mixedWorkingSpace { ...ICCDestinationSelectionFragment } mixedVectorInput { ...ICCSourceSelectionFragment } mixedRasterInput { ...ICCSourceSelectionFragment } rgbWorkingSpace { ...ICCDestinationSelectionFragment } cmykWorkingSpace { ...ICCDestinationSelectionFragment } grayWorkingSpace { ...ICCDestinationSelectionFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"colorSpaceById\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"parents\": [Container], \"colorEngine\": \"ADOBE_ACE\", \"blackPointCompensation\": false, \"mixedWorkingSpace\": ICCDestinationSelection, \"mixedVectorInput\": ICCSourceSelection, \"mixedRasterInput\": ICCSourceSelection, \"rgbWorkingSpace\": ICCDestinationSelection, \"cmykWorkingSpace\": ICCDestinationSelection, \"grayWorkingSpace\": ICCDestinationSelection } ] } }" + }, + { + "name": "colorSpaces", + "type": "query", + "description": "", + "response_type": "a ColorSpacePagingResponse!", + "arguments": [ + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"name\", direction : ASC}", + "required": false + } + ], + "example_query": "query colorSpaces( $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { colorSpaces( limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ColorSpaceFragment } } }", + "example_variables": "{ \"limit\": 987, \"cursor\": \"4\", \"orderBy\": {\"property\": \"name\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"colorSpaces\": { \"lowerCursor\": 4, \"upperCursor\": \"4\", \"hasMoreItems\": false, \"objectList\": [ColorSpace] } } }" + }, + { + "name": "customerById", + "type": "query", + "description": "Retrieve Customers by ID or [ID]", + "response_type": "[Customer!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query customerById($id: [ID!]!) { customerById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } sites defaultSite defaultProjectTemplate { ...ProjectTemplateFragment } projectTemplates { ...ProjectTemplateFragment } code phone phone2 www fax shippingAddress { ...AddressFragment } billingAddress { ...AddressFragment } organization { ...OrganizationFragment } children { ...PagingResponseFragment } emailTemplates { ...EmailTemplateFragment } notificationTemplates { ...NotificationTemplateFragment } securityConfiguration { ...SecurityConfigurationFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"customerById\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"sites\": [\"abc123\"], \"defaultSite\": \"xyz789\", \"defaultProjectTemplate\": ProjectTemplate, \"projectTemplates\": [ProjectTemplate], \"code\": \"xyz789\", \"phone\": \"abc123\", \"phone2\": \"abc123\", \"www\": \"xyz789\", \"fax\": \"abc123\", \"shippingAddress\": Address, \"billingAddress\": Address, \"organization\": Organization, \"children\": PagingResponse, \"emailTemplates\": [EmailTemplate], \"notificationTemplates\": [NotificationTemplate], \"securityConfiguration\": SecurityConfiguration, \"notifications\": [Notification] } ] } }" + }, + { + "name": "customers", + "type": "query", + "description": "Retrieve Customers by filter", + "response_type": "a CustomerPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query customers( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { customers( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...CustomerFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"customers\": { \"lowerCursor\": \"4\", \"upperCursor\": 4, \"hasMoreItems\": false, \"objectList\": [Customer] } } }" + }, + { + "name": "densitometer", + "type": "query", + "description": "Read the color value at a certain position", + "response_type": "a DensitometerValues", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "parameters", + "type": "iDensitometerParams!", + "description": "", + "required": true + } + ], + "example_query": "query densitometer( $id: ID!, $parameters: iDensitometerParams! ) { densitometer( id: $id, parameters: $parameters ) { rgb values { ...ColorValueFragment } } }", + "example_variables": "{ \"id\": \"4\", \"parameters\": iDensitometerParams }", + "example_response": "{ \"data\": { \"densitometer\": { \"rgb\": \"xyz789\", \"values\": [ColorValue] } } }" + }, + { + "name": "dialogueConnections", + "type": "query", + "description": "List open connections optionally to a single Asset with id/revision.", + "response_type": "[DialogueConnection!]", + "arguments": [ + { + "name": "id", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "revision", + "type": "Int", + "description": "Default = 0", + "required": false + }, + { + "name": "pageNumber", + "type": "Int", + "description": "Default = 1", + "required": false + } + ], + "example_query": "query dialogueConnections( $id: ID, $revision: Int, $pageNumber: Int ) { dialogueConnections( id: $id, revision: $revision, pageNumber: $pageNumber ) { id media { ...MediaFragment } pageNumber creationUser { ...UserFragment } host colorSettings { ...ColorSettingsFragment } } }", + "example_variables": "{\"id\": \"4\", \"revision\": 0, \"pageNumber\": 1}", + "example_response": "{ \"data\": { \"dialogueConnections\": [ { \"id\": \"4\", \"media\": Media, \"pageNumber\": 987, \"creationUser\": User, \"host\": \"abc123\", \"colorSettings\": ColorSettings } ] } }" + }, + { + "name": "downloadAsset", + "type": "query", + "description": "Stream an Asset", + "response_type": "a Stream", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "revision", + "type": "Int", + "description": "Default = 0", + "required": false + } + ], + "example_query": "query downloadAsset( $id: ID!, $revision: Int ) { downloadAsset( id: $id, revision: $revision ) }", + "example_variables": "{\"id\": \"4\", \"revision\": 0}", + "example_response": "{\"data\": {\"downloadAsset\": Stream}}" + }, + { + "name": "downloadAssetWithNotes", + "type": "query", + "description": "Download one Asset or a .zip of several Assets with notes translated to PDF annotations", + "response_type": "a Stream", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "contentDisposition", + "type": "ContentDisposition", + "description": "Default = ATTACHMENT", + "required": false + }, + { + "name": "display", + "type": "iDownloadDisplay", + "description": "", + "required": false + } + ], + "example_query": "query downloadAssetWithNotes( $id: [ID!]!, $contentDisposition: ContentDisposition, $display: iDownloadDisplay ) { downloadAssetWithNotes( id: $id, contentDisposition: $contentDisposition, display: $display ) }", + "example_variables": "{ \"id\": [\"4\"], \"contentDisposition\": \"ATTACHMENT\", \"display\": iDownloadDisplay }", + "example_response": "{\"data\": {\"downloadAssetWithNotes\": Stream}}" + }, + { + "name": "dumpText", + "type": "query", + "description": "Dump the text contained in the document", + "response_type": "[TextPage!]", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "query dumpText($id: ID!) { dumpText(id: $id) { box paragraphs { ...TextParagraphFragment } } }", + "example_variables": "{\"id\": 4}", + "example_response": "{ \"data\": { \"dumpText\": [ {\"box\": [123.45], \"paragraphs\": [TextParagraph]} ] } }" + }, + { + "name": "editIccContext", + "type": "query", + "description": "Setup ICC context", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "parameters", + "type": "iSimulationContext", + "description": "", + "required": false + } + ], + "example_query": "query editIccContext( $id: ID!, $parameters: iSimulationContext ) { editIccContext( id: $id, parameters: $parameters ) }", + "example_variables": "{\"id\": 4, \"parameters\": iSimulationContext}", + "example_response": "{\"data\": {\"editIccContext\": true}}" + }, + { + "name": "emailTemplateById", + "type": "query", + "description": "", + "response_type": "[EmailTemplate!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query emailTemplateById($id: [ID!]!) { emailTemplateById(id: $id) { id name description parentEntity { ...WithEmailTemplateFragment } emailParts attachPreview attachPreviewsIfMultipage attachCurrentFile attachHistoryReportAllRevisions attachHistoryReportCurrentRevision attachNoteReportAllRevisions attachNoteReportCurrentRevision attachPreflightReport lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"emailTemplateById\": [ { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"parentEntity\": WithEmailTemplate, \"emailParts\": {}, \"attachPreview\": true, \"attachPreviewsIfMultipage\": true, \"attachCurrentFile\": false, \"attachHistoryReportAllRevisions\": true, \"attachHistoryReportCurrentRevision\": false, \"attachNoteReportAllRevisions\": true, \"attachNoteReportCurrentRevision\": false, \"attachPreflightReport\": false, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User } ] } }" + }, + { + "name": "emailTemplates", + "type": "query", + "description": "Returns an EmailTemplatePagingResponse!", + "response_type": "an EmailTemplatePagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query emailTemplates( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { emailTemplates( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...EmailTemplateFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"emailTemplates\": { \"lowerCursor\": 4, \"upperCursor\": 4, \"hasMoreItems\": false, \"objectList\": [EmailTemplate] } } }" + }, + { + "name": "entityByPath", + "type": "query", + "description": "", + "response_type": "[EntityPath!]", + "arguments": [ + { + "name": "path", + "type": "[String!]!", + "description": "", + "required": true + }, + { + "name": "type", + "type": "FileableTypeName!", + "description": "", + "required": true + } + ], + "example_query": "query entityByPath( $path: [String!]!, $type: FileableTypeName! ) { entityByPath( path: $path, type: $type ) { entity { ...EntityFragment } path } }", + "example_variables": "{\"path\": [\"xyz789\"], \"type\": \"Folder\"}", + "example_response": "{ \"data\": { \"entityByPath\": [ { \"entity\": Entity, \"path\": \"xyz789\" } ] } }" + }, + { + "name": "exportData", + "type": "query", + "description": "**Export the given object(s) in an .es file", + "response_type": "a Stream", + "arguments": [ + { + "name": "toExport", + "type": "[iExport!]!", + "description": "", + "required": true + }, + { + "name": "name", + "type": "String", + "description": "", + "required": false + }, + { + "name": "category", + "type": "String", + "description": "", + "required": false + }, + { + "name": "comment", + "type": "String", + "description": "", + "required": false + } + ], + "example_query": "query exportData( $toExport: [iExport!]!, $name: String, $category: String, $comment: String ) { exportData( toExport: $toExport, name: $name, category: $category, comment: $comment ) }", + "example_variables": "{ \"toExport\": [iExport], \"name\": \"xyz789\", \"category\": \"xyz789\", \"comment\": \"abc123\" }", + "example_response": "{\"data\": {\"exportData\": Stream}}" + }, + { + "name": "folderById", + "type": "query", + "description": "Retrieve Folders by ID or [ID]. Use triggerMonitoring to override volume monitorOnBrowse setting, determining whether or not Folder contents should be updated based on disk content.", + "response_type": "[Folder!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "triggerMonitoring", + "type": "Boolean", + "description": "", + "required": false + } + ], + "example_query": "query folderById( $id: [ID!]!, $triggerMonitoring: Boolean ) { folderById( id: $id, triggerMonitoring: $triggerMonitoring ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly productionSettings { ...ProductionSettingsFragment } processes { ...ProcessFragment } accessControlList { ...AccessControlListFragment } children { ...PagingResponseFragment } project { ...ProjectFragment } parents { ...ContainerFragment } path { ...FolderFragment } color icon } }", + "example_variables": "{\"id\": [4], \"triggerMonitoring\": true}", + "example_response": "{ \"data\": { \"folderById\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": false, \"productionSettings\": ProductionSettings, \"processes\": [Process], \"accessControlList\": AccessControlList, \"children\": PagingResponse, \"project\": Project, \"parents\": [Container], \"path\": [Folder], \"color\": \"xyz789\", \"icon\": 4 } ] } }" + }, + { + "name": "folders", + "type": "query", + "description": "Returns the paginated list of top-level folders.Use triggerMonitoring to override volume monitorOnBrowse setting", + "response_type": "a FolderPagingResponse!", + "arguments": [ + { + "name": "triggerMonitoring", + "type": "Boolean", + "description": "", + "required": false + }, + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query folders( $triggerMonitoring: Boolean, $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { folders( triggerMonitoring: $triggerMonitoring, filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...FolderFragment } } }", + "example_variables": "{ \"triggerMonitoring\": false, \"filter\": iFilter, \"limit\": 987, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"folders\": { \"lowerCursor\": \"4\", \"upperCursor\": \"4\", \"hasMoreItems\": false, \"objectList\": [Folder] } } }" + }, + { + "name": "gamutCheck", + "type": "query", + "description": "Compute the area where the color are out of gamut according to the monitor or to a simulation profile of a portion of a document defined by parameters of input iGamutCheckParams The response is a png image (Warning it is not a JSON response)", + "response_type": "a Stream", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "parameters", + "type": "iGamutCheckParams!", + "description": "", + "required": true + } + ], + "example_query": "query gamutCheck( $id: ID!, $parameters: iGamutCheckParams! ) { gamutCheck( id: $id, parameters: $parameters ) }", + "example_variables": "{ \"id\": \"4\", \"parameters\": iGamutCheckParams }", + "example_response": "{\"data\": {\"gamutCheck\": Stream}}" + }, + { + "name": "gamutWarning", + "type": "query", + "description": "Return true if the document is viewed out of gamut", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "parameters", + "type": "iGamutWarningParams!", + "description": "", + "required": true + } + ], + "example_query": "query gamutWarning( $id: ID!, $parameters: iGamutWarningParams! ) { gamutWarning( id: $id, parameters: $parameters ) }", + "example_variables": "{ \"id\": \"4\", \"parameters\": iGamutWarningParams }", + "example_response": "{\"data\": {\"gamutWarning\": true}}" + }, + { + "name": "get2FAQRCode", + "type": "query", + "description": "Return the Authenticator QR code", + "response_type": "a Stream", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "id of the user", + "required": true + } + ], + "example_query": "query get2FAQRCode($id: ID!) { get2FAQRCode(id: $id) }", + "example_variables": "{\"id\": 4}", + "example_response": "{\"data\": {\"get2FAQRCode\": Stream}}" + }, + { + "name": "getCorsSetting", + "type": "query", + "description": "", + "response_type": "a CorsSetting!", + "arguments": [], + "example_query": "query getCorsSetting { getCorsSetting { enableCors allowedOrigins allowedMethods allowedHeaders exposedHeaders preflightMaxAge } }", + "example_variables": "", + "example_response": "{ \"data\": { \"getCorsSetting\": { \"enableCors\": true, \"allowedOrigins\": [\"xyz789\"], \"allowedMethods\": [\"xyz789\"], \"allowedHeaders\": [\"abc123\"], \"exposedHeaders\": [\"abc123\"], \"preflightMaxAge\": 123 } } }" + }, + { + "name": "getEventLogs", + "type": "query", + "description": "", + "response_type": "a LogResponse", + "arguments": [ + { + "name": "limit", + "type": "Int", + "description": "Default = 1000", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "filter", + "type": "iLogFilter", + "description": "", + "required": false + } + ], + "example_query": "query getEventLogs( $limit: Int, $cursor: ID, $filter: iLogFilter ) { getEventLogs( limit: $limit, cursor: $cursor, filter: $filter ) { upperCursor hasMoreItems objectList { ...EventLogFragment } } }", + "example_variables": "{ \"limit\": 1000, \"cursor\": \"4\", \"filter\": iLogFilter }", + "example_response": "{ \"data\": { \"getEventLogs\": { \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [EventLog] } } }" + }, + { + "name": "getFileContent", + "type": "query", + "description": "-------- Deprecated ---------", + "response_type": "a String", + "arguments": [ + { + "name": "from", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "path", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "query getFileContent( $from: String!, $path: String! ) { getFileContent( from: $from, path: $path ) }", + "example_variables": "{ \"from\": \"abc123\", \"path\": \"abc123\" }", + "example_response": "{\"data\": {\"getFileContent\": \"xyz789\"}}" + }, + { + "name": "getImportConflicts", + "type": "query", + "description": "** Retrieve the objects to import that conflicts with existing one for a given ImportedFile", + "response_type": "[ImportedInfo!]", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "query getImportConflicts($id: ID!) { getImportConflicts(id: $id) { name type translatedType userName } }", + "example_variables": "{\"id\": 4}", + "example_response": "{ \"data\": { \"getImportConflicts\": [ { \"name\": \"xyz789\", \"type\": \"xyz789\", \"translatedType\": \"abc123\", \"userName\": \"xyz789\" } ] } }" + }, + { + "name": "getImportInfo", + "type": "query", + "description": "** Retrieve the objects to import for a given ImportedFile", + "response_type": "[ImportedInfo!]", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "query getImportInfo($id: ID!) { getImportInfo(id: $id) { name type translatedType userName } }", + "example_variables": "{\"id\": \"4\"}", + "example_response": "{ \"data\": { \"getImportInfo\": [ { \"name\": \"xyz789\", \"type\": \"xyz789\", \"translatedType\": \"xyz789\", \"userName\": \"xyz789\" } ] } }" + }, + { + "name": "getLogLevel", + "type": "query", + "description": "Return the current log level", + "response_type": "a LogLevel!", + "arguments": [], + "example_query": "query getLogLevel { getLogLevel }", + "example_variables": "", + "example_response": "{\"data\": {\"getLogLevel\": \"ALL\"}}" + }, + { + "name": "getLogQueries", + "type": "query", + "description": "Return if the server logs queries", + "response_type": "a Boolean!", + "arguments": [], + "example_query": "query getLogQueries { getLogQueries }", + "example_variables": "", + "example_response": "{\"data\": {\"getLogQueries\": true}}" + }, + { + "name": "getMaxQueryComplexity", + "type": "query", + "description": "", + "response_type": "an Int!", + "arguments": [], + "example_query": "query getMaxQueryComplexity { getMaxQueryComplexity }", + "example_variables": "", + "example_response": "{\"data\": {\"getMaxQueryComplexity\": 123}}" + }, + { + "name": "getMaxQuerySize", + "type": "query", + "description": "", + "response_type": "an Int!", + "arguments": [], + "example_query": "query getMaxQuerySize { getMaxQuerySize }", + "example_variables": "", + "example_response": "{\"data\": {\"getMaxQuerySize\": 123}}" + }, + { + "name": "getMaxTopLevelFieldCount", + "type": "query", + "description": "", + "response_type": "an Int!", + "arguments": [], + "example_query": "query getMaxTopLevelFieldCount { getMaxTopLevelFieldCount }", + "example_variables": "", + "example_response": "{\"data\": {\"getMaxTopLevelFieldCount\": 123}}" + }, + { + "name": "getNotes", + "type": "query", + "description": "Returns [Note]!", + "response_type": "[Note]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "The id(s) of the objects : Asset, Project, Media", + "required": true + }, + { + "name": "noteIds", + "type": "[ID!]", + "description": "", + "required": true + } + ], + "example_query": "query getNotes( $id: [ID!]!, $noteIds: [ID!] ) { getNotes( id: $id, noteIds: $noteIds ) { id type objectOwnerId pageNumber lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } attachments { ...AttachmentFragment } checkable status { ...AnnotationStatusFragment } collapsed seenBy { ...UserFragment } replies { ...NoteReplyFragment } content originalContent stylizedContent positionX positionY positionZ anchorX anchorY anchorZ tx ty proofReadingMark { ...ProofReadingMarkFragment } path selectable startTime endTime } }", + "example_variables": "{ \"id\": [\"4\"], \"noteIds\": [\"4\"] }", + "example_response": "{ \"data\": { \"getNotes\": [ { \"id\": 4, \"type\": \"Note\", \"objectOwnerId\": 4, \"pageNumber\": {}, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"attachments\": [Attachment], \"checkable\": true, \"status\": AnnotationStatus, \"collapsed\": false, \"seenBy\": [User], \"replies\": [NoteReply], \"content\": \"abc123\", \"originalContent\": \"xyz789\", \"stylizedContent\": \"abc123\", \"positionX\": 123.45, \"positionY\": 123.45, \"positionZ\": 987.65, \"anchorX\": 123.45, \"anchorY\": 123.45, \"anchorZ\": 123.45, \"tx\": 123.45, \"ty\": 987.65, \"proofReadingMark\": ProofReadingMark, \"path\": \"xyz789\", \"selectable\": false, \"startTime\": 123.45, \"endTime\": 123.45 } ] } }" + }, + { + "name": "getProperties", + "type": "query", + "description": "Read all configuration properties of a particular category", + "response_type": "[ConfigProperty!]!", + "arguments": [ + { + "name": "category", + "type": "String!", + "description": "category: The considered category", + "required": true + } + ], + "example_query": "query getProperties($category: String!) { getProperties(category: $category) { id category name value } }", + "example_variables": "{\"category\": \"abc123\"}", + "example_response": "{ \"data\": { \"getProperties\": [ { \"id\": \"4\", \"category\": \"xyz789\", \"name\": \"abc123\", \"value\": \"xyz789\" } ] } }" + }, + { + "name": "getProperty", + "type": "query", + "description": "Read a configuration property", + "response_type": "a ConfigProperty", + "arguments": [ + { + "name": "category", + "type": "String!", + "description": "The category to which belongs the property to retrieve", + "required": true + }, + { + "name": "name", + "type": "String!", + "description": "The name of the property to retrieve", + "required": true + }, + { + "name": "defaultValue", + "type": "String", + "description": "A default value if the property is not yet defined", + "required": false + } + ], + "example_query": "query getProperty( $category: String!, $name: String!, $defaultValue: String ) { getProperty( category: $category, name: $name, defaultValue: $defaultValue ) { id category name value } }", + "example_variables": "{ \"category\": \"xyz789\", \"name\": \"abc123\", \"defaultValue\": \"xyz789\" }", + "example_response": "{ \"data\": { \"getProperty\": { \"id\": \"4\", \"category\": \"xyz789\", \"name\": \"abc123\", \"value\": \"xyz789\" } } }" + }, + { + "name": "getReportURL", + "type": "query", + "description": "", + "response_type": "a String", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "type", + "type": "ReportType!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iReportSetup", + "description": "Default = {mode : relative, timeUnit : minute, time : 15}", + "required": false + } + ], + "example_query": "query getReportURL( $id: ID!, $type: ReportType!, $setup: iReportSetup ) { getReportURL( id: $id, type: $type, setup: $setup ) }", + "example_variables": "{ \"id\": 4, \"type\": \"dashboard\", \"setup\": {\"mode\": \"relative\", \"timeUnit\": \"minute\", \"time\": 15} }", + "example_response": "{\"data\": {\"getReportURL\": \"xyz789\"}}" + }, + { + "name": "getSchemaExtensions", + "type": "query", + "description": "", + "response_type": "[SchemaExtension!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "", + "required": false + } + ], + "example_query": "query getSchemaExtensions( $id: [ID!], $orderBy: iOrderBy ) { getSchemaExtensions( id: $id, orderBy: $orderBy ) { id type executionType name newOperation operations script securityRole usableInSharing } }", + "example_variables": "{\"id\": [4], \"orderBy\": iOrderBy}", + "example_response": "{ \"data\": { \"getSchemaExtensions\": [ { \"id\": \"4\", \"type\": \"QUERY\", \"executionType\": \"GRAPHQL\", \"name\": \"abc123\", \"newOperation\": \"xyz789\", \"operations\": [\"abc123\"], \"script\": \"abc123\", \"securityRole\": \"ADMIN\", \"usableInSharing\": true } ] } }" + }, + { + "name": "getSecret2FAKey", + "type": "query", + "description": "Return the Authenticator secret key", + "response_type": "a String!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "id of the user", + "required": true + } + ], + "example_query": "query getSecret2FAKey($id: ID!) { getSecret2FAKey(id: $id) }", + "example_variables": "{\"id\": 4}", + "example_response": "{\"data\": {\"getSecret2FAKey\": \"abc123\"}}" + }, + { + "name": "getSharing", + "type": "query", + "description": "to retrieve the current sharing when logged in from a sharing key", + "response_type": "a Sharing", + "arguments": [], + "example_query": "query getSharing { getSharing { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } key hasPinCode type startDate endDate isActive owner { ...UserFragment } entities { ...PagingResponseFragment } securityProfile { ...SecurityProfileFragment } } }", + "example_variables": "", + "example_response": "{ \"data\": { \"getSharing\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"key\": \"abc123\", \"hasPinCode\": true, \"type\": \"xyz789\", \"startDate\": \"2007-12-03T10:15:30Z\", \"endDate\": \"2007-12-03T10:15:30Z\", \"isActive\": false, \"owner\": User, \"entities\": PagingResponse, \"securityProfile\": SecurityProfile } } }" + }, + { + "name": "getUIFileContent", + "type": "query", + "description": "", + "response_type": "a String", + "arguments": [ + { + "name": "from", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "path", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "query getUIFileContent( $from: String!, $path: String! ) { getUIFileContent( from: $from, path: $path ) }", + "example_variables": "{ \"from\": \"abc123\", \"path\": \"xyz789\" }", + "example_response": "{\"data\": {\"getUIFileContent\": \"xyz789\"}}" + }, + { + "name": "getUIFiles", + "type": "query", + "description": "", + "response_type": "[UIProjectFile!]", + "arguments": [ + { + "name": "from", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "path", + "type": "String", + "description": "Default = \"/\"", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "", + "required": false + } + ], + "example_query": "query getUIFiles( $from: String!, $path: String, $orderBy: iOrderBy ) { getUIFiles( from: $from, path: $path, orderBy: $orderBy ) { isFolder name path id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } uiProject { ...UIProjectFragment } labels mimeType metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } translations } }", + "example_variables": "{ \"from\": \"xyz789\", \"path\": \"/\", \"orderBy\": iOrderBy }", + "example_response": "{ \"data\": { \"getUIFiles\": [ { \"isFolder\": true, \"name\": \"xyz789\", \"path\": \"xyz789\", \"id\": \"4\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"uiProject\": UIProject, \"labels\": [\"xyz789\"], \"mimeType\": \"xyz789\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"translations\": {} } ] } }" + }, + { + "name": "getUIFilesByFilter", + "type": "query", + "description": "", + "response_type": "[UIProjectFile!]", + "arguments": [ + { + "name": "from", + "type": "String", + "description": "", + "required": false + }, + { + "name": "filter", + "type": "iFilter!", + "description": "", + "required": true + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "", + "required": false + } + ], + "example_query": "query getUIFilesByFilter( $from: String, $filter: iFilter!, $orderBy: iOrderBy ) { getUIFilesByFilter( from: $from, filter: $filter, orderBy: $orderBy ) { isFolder name path id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } uiProject { ...UIProjectFragment } labels mimeType metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } translations } }", + "example_variables": "{ \"from\": \"xyz789\", \"filter\": iFilter, \"orderBy\": iOrderBy }", + "example_response": "{ \"data\": { \"getUIFilesByFilter\": [ { \"isFolder\": false, \"name\": \"xyz789\", \"path\": \"xyz789\", \"id\": \"4\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"uiProject\": UIProject, \"labels\": [\"xyz789\"], \"mimeType\": \"abc123\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"translations\": {} } ] } }" + }, + { + "name": "getUIProjectFiles", + "type": "query", + "description": "", + "response_type": "[UIProjectFile!]", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "path", + "type": "String", + "description": "Default = \"/\"", + "required": false + } + ], + "example_query": "query getUIProjectFiles( $name: String!, $path: String ) { getUIProjectFiles( name: $name, path: $path ) { isFolder name path id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } uiProject { ...UIProjectFragment } labels mimeType metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } translations } }", + "example_variables": "{\"name\": \"abc123\", \"path\": \"/\"}", + "example_response": "{ \"data\": { \"getUIProjectFiles\": [ { \"isFolder\": true, \"name\": \"abc123\", \"path\": \"abc123\", \"id\": 4, \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"uiProject\": UIProject, \"labels\": [\"xyz789\"], \"mimeType\": \"xyz789\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"translations\": {} } ] } }" + }, + { + "name": "getUIProjects", + "type": "query", + "description": "", + "response_type": "[UIProject!]", + "arguments": [ + { + "name": "orderBy", + "type": "iOrderBy", + "description": "", + "required": false + } + ], + "example_query": "query getUIProjects($orderBy: iOrderBy) { getUIProjects(orderBy: $orderBy) { name id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } type icon labels translations } }", + "example_variables": "{\"orderBy\": iOrderBy}", + "example_response": "{ \"data\": { \"getUIProjects\": [ { \"name\": \"abc123\", \"id\": 4, \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"type\": \"xyz789\", \"icon\": \"xyz789\", \"labels\": [\"xyz789\"], \"translations\": {} } ] } }" + }, + { + "name": "getUIProjectsByFilter", + "type": "query", + "description": "", + "response_type": "[UIProject!]", + "arguments": [ + { + "name": "filter", + "type": "iFilter!", + "description": "", + "required": true + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "", + "required": false + } + ], + "example_query": "query getUIProjectsByFilter( $filter: iFilter!, $orderBy: iOrderBy ) { getUIProjectsByFilter( filter: $filter, orderBy: $orderBy ) { name id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } type icon labels translations } }", + "example_variables": "{ \"filter\": iFilter, \"orderBy\": iOrderBy }", + "example_response": "{ \"data\": { \"getUIProjectsByFilter\": [ { \"name\": \"xyz789\", \"id\": 4, \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"type\": \"xyz789\", \"icon\": \"xyz789\", \"labels\": [\"abc123\"], \"translations\": {} } ] } }" + }, + { + "name": "getUIProjectsByName", + "type": "query", + "description": "", + "response_type": "an UIProject", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "", + "required": false + } + ], + "example_query": "query getUIProjectsByName( $name: String!, $orderBy: iOrderBy ) { getUIProjectsByName( name: $name, orderBy: $orderBy ) { name id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } type icon labels translations } }", + "example_variables": "{ \"name\": \"xyz789\", \"orderBy\": iOrderBy }", + "example_response": "{ \"data\": { \"getUIProjectsByName\": { \"name\": \"abc123\", \"id\": \"4\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"type\": \"xyz789\", \"icon\": \"xyz789\", \"labels\": [\"xyz789\"], \"translations\": {} } } }" + }, + { + "name": "getUIProjectsByType", + "type": "query", + "description": "", + "response_type": "[UIProject!]", + "arguments": [ + { + "name": "type", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "", + "required": false + } + ], + "example_query": "query getUIProjectsByType( $type: String!, $orderBy: iOrderBy ) { getUIProjectsByType( type: $type, orderBy: $orderBy ) { name id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } type icon labels translations } }", + "example_variables": "{ \"type\": \"xyz789\", \"orderBy\": iOrderBy }", + "example_response": "{ \"data\": { \"getUIProjectsByType\": [ { \"name\": \"xyz789\", \"id\": 4, \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"type\": \"xyz789\", \"icon\": \"abc123\", \"labels\": [\"xyz789\"], \"translations\": {} } ] } }" + }, + { + "name": "groupById", + "type": "query", + "description": "Retrieve group by id", + "response_type": "[Group!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query groupById($id: [ID!]!) { groupById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } isSystem metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } children { ...PagingResponseFragment } organization { ...OrganizationFragment } customers { ...CustomerPagingResponseFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"groupById\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"isSystem\": true, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"children\": PagingResponse, \"organization\": Organization, \"customers\": CustomerPagingResponse } ] } }" + }, + { + "name": "groups", + "type": "query", + "description": "Retrieve visible groups by the current logged user", + "response_type": "a GroupPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query groups( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { groups( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...GroupFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"groups\": { \"lowerCursor\": \"4\", \"upperCursor\": 4, \"hasMoreItems\": false, \"objectList\": [Group] } } }" + }, + { + "name": "hostById", + "type": "query", + "description": "Get host(s) based on ID", + "response_type": "[Host!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query hostById($id: [ID!]!) { hostById(id: $id) { id url } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"hostById\": [ { \"id\": \"4\", \"url\": \"xyz789\" } ] } }" + }, + { + "name": "hostFoldersByPath", + "type": "query", + "description": "**List folders in a host **", + "response_type": "[String!]!", + "arguments": [ + { + "name": "path", + "type": "String", + "description": "", + "required": false + }, + { + "name": "hostId", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "query hostFoldersByPath( $path: String, $hostId: ID! ) { hostFoldersByPath( path: $path, hostId: $hostId ) }", + "example_variables": "{\"path\": \"xyz789\", \"hostId\": 4}", + "example_response": "{\"data\": {\"hostFoldersByPath\": [\"abc123\"]}}" + }, + { + "name": "hosts", + "type": "query", + "description": "List all hosts", + "response_type": "[Host!]!", + "arguments": [], + "example_query": "query hosts { hosts { id url } }", + "example_variables": "", + "example_response": "{ \"data\": { \"hosts\": [ { \"id\": \"4\", \"url\": \"xyz789\" } ] } }" + }, + { + "name": "iccProfileById", + "type": "query", + "description": "", + "response_type": "[IccProfile!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query iccProfileById($id: [ID!]!) { iccProfileById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } type colorSpace1 colorSpace2 creator fileSize url } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"iccProfileById\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"type\": \"abc123\", \"colorSpace1\": \"xyz789\", \"colorSpace2\": \"abc123\", \"creator\": \"xyz789\", \"fileSize\": {}, \"url\": \"http://www.test.com/\" } ] } }" + }, + { + "name": "iccProfileByName", + "type": "query", + "description": "", + "response_type": "an IccProfile!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "query iccProfileByName($name: String!) { iccProfileByName(name: $name) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } type colorSpace1 colorSpace2 creator fileSize url } }", + "example_variables": "{\"name\": \"abc123\"}", + "example_response": "{ \"data\": { \"iccProfileByName\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"type\": \"xyz789\", \"colorSpace1\": \"abc123\", \"colorSpace2\": \"abc123\", \"creator\": \"abc123\", \"fileSize\": {}, \"url\": \"http://www.test.com/\" } } }" + }, + { + "name": "iccProfiles", + "type": "query", + "description": "", + "response_type": "an IccProfilePagingResponse!", + "arguments": [ + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"name\", direction : ASC}", + "required": false + }, + { + "name": "type", + "type": "[ICCProfileType]", + "description": "", + "required": false + } + ], + "example_query": "query iccProfiles( $limit: Int, $cursor: ID, $orderBy: iOrderBy, $type: [ICCProfileType] ) { iccProfiles( limit: $limit, cursor: $cursor, orderBy: $orderBy, type: $type ) { lowerCursor upperCursor hasMoreItems objectList { ...IccProfileFragment } } }", + "example_variables": "{ \"limit\": 123, \"cursor\": \"4\", \"orderBy\": {\"property\": \"name\", \"direction\": \"ASC\"}, \"type\": [\"RGB\"] }", + "example_response": "{ \"data\": { \"iccProfiles\": { \"lowerCursor\": \"4\", \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [IccProfile] } } }" + }, + { + "name": "importedFiles", + "type": "query", + "description": "**Get the list of files that have been imported", + "response_type": "[ImportedFile!]!", + "arguments": [], + "example_query": "query importedFiles { importedFiles { id name category fileSize comment creationDate lastImportDate } }", + "example_variables": "", + "example_response": "{ \"data\": { \"importedFiles\": [ { \"id\": \"4\", \"name\": \"abc123\", \"category\": \"xyz789\", \"fileSize\": 987, \"comment\": \"abc123\", \"creationDate\": \"2007-12-03T10:15:30Z\", \"lastImportDate\": \"2007-12-03T10:15:30Z\" } ] } }" + }, + { + "name": "inkById", + "type": "query", + "description": "", + "response_type": "[Ink!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query inkById($id: [ID!]!) { inkById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } printable opacity order group cyan magenta yellow black rgb } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"inkById\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"printable\": true, \"opacity\": 987.65, \"order\": 987, \"group\": \"xyz789\", \"cyan\": 987.65, \"magenta\": 123.45, \"yellow\": 123.45, \"black\": 987.65, \"rgb\": \"abc123\" } ] } }" + }, + { + "name": "inkByName", + "type": "query", + "description": "", + "response_type": "an Ink!", + "arguments": [ + { + "name": "name", + "type": "String", + "description": "", + "required": false + } + ], + "example_query": "query inkByName($name: String) { inkByName(name: $name) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } printable opacity order group cyan magenta yellow black rgb } }", + "example_variables": "{\"name\": \"xyz789\"}", + "example_response": "{ \"data\": { \"inkByName\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"printable\": true, \"opacity\": 123.45, \"order\": 123, \"group\": \"xyz789\", \"cyan\": 123.45, \"magenta\": 123.45, \"yellow\": 123.45, \"black\": 123.45, \"rgb\": \"xyz789\" } } }" + }, + { + "name": "inkCoverage", + "type": "query", + "description": "Compute the ink coverage of a portion of a document defined by parameters of input iInkCoverageParams The response is a png image (Warning it is not a JSON response contentType='image/png')", + "response_type": "a Stream", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "parameters", + "type": "iInkCoverageParams!", + "description": "", + "required": true + } + ], + "example_query": "query inkCoverage( $id: ID!, $parameters: iInkCoverageParams! ) { inkCoverage( id: $id, parameters: $parameters ) }", + "example_variables": "{\"id\": 4, \"parameters\": iInkCoverageParams}", + "example_response": "{\"data\": {\"inkCoverage\": Stream}}" + }, + { + "name": "inks", + "type": "query", + "description": "", + "response_type": "an InkPagingResponse!", + "arguments": [ + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"name\", direction : ASC}", + "required": false + } + ], + "example_query": "query inks( $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { inks( limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...InkFragment } } }", + "example_variables": "{ \"limit\": 123, \"cursor\": \"4\", \"orderBy\": {\"property\": \"name\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"inks\": { \"lowerCursor\": \"4\", \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [Ink] } } }" + }, + { + "name": "inputChannelById", + "type": "query", + "description": "", + "response_type": "[InputChannel!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query inputChannelById($id: [ID!]!) { inputChannelById(id: $id) { id name description ruleSets { ...InputRuleSetFragment } pipes { ...InputPipeFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"inputChannelById\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"ruleSets\": [InputRuleSet], \"pipes\": [InputPipe] } ] } }" + }, + { + "name": "inputChannels", + "type": "query", + "description": "", + "response_type": "an InputChannelPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query inputChannels( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { inputChannels( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...InputChannelFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 987, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"inputChannels\": { \"lowerCursor\": \"4\", \"upperCursor\": \"4\", \"hasMoreItems\": false, \"objectList\": [InputChannel] } } }" + }, + { + "name": "inputRuleSetById", + "type": "query", + "description": "", + "response_type": "[InputRuleSet!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query inputRuleSetById($id: [ID!]!) { inputRuleSetById(id: $id) { id name description rules { ...InputRuleFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"inputRuleSetById\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"rules\": [InputRule] } ] } }" + }, + { + "name": "inputRuleSets", + "type": "query", + "description": "", + "response_type": "an InputRuleSetPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query inputRuleSets( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { inputRuleSets( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...InputRuleSetFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"inputRuleSets\": { \"lowerCursor\": 4, \"upperCursor\": \"4\", \"hasMoreItems\": false, \"objectList\": [InputRuleSet] } } }" + }, + { + "name": "layoutById", + "type": "query", + "description": "Retrieve Layout by ID or [ID]", + "response_type": "[Layout!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query layoutById($id: [ID!]!) { layoutById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } type applyTo priority layout translations icon } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"layoutById\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"type\": \"ENTITY\", \"applyTo\": [\"Folder\"], \"priority\": 987, \"layout\": {}, \"translations\": {}, \"icon\": \"4\" } ] } }" + }, + { + "name": "layouts", + "type": "query", + "description": "Retrieve Layouts", + "response_type": "a LayoutPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query layouts( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { layouts( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...LayoutFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 987, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"layouts\": { \"lowerCursor\": \"4\", \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [Layout] } } }" + }, + { + "name": "metadataDefinitionById", + "type": "query", + "description": "", + "response_type": "[MetadataDefinition!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query metadataDefinitionById($id: [ID!]!) { metadataDefinitionById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } nameSpace { ...MetadataNameSpaceFragment } type cardinality struct { ...MetadataDefinitionFragment } lName translations searchable availableInLayout saveInXmp required unique editable dictionary { ...DictionaryFragment } minRange maxRange minChar maxChar regex defaultValue } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"metadataDefinitionById\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"nameSpace\": MetadataNameSpace, \"type\": \"BOOLEAN\", \"cardinality\": \"SINGLE\", \"struct\": [MetadataDefinition], \"lName\": \"abc123\", \"translations\": {}, \"searchable\": true, \"availableInLayout\": true, \"saveInXmp\": true, \"required\": true, \"unique\": false, \"editable\": true, \"dictionary\": Dictionary, \"minRange\": Number, \"maxRange\": Number, \"minChar\": Number, \"maxChar\": Number, \"regex\": \"abc123\", \"defaultValue\": {} } ] } }" + }, + { + "name": "metadataDefinitionByRef", + "type": "query", + "description": "", + "response_type": "[MetadataDefinition!]", + "arguments": [ + { + "name": "ref", + "type": "[String!]!", + "description": "", + "required": true + } + ], + "example_query": "query metadataDefinitionByRef($ref: [String!]!) { metadataDefinitionByRef(ref: $ref) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } nameSpace { ...MetadataNameSpaceFragment } type cardinality struct { ...MetadataDefinitionFragment } lName translations searchable availableInLayout saveInXmp required unique editable dictionary { ...DictionaryFragment } minRange maxRange minChar maxChar regex defaultValue } }", + "example_variables": "{\"ref\": [\"abc123\"]}", + "example_response": "{ \"data\": { \"metadataDefinitionByRef\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"nameSpace\": MetadataNameSpace, \"type\": \"BOOLEAN\", \"cardinality\": \"SINGLE\", \"struct\": [MetadataDefinition], \"lName\": \"xyz789\", \"translations\": {}, \"searchable\": true, \"availableInLayout\": false, \"saveInXmp\": true, \"required\": true, \"unique\": true, \"editable\": false, \"dictionary\": Dictionary, \"minRange\": Number, \"maxRange\": Number, \"minChar\": Number, \"maxChar\": Number, \"regex\": \"xyz789\", \"defaultValue\": {} } ] } }" + }, + { + "name": "myProofReadingMarks", + "type": "query", + "description": "Returns a ProofReadingMarkPagingResponse!", + "response_type": "a ProofReadingMarkPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query myProofReadingMarks( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { myProofReadingMarks( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ProofReadingMarkFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"myProofReadingMarks\": { \"lowerCursor\": \"4\", \"upperCursor\": \"4\", \"hasMoreItems\": false, \"objectList\": [ProofReadingMark] } } }" + }, + { + "name": "myProofReadingMarksById", + "type": "query", + "description": "Returns [ProofReadingMark!]", + "response_type": "[ProofReadingMark!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query myProofReadingMarksById($id: [ID!]!) { myProofReadingMarksById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationUser { ...UserFragment } creationDate comment autoSetNoteContent isGlobal imageWidth imageHeight proofReadingMarkImage { ...ProofReadingMarkImageFragment } parents { ...ContainerFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"myProofReadingMarksById\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"comment\": {}, \"autoSetNoteContent\": false, \"isGlobal\": false, \"imageWidth\": 987.65, \"imageHeight\": 123.45, \"proofReadingMarkImage\": ProofReadingMarkImage, \"parents\": [Container] } ] } }" + }, + { + "name": "mySharing", + "type": "query", + "description": "", + "response_type": "a SharingResponse!", + "arguments": [ + { + "name": "limit", + "type": "Int", + "description": "Default = 1000", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query mySharing( $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { mySharing( limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...SharingFragment } } }", + "example_variables": "{ \"limit\": 1000, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"mySharing\": { \"lowerCursor\": \"4\", \"upperCursor\": \"4\", \"hasMoreItems\": false, \"objectList\": [Sharing] } } }" + }, + { + "name": "myWebAuthnRegistrations", + "type": "query", + "description": "", + "response_type": "a WebAuthnPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query myWebAuthnRegistrations( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { myWebAuthnRegistrations( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...WebAuthnRegistrationFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"myWebAuthnRegistrations\": { \"lowerCursor\": 4, \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [WebAuthnRegistration] } } }" + }, + { + "name": "nameSpaceDefinitionById", + "type": "query", + "description": "", + "response_type": "[MetadataNameSpace!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query nameSpaceDefinitionById($id: [ID!]!) { nameSpaceDefinitionById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } uri prefix metadataDefs { ...MetadataDefinitionFragment } lName translations searchable availableInLayout saveInXmp } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"nameSpaceDefinitionById\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"uri\": \"http://www.test.com/\", \"prefix\": \"xyz789\", \"metadataDefs\": [MetadataDefinition], \"lName\": \"xyz789\", \"translations\": {}, \"searchable\": true, \"availableInLayout\": false, \"saveInXmp\": false } ] } }" + }, + { + "name": "nameSpaceDefinitionByPrefix", + "type": "query", + "description": "", + "response_type": "[MetadataNameSpace!]", + "arguments": [ + { + "name": "prefix", + "type": "[String!]!", + "description": "", + "required": true + } + ], + "example_query": "query nameSpaceDefinitionByPrefix($prefix: [String!]!) { nameSpaceDefinitionByPrefix(prefix: $prefix) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } uri prefix metadataDefs { ...MetadataDefinitionFragment } lName translations searchable availableInLayout saveInXmp } }", + "example_variables": "{\"prefix\": [\"xyz789\"]}", + "example_response": "{ \"data\": { \"nameSpaceDefinitionByPrefix\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"uri\": \"http://www.test.com/\", \"prefix\": \"abc123\", \"metadataDefs\": [MetadataDefinition], \"lName\": \"abc123\", \"translations\": {}, \"searchable\": false, \"availableInLayout\": false, \"saveInXmp\": true } ] } }" + }, + { + "name": "nameSpaceDefinitionByURI", + "type": "query", + "description": "", + "response_type": "[MetadataNameSpace!]", + "arguments": [ + { + "name": "uri", + "type": "[URL!]!", + "description": "", + "required": true + } + ], + "example_query": "query nameSpaceDefinitionByURI($uri: [URL!]!) { nameSpaceDefinitionByURI(uri: $uri) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } uri prefix metadataDefs { ...MetadataDefinitionFragment } lName translations searchable availableInLayout saveInXmp } }", + "example_variables": "{\"uri\": [\"http://www.test.com/\"]}", + "example_response": "{ \"data\": { \"nameSpaceDefinitionByURI\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"uri\": \"http://www.test.com/\", \"prefix\": \"xyz789\", \"metadataDefs\": [MetadataDefinition], \"lName\": \"abc123\", \"translations\": {}, \"searchable\": false, \"availableInLayout\": false, \"saveInXmp\": true } ] } }" + }, + { + "name": "nameSpaceDefinitions", + "type": "query", + "description": "", + "response_type": "[MetadataNameSpace!]", + "arguments": [], + "example_query": "query nameSpaceDefinitions { nameSpaceDefinitions { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } uri prefix metadataDefs { ...MetadataDefinitionFragment } lName translations searchable availableInLayout saveInXmp } }", + "example_variables": "", + "example_response": "{ \"data\": { \"nameSpaceDefinitions\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"uri\": \"http://www.test.com/\", \"prefix\": \"xyz789\", \"metadataDefs\": [MetadataDefinition], \"lName\": \"abc123\", \"translations\": {}, \"searchable\": true, \"availableInLayout\": true, \"saveInXmp\": true } ] } }" + }, + { + "name": "namedSearchFilterById", + "type": "query", + "description": "", + "response_type": "[NamedSearchFilter!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query namedSearchFilterById($id: [ID!]!) { namedSearchFilterById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } filter { ...SearchFilterFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"namedSearchFilterById\": [ { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"filter\": SearchFilter } ] } }" + }, + { + "name": "namedSearchFilterByName", + "type": "query", + "description": "", + "response_type": "[NamedSearchFilter!]!", + "arguments": [ + { + "name": "name", + "type": "[String!]!", + "description": "", + "required": true + } + ], + "example_query": "query namedSearchFilterByName($name: [String!]!) { namedSearchFilterByName(name: $name) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } filter { ...SearchFilterFragment } } }", + "example_variables": "{\"name\": [\"abc123\"]}", + "example_response": "{ \"data\": { \"namedSearchFilterByName\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"filter\": SearchFilter } ] } }" + }, + { + "name": "namedSearchFilters", + "type": "query", + "description": "", + "response_type": "[NamedSearchFilter!]!", + "arguments": [], + "example_query": "query namedSearchFilters { namedSearchFilters { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } filter { ...SearchFilterFragment } } }", + "example_variables": "", + "example_response": "{ \"data\": { \"namedSearchFilters\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"filter\": SearchFilter } ] } }" + }, + { + "name": "noteReport", + "type": "query", + "description": "**Generate a Report for one or several Asset(s) **", + "response_type": "a Stream", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "contentDisposition", + "type": "ContentDisposition", + "description": "Default = ATTACHMENT", + "required": false + }, + { + "name": "display", + "type": "iReportDisplay", + "description": "", + "required": false + } + ], + "example_query": "query noteReport( $id: [ID!]!, $contentDisposition: ContentDisposition, $display: iReportDisplay ) { noteReport( id: $id, contentDisposition: $contentDisposition, display: $display ) }", + "example_variables": "{ \"id\": [\"4\"], \"contentDisposition\": \"ATTACHMENT\", \"display\": iReportDisplay }", + "example_response": "{\"data\": {\"noteReport\": Stream}}" + }, + { + "name": "notificationSender", + "type": "query", + "description": "", + "response_type": "a Boolean", + "arguments": [], + "example_query": "query notificationSender { notificationSender }", + "example_variables": "", + "example_response": "{\"data\": {\"notificationSender\": true}}" + }, + { + "name": "notificationTemplateById", + "type": "query", + "description": "", + "response_type": "[NotificationTemplate!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query notificationTemplateById($id: [ID!]!) { notificationTemplateById(id: $id) { id name event { ... on ApprovalNotificationTemplateEvent { ...ApprovalNotificationTemplateEventFragment } ... on MilestoneNotificationTemplateEvent { ...MilestoneNotificationTemplateEventFragment } ... on BaseNotificationTemplateEvent { ...BaseNotificationTemplateEventFragment } } emailTemplate { ...EmailTemplateFragment } parentEntity { ...WithEmailTemplateFragment } lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"notificationTemplateById\": [ { \"id\": \"4\", \"name\": \"abc123\", \"event\": ApprovalNotificationTemplateEvent, \"emailTemplate\": EmailTemplate, \"parentEntity\": WithEmailTemplate, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User } ] } }" + }, + { + "name": "notificationTemplates", + "type": "query", + "description": "", + "response_type": "a NotificationTemplatePagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query notificationTemplates( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { notificationTemplates( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...NotificationTemplateFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"notificationTemplates\": { \"lowerCursor\": 4, \"upperCursor\": \"4\", \"hasMoreItems\": true, \"objectList\": [NotificationTemplate] } } }" + }, + { + "name": "notifications", + "type": "query", + "description": "Retrieve the notifications of a given type", + "response_type": "[Notification!]", + "arguments": [ + { + "name": "id", + "type": "iNotifiableID!", + "description": "", + "required": true + }, + { + "name": "onlyEnabled", + "type": "Boolean", + "description": "Default = false", + "required": false + } + ], + "example_query": "query notifications( $id: iNotifiableID!, $onlyEnabled: Boolean ) { notifications( id: $id, onlyEnabled: $onlyEnabled ) { id event } }", + "example_variables": "{\"id\": iNotifiableID, \"onlyEnabled\": false}", + "example_response": "{ \"data\": { \"notifications\": [ { \"id\": \"4\", \"event\": \"PROJECT_CREATION\" } ] } }" + }, + { + "name": "openDialogueConnection", + "type": "query", + "description": "Open a Dialogue connection to a document", + "response_type": "a DialogueConnection!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "revision", + "type": "Int", + "description": "Default = 0", + "required": false + }, + { + "name": "pageNumber", + "type": "Int", + "description": "Default = 1", + "required": false + } + ], + "example_query": "query openDialogueConnection( $id: ID!, $revision: Int, $pageNumber: Int ) { openDialogueConnection( id: $id, revision: $revision, pageNumber: $pageNumber ) { id media { ...MediaFragment } pageNumber creationUser { ...UserFragment } host colorSettings { ...ColorSettingsFragment } } }", + "example_variables": "{\"id\": \"4\", \"revision\": 0, \"pageNumber\": 1}", + "example_response": "{ \"data\": { \"openDialogueConnection\": { \"id\": 4, \"media\": Media, \"pageNumber\": 123, \"creationUser\": User, \"host\": \"xyz789\", \"colorSettings\": ColorSettings } } }" + }, + { + "name": "organizationById", + "type": "query", + "description": "", + "response_type": "[Organization!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query organizationById($id: [ID!]!) { organizationById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } children { ...PagingResponseFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } phone phone2 www fax shippingAddress { ...AddressFragment } billingAddress { ...AddressFragment } organization { ...OrganizationFragment } customers { ...CustomerFragment } emailTemplates { ...EmailTemplateFragment } notificationTemplates { ...NotificationTemplateFragment } ldapConfiguration { ...LDAPConfigurationFragment } applySecurityConfigToSubOrganization securityConfiguration { ...SecurityConfigurationFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"organizationById\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"children\": PagingResponse, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"phone\": \"xyz789\", \"phone2\": \"abc123\", \"www\": \"abc123\", \"fax\": \"abc123\", \"shippingAddress\": Address, \"billingAddress\": Address, \"organization\": Organization, \"customers\": [Customer], \"emailTemplates\": [EmailTemplate], \"notificationTemplates\": [NotificationTemplate], \"ldapConfiguration\": LDAPConfiguration, \"applySecurityConfigToSubOrganization\": true, \"securityConfiguration\": SecurityConfiguration, \"notifications\": [Notification] } ] } }" + }, + { + "name": "organizations", + "type": "query", + "description": "Retrieve visible organizations by the current logged user", + "response_type": "an OrganizationPagingResponse!", + "arguments": [ + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query organizations( $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { organizations( limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...OrganizationFragment } } }", + "example_variables": "{\"limit\": 987, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"}}", + "example_response": "{ \"data\": { \"organizations\": { \"lowerCursor\": 4, \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [Organization] } } }" + }, + { + "name": "organizationsByFilter", + "type": "query", + "description": "", + "response_type": "an OrganizationPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query organizationsByFilter( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { organizationsByFilter( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...OrganizationFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 987, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"organizationsByFilter\": { \"lowerCursor\": 4, \"upperCursor\": \"4\", \"hasMoreItems\": false, \"objectList\": [Organization] } } }" + }, + { + "name": "outputChannelById", + "type": "query", + "description": "Get output channel(s) based on ID", + "response_type": "[OutputChannel!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query outputChannelById($id: [ID!]!) { outputChannelById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } isActive } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"outputChannelById\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"isActive\": false } ] } }" + }, + { + "name": "outputChannelGroupById", + "type": "query", + "description": "Get output channel group(s) based on ID", + "response_type": "[OutputChannelGroup!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query outputChannelGroupById($id: [ID!]!) { outputChannelGroupById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } outputChannels { ...OutputChannelFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"outputChannelGroupById\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"outputChannels\": [OutputChannel] } ] } }" + }, + { + "name": "outputChannelGroups", + "type": "query", + "description": "Get output channel groups", + "response_type": "an OutputChannelGroupPagingResponse!", + "arguments": [ + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query outputChannelGroups( $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { outputChannelGroups( limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...OutputChannelGroupFragment } } }", + "example_variables": "{ \"limit\": 123, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"outputChannelGroups\": { \"lowerCursor\": \"4\", \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [OutputChannelGroup] } } }" + }, + { + "name": "participantsByRoleFilter", + "type": "query", + "description": "Retrieve visible participants that can use the given role in production list", + "response_type": "[Participant!]", + "arguments": [ + { + "name": "role", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "onlyParticipantsWithActor", + "type": "Boolean", + "description": "Default = false", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "", + "required": false + } + ], + "example_query": "query participantsByRoleFilter( $role: ID!, $onlyParticipantsWithActor: Boolean, $orderBy: iOrderBy ) { participantsByRoleFilter( role: $role, onlyParticipantsWithActor: $onlyParticipantsWithActor, orderBy: $orderBy ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } } }", + "example_variables": "{ \"role\": 4, \"onlyParticipantsWithActor\": false, \"orderBy\": iOrderBy }", + "example_response": "{ \"data\": { \"participantsByRoleFilter\": [ { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User } ] } }" + }, + { + "name": "preflightReport", + "type": "query", + "description": "**Generate a Preflight report for one or several Asset(s) or Media(s) **", + "response_type": "a Stream", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "contentDisposition", + "type": "ContentDisposition", + "description": "Default = ATTACHMENT", + "required": false + }, + { + "name": "reportFormat", + "type": "PreflightReportFormat", + "description": "Default = PDF", + "required": false + } + ], + "example_query": "query preflightReport( $id: [ID!]!, $contentDisposition: ContentDisposition, $reportFormat: PreflightReportFormat ) { preflightReport( id: $id, contentDisposition: $contentDisposition, reportFormat: $reportFormat ) }", + "example_variables": "{ \"id\": [\"4\"], \"contentDisposition\": \"ATTACHMENT\", \"reportFormat\": \"PDF\" }", + "example_response": "{\"data\": {\"preflightReport\": Stream}}" + }, + { + "name": "processById", + "type": "query", + "description": "Retrieve Processes by ID or [ID]", + "response_type": "[Process!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query processById($id: [ID!]!) { processById(id: $id) { id priority status virtualStatus startTime steps { ...ActivityInstanceFragment } workflow { ...WorkflowFragment } stages { ...StageFragment } object { ...EntityFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"processById\": [ { \"id\": 4, \"priority\": 987, \"status\": \"Created\", \"virtualStatus\": \"xyz789\", \"startTime\": \"2007-12-03T10:15:30Z\", \"steps\": [ActivityInstance], \"workflow\": Workflow, \"stages\": [Stage], \"object\": Entity } ] } }" + }, + { + "name": "processMonitoring", + "type": "query", + "description": "Workflow activity", + "response_type": "a MonitoringPagingResponse!", + "arguments": [ + { + "name": "scope", + "type": "[WorkflowableTypeName!]!", + "description": "", + "required": true + }, + { + "name": "workflow", + "type": "String", + "description": "", + "required": false + }, + { + "name": "systemProcesses", + "type": "Boolean", + "description": "Default = false", + "required": false + }, + { + "name": "userActionProcesses", + "type": "Boolean", + "description": "Default = false", + "required": false + }, + { + "name": "heldStatus", + "type": "Boolean", + "description": "Default = true", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : DESC}", + "required": false + } + ], + "example_query": "query processMonitoring( $scope: [WorkflowableTypeName!]!, $workflow: String, $systemProcesses: Boolean, $userActionProcesses: Boolean, $heldStatus: Boolean, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { processMonitoring( scope: $scope, workflow: $workflow, systemProcesses: $systemProcesses, userActionProcesses: $userActionProcesses, heldStatus: $heldStatus, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ActivityInstanceFragment } } }", + "example_variables": "{ \"scope\": [\"Folder\"], \"workflow\": \"abc123\", \"systemProcesses\": false, \"userActionProcesses\": false, \"heldStatus\": true, \"limit\": 123, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"DESC\"} }", + "example_response": "{ \"data\": { \"processMonitoring\": { \"lowerCursor\": 4, \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [ActivityInstance] } } }" + }, + { + "name": "processes", + "type": "query", + "description": "Retrieve Processes by filter", + "response_type": "a ProcessPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query processes( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { processes( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ProcessFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 987, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"processes\": { \"lowerCursor\": 4, \"upperCursor\": \"4\", \"hasMoreItems\": true, \"objectList\": [Process] } } }" + }, + { + "name": "projectById", + "type": "query", + "description": "Retrieve Projects by ID or [ID]", + "response_type": "[Project!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query projectById($id: [ID!]!) { projectById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } endDate metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status workflowName approvalStatus { ...ApprovalActivityStatusFragment } approvalSummary approvals { ...ApprovalCycleFragment } assetApprovals { ...ApprovalCycleFragment } children { ...PagingResponseFragment } assetWorkflow { ...WorkflowFragment } processes { ...ProcessFragment } projectTemplate { ...ProjectTemplateFragment } priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } reversedView customer { ...CustomerFragment } parents { ...ContainerFragment } mainAsset { ...AssetFragment } siteId productionParticipants { ...ProductionParticipantFragment } notes { ...NoteFragment } trimmedHeight trimmedWidth nbPages accessControls deadlines { ...ProjectDeadlineFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"projectById\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"endDate\": \"2007-12-03T10:15:30Z\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"workflowName\": \"abc123\", \"approvalStatus\": [ApprovalActivityStatus], \"approvalSummary\": \"NONE\", \"approvals\": [ApprovalCycle], \"assetApprovals\": [ApprovalCycle], \"children\": PagingResponse, \"assetWorkflow\": Workflow, \"processes\": [Process], \"projectTemplate\": ProjectTemplate, \"priority\": 123, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"reversedView\": true, \"customer\": Customer, \"parents\": [Container], \"mainAsset\": Asset, \"siteId\": 4, \"productionParticipants\": [ProductionParticipant], \"notes\": [Note], \"trimmedHeight\": 987.65, \"trimmedWidth\": 987.65, \"nbPages\": 123, \"accessControls\": {}, \"deadlines\": [ProjectDeadline] } ] } }" + }, + { + "name": "projectFolderById", + "type": "query", + "description": "Returns ProjectFolders by their IDs TODO Change security role", + "response_type": "[ProjectFolder!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query projectFolderById($id: [ID!]!) { projectFolderById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly productionSettings { ...ProductionSettingsFragment } processes { ...ProcessFragment } accessControlList { ...AccessControlListFragment } children { ...PagingResponseFragment } project { ...ProjectFragment } parents { ...ContainerFragment } path { ...ProjectFolderFragment } color icon } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"projectFolderById\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": false, \"productionSettings\": ProductionSettings, \"processes\": [Process], \"accessControlList\": AccessControlList, \"children\": PagingResponse, \"project\": Project, \"parents\": [Container], \"path\": [ProjectFolder], \"color\": \"xyz789\", \"icon\": \"4\" } ] } }" + }, + { + "name": "projectTemplateById", + "type": "query", + "description": "Retrieve Project Templates by ID or [ID]", + "response_type": "[ProjectTemplate!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query projectTemplateById($id: [ID!]!) { projectTemplateById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } friendlyName priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } assetWorkflow { ...WorkflowFragment } projectWorkflow { ...WorkflowFragment } productionParticipants { ...ProductionParticipantFragment } assetApprovals { ...ApprovalCycleFragment } projectApprovals { ...ApprovalCycleFragment } deadlines { ...ProjectDeadlineFragment } skipWeekend } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"projectTemplateById\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"friendlyName\": \"xyz789\", \"priority\": 987, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"assetWorkflow\": Workflow, \"projectWorkflow\": Workflow, \"productionParticipants\": [ProductionParticipant], \"assetApprovals\": [ApprovalCycle], \"projectApprovals\": [ApprovalCycle], \"deadlines\": [ProjectDeadline], \"skipWeekend\": true } ] } }" + }, + { + "name": "projectTemplates", + "type": "query", + "description": "Retrieve Project Templates", + "response_type": "a ProjectTemplateResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query projectTemplates( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { projectTemplates( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ProjectTemplateFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"projectTemplates\": { \"lowerCursor\": 4, \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [ProjectTemplate] } } }" + }, + { + "name": "projects", + "type": "query", + "description": "Retrieve Projects by filter", + "response_type": "a ProjectPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query projects( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { projects( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ProjectFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"projects\": { \"lowerCursor\": 4, \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [Project] } } }" + }, + { + "name": "proofReadingMarks", + "type": "query", + "description": "Returns a ProofReadingMarkPagingResponse!", + "response_type": "a ProofReadingMarkPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query proofReadingMarks( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { proofReadingMarks( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ProofReadingMarkFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 987, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"proofReadingMarks\": { \"lowerCursor\": 4, \"upperCursor\": \"4\", \"hasMoreItems\": true, \"objectList\": [ProofReadingMark] } } }" + }, + { + "name": "proofReadingMarksById", + "type": "query", + "description": "Returns [ProofReadingMark!]", + "response_type": "[ProofReadingMark!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query proofReadingMarksById($id: [ID!]!) { proofReadingMarksById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationUser { ...UserFragment } creationDate comment autoSetNoteContent isGlobal imageWidth imageHeight proofReadingMarkImage { ...ProofReadingMarkImageFragment } parents { ...ContainerFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"proofReadingMarksById\": [ { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"comment\": {}, \"autoSetNoteContent\": true, \"isGlobal\": false, \"imageWidth\": 987.65, \"imageHeight\": 987.65, \"proofReadingMarkImage\": ProofReadingMarkImage, \"parents\": [Container] } ] } }" + }, + { + "name": "queryStatistics", + "type": "query", + "description": "Return the current query' statistics", + "response_type": "[QueryStatistic!]!", + "arguments": [], + "example_query": "query queryStatistics { queryStatistics { query count averageDuration minDuration maxDuration totalDuration operations { ...OperationStatisticFragment } } }", + "example_variables": "", + "example_response": "{ \"data\": { \"queryStatistics\": [ { \"query\": \"abc123\", \"count\": 123, \"averageDuration\": {}, \"minDuration\": {}, \"maxDuration\": {}, \"totalDuration\": {}, \"operations\": [OperationStatistic] } ] } }" + }, + { + "name": "rasterize", + "type": "query", + "description": "Rendering of a portion of a document defined by parameters of input iRasterizeParams The response is a jpeg image (Warning it is not a JSON response contentType='image/jpeg')", + "response_type": "a Stream", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "parameters", + "type": "iRasterizeParams!", + "description": "", + "required": true + } + ], + "example_query": "query rasterize( $id: ID!, $parameters: iRasterizeParams! ) { rasterize( id: $id, parameters: $parameters ) }", + "example_variables": "{\"id\": 4, \"parameters\": iRasterizeParams}", + "example_response": "{\"data\": {\"rasterize\": Stream}}" + }, + { + "name": "readBarCode", + "type": "query", + "description": "Read a Barcode in the area defined by it's coordinates (in pt)", + "response_type": "[BarCode!]!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "x0", + "type": "Float!", + "description": "", + "required": true + }, + { + "name": "y0", + "type": "Float!", + "description": "", + "required": true + }, + { + "name": "x1", + "type": "Float!", + "description": "", + "required": true + }, + { + "name": "y1", + "type": "Float!", + "description": "", + "required": true + } + ], + "example_query": "query readBarCode( $id: ID!, $x0: Float!, $y0: Float!, $x1: Float!, $y1: Float! ) { readBarCode( id: $id, x0: $x0, y0: $y0, x1: $x1, y1: $y1 ) { x0 y0 x1 y1 type value } }", + "example_variables": "{\"id\": 4, \"x0\": 987.65, \"y0\": 123.45, \"x1\": 987.65, \"y1\": 987.65}", + "example_response": "{ \"data\": { \"readBarCode\": [ { \"x0\": 123.45, \"y0\": 123.45, \"x1\": 123.45, \"y1\": 123.45, \"type\": \"abc123\", \"value\": \"xyz789\" } ] } }" + }, + { + "name": "reports", + "type": "query", + "description": "", + "response_type": "[Report!]", + "arguments": [ + { + "name": "type", + "type": "ReportType", + "description": "", + "required": false + } + ], + "example_query": "query reports($type: ReportType) { reports(type: $type) { id type title description } }", + "example_variables": "{\"type\": \"dashboard\"}", + "example_response": "{ \"data\": { \"reports\": [ { \"id\": \"4\", \"type\": \"dashboard\", \"title\": \"abc123\", \"description\": \"abc123\" } ] } }" + }, + { + "name": "roleById", + "type": "query", + "description": "Retrieve role by id", + "response_type": "[Role!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query roleById($id: [ID!]!) { roleById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"roleById\": [ { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"notifications\": [Notification] } ] } }" + }, + { + "name": "roles", + "type": "query", + "description": "Retrieve visible roles by the current logged user", + "response_type": "a RolePagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query roles( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { roles( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...RoleFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"roles\": { \"lowerCursor\": \"4\", \"upperCursor\": \"4\", \"hasMoreItems\": true, \"objectList\": [Role] } } }" + }, + { + "name": "search", + "type": "query", + "description": "", + "response_type": "a SearchResponse", + "arguments": [ + { + "name": "filter", + "type": "iSearchFilter!", + "description": "", + "required": true + }, + { + "name": "facets", + "type": "[String!]", + "description": "", + "required": true + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + } + ], + "example_query": "query search( $filter: iSearchFilter!, $facets: [String!], $limit: Int, $cursor: ID ) { search( filter: $filter, facets: $facets, limit: $limit, cursor: $cursor ) { upperCursor hasMoreItems objectList { ...EntityFragment } scores facets { ...FacetFragment } } }", + "example_variables": "{ \"filter\": iSearchFilter, \"facets\": [\"abc123\"], \"limit\": 987, \"cursor\": 4 }", + "example_response": "{ \"data\": { \"search\": { \"upperCursor\": \"4\", \"hasMoreItems\": false, \"objectList\": [Entity], \"scores\": [987.65], \"facets\": [Facet] } } }" + }, + { + "name": "searchBySmartCollection", + "type": "query", + "description": "", + "response_type": "a SearchResponse", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "filter", + "type": "iSearchFilter!", + "description": "", + "required": true + }, + { + "name": "facets", + "type": "[String!]", + "description": "", + "required": true + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + } + ], + "example_query": "query searchBySmartCollection( $id: ID!, $filter: iSearchFilter!, $facets: [String!], $limit: Int, $cursor: ID ) { searchBySmartCollection( id: $id, filter: $filter, facets: $facets, limit: $limit, cursor: $cursor ) { upperCursor hasMoreItems objectList { ...EntityFragment } scores facets { ...FacetFragment } } }", + "example_variables": "{ \"id\": \"4\", \"filter\": iSearchFilter, \"facets\": [\"xyz789\"], \"limit\": 123, \"cursor\": 4 }", + "example_response": "{ \"data\": { \"searchBySmartCollection\": { \"upperCursor\": \"4\", \"hasMoreItems\": true, \"objectList\": [Entity], \"scores\": [123.45], \"facets\": [Facet] } } }" + }, + { + "name": "securityProfileById", + "type": "query", + "description": "Retrieve SecurityProfile by id", + "response_type": "[SecurityProfile!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query securityProfileById($id: [ID!]!) { securityProfileById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"securityProfileById\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"properties\": [SecurityProperty] } ] } }" + }, + { + "name": "securityProfiles", + "type": "query", + "description": "Retrieve SecurityProfile by filter", + "response_type": "a SecurityProfilePagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query securityProfiles( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { securityProfiles( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...SecurityProfileFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"securityProfiles\": { \"lowerCursor\": 4, \"upperCursor\": \"4\", \"hasMoreItems\": true, \"objectList\": [SecurityProfile] } } }" + }, + { + "name": "securityRoles", + "type": "query", + "description": "List all SecurityRoles", + "response_type": "[SecurityRoleDefinition!]!", + "arguments": [], + "example_query": "query securityRoles { securityRoles { role requires } }", + "example_variables": "", + "example_response": "{\"data\": {\"securityRoles\": [{\"role\": \"ADMIN\", \"requires\": [\"ADMIN\"]}]}}" + }, + { + "name": "send2FAQRCodeByEmail", + "type": "query", + "description": "send the Authenticator QR code to the user per email", + "response_type": "a Boolean", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "id of the user", + "required": true + } + ], + "example_query": "query send2FAQRCodeByEmail($id: ID!) { send2FAQRCodeByEmail(id: $id) }", + "example_variables": "{\"id\": 4}", + "example_response": "{\"data\": {\"send2FAQRCodeByEmail\": false}}" + }, + { + "name": "serverInformation", + "type": "query", + "description": "", + "response_type": "a ServerInformation!", + "arguments": [], + "example_query": "query serverInformation { serverInformation { guiClientId authorizationURL accessTokenURL authenticationKeys } }", + "example_variables": "", + "example_response": "{ \"data\": { \"serverInformation\": { \"guiClientId\": \"abc123\", \"authorizationURL\": \"http://www.test.com/\", \"accessTokenURL\": \"http://www.test.com/\", \"authenticationKeys\": [\"4\"] } } }" + }, + { + "name": "servlets", + "type": "query", + "description": "List all registered servlet's name", + "response_type": "[String!]", + "arguments": [], + "example_query": "query servlets { servlets }", + "example_variables": "", + "example_response": "{\"data\": {\"servlets\": [\"xyz789\"]}}" + }, + { + "name": "sharingById", + "type": "query", + "description": "", + "response_type": "[Sharing!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query sharingById($id: [ID!]!) { sharingById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } key hasPinCode type startDate endDate isActive owner { ...UserFragment } entities { ...PagingResponseFragment } securityProfile { ...SecurityProfileFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"sharingById\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"key\": \"abc123\", \"hasPinCode\": true, \"type\": \"abc123\", \"startDate\": \"2007-12-03T10:15:30Z\", \"endDate\": \"2007-12-03T10:15:30Z\", \"isActive\": false, \"owner\": User, \"entities\": PagingResponse, \"securityProfile\": SecurityProfile } ] } }" + }, + { + "name": "sharingByUser", + "type": "query", + "description": "here Name or ID for the users?", + "response_type": "a SharingResponse!", + "arguments": [ + { + "name": "user", + "type": "[String!]!", + "description": "", + "required": true + }, + { + "name": "limit", + "type": "Int", + "description": "Default = 1000", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query sharingByUser( $user: [String!]!, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { sharingByUser( user: $user, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...SharingFragment } } }", + "example_variables": "{ \"user\": [\"xyz789\"], \"limit\": 1000, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"sharingByUser\": { \"lowerCursor\": \"4\", \"upperCursor\": \"4\", \"hasMoreItems\": true, \"objectList\": [Sharing] } } }" + }, + { + "name": "sharings", + "type": "query", + "description": "", + "response_type": "a SharingResponse!", + "arguments": [ + { + "name": "limit", + "type": "Int", + "description": "Default = 1000", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query sharings( $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { sharings( limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...SharingFragment } } }", + "example_variables": "{\"limit\": 1000, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"}}", + "example_response": "{ \"data\": { \"sharings\": { \"lowerCursor\": \"4\", \"upperCursor\": \"4\", \"hasMoreItems\": false, \"objectList\": [Sharing] } } }" + }, + { + "name": "smartCollectionById", + "type": "query", + "description": "Retrieve Smart Collection by ID or [ID]", + "response_type": "[SmartCollection!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query smartCollectionById($id: [ID!]!) { smartCollectionById(id: $id) { id name description color lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } icon lName translations children { ...PagingResponseFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly accessControlList { ...AccessControlListFragment } searchProperties { ...SmartCollectionSearchPropertiesFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"smartCollectionById\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"color\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"icon\": 4, \"lName\": \"xyz789\", \"translations\": {}, \"children\": PagingResponse, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": true, \"accessControlList\": AccessControlList, \"searchProperties\": SmartCollectionSearchProperties } ] } }" + }, + { + "name": "smartCollections", + "type": "query", + "description": "Returns the paginated list of smart collections.", + "response_type": "a SmartCollectionPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query smartCollections( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { smartCollections( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...SmartCollectionFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 987, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"smartCollections\": { \"lowerCursor\": \"4\", \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [SmartCollection] } } }" + }, + { + "name": "streamAttachment", + "type": "query", + "description": "", + "response_type": "a Stream", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "contentDisposition", + "type": "ContentDisposition", + "description": "", + "required": false + } + ], + "example_query": "query streamAttachment( $id: ID!, $contentDisposition: ContentDisposition ) { streamAttachment( id: $id, contentDisposition: $contentDisposition ) }", + "example_variables": "{\"id\": \"4\", \"contentDisposition\": \"INLINE\"}", + "example_response": "{\"data\": {\"streamAttachment\": Stream}}" + }, + { + "name": "streamFile", + "type": "query", + "description": "Stream a subFile of an Asset", + "response_type": "a Stream", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "type", + "type": "FileType!", + "description": "", + "required": true + }, + { + "name": "revision", + "type": "Int", + "description": "Default = 0", + "required": false + }, + { + "name": "pageNumber", + "type": "Int", + "description": "Default = 1", + "required": false + }, + { + "name": "preferredResolution", + "type": "Int", + "description": "Default = 0", + "required": false + } + ], + "example_query": "query streamFile( $id: ID!, $type: FileType!, $revision: Int, $pageNumber: Int, $preferredResolution: Int ) { streamFile( id: $id, type: $type, revision: $revision, pageNumber: $pageNumber, preferredResolution: $preferredResolution ) }", + "example_variables": "{ \"id\": 4, \"type\": \"MAIN\", \"revision\": 0, \"pageNumber\": 1, \"preferredResolution\": 0 }", + "example_response": "{\"data\": {\"streamFile\": Stream}}" + }, + { + "name": "streamPreflightPreview", + "type": "query", + "description": "Retrieve the preview of a given page of the preflight report", + "response_type": "a Stream", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "pageNumber", + "type": "Int", + "description": "Default = 1", + "required": false + } + ], + "example_query": "query streamPreflightPreview( $id: ID!, $pageNumber: Int ) { streamPreflightPreview( id: $id, pageNumber: $pageNumber ) }", + "example_variables": "{\"id\": 4, \"pageNumber\": 1}", + "example_response": "{\"data\": {\"streamPreflightPreview\": Stream}}" + }, + { + "name": "streamUIFileContent", + "type": "query", + "description": "", + "response_type": "a Stream", + "arguments": [ + { + "name": "from", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "path", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "query streamUIFileContent( $from: String!, $path: String! ) { streamUIFileContent( from: $from, path: $path ) }", + "example_variables": "{ \"from\": \"abc123\", \"path\": \"xyz789\" }", + "example_response": "{\"data\": {\"streamUIFileContent\": Stream}}" + }, + { + "name": "synSetById", + "type": "query", + "description": "", + "response_type": "[SynSet!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query synSetById($id: [ID!]!) { synSetById(id: $id) { id uri label creationDate glosses sentences words { ...WordFragment } hyponyms { ...SynSetFragment } hypernyms { ...SynSetFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"synSetById\": [ { \"id\": 4, \"uri\": \"http://www.test.com/\", \"label\": \"xyz789\", \"creationDate\": \"2007-12-03T10:15:30Z\", \"glosses\": {}, \"sentences\": [{}], \"words\": [Word], \"hyponyms\": [SynSet], \"hypernyms\": [SynSet] } ] } }" + }, + { + "name": "synSetByLabel", + "type": "query", + "description": "", + "response_type": "[SynSet!]", + "arguments": [ + { + "name": "label", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query synSetByLabel($label: [ID!]!) { synSetByLabel(label: $label) { id uri label creationDate glosses sentences words { ...WordFragment } hyponyms { ...SynSetFragment } hypernyms { ...SynSetFragment } } }", + "example_variables": "{\"label\": [\"4\"]}", + "example_response": "{ \"data\": { \"synSetByLabel\": [ { \"id\": \"4\", \"uri\": \"http://www.test.com/\", \"label\": \"abc123\", \"creationDate\": \"2007-12-03T10:15:30Z\", \"glosses\": {}, \"sentences\": [{}], \"words\": [Word], \"hyponyms\": [SynSet], \"hypernyms\": [SynSet] } ] } }" + }, + { + "name": "synSetByURI", + "type": "query", + "description": "", + "response_type": "[SynSet!]", + "arguments": [ + { + "name": "uri", + "type": "[URL!]!", + "description": "", + "required": true + } + ], + "example_query": "query synSetByURI($uri: [URL!]!) { synSetByURI(uri: $uri) { id uri label creationDate glosses sentences words { ...WordFragment } hyponyms { ...SynSetFragment } hypernyms { ...SynSetFragment } } }", + "example_variables": "{\"uri\": [\"http://www.test.com/\"]}", + "example_response": "{ \"data\": { \"synSetByURI\": [ { \"id\": 4, \"uri\": \"http://www.test.com/\", \"label\": \"xyz789\", \"creationDate\": \"2007-12-03T10:15:30Z\", \"glosses\": {}, \"sentences\": [{}], \"words\": [Word], \"hyponyms\": [SynSet], \"hypernyms\": [SynSet] } ] } }" + }, + { + "name": "thesaurus", + "type": "query", + "description": "", + "response_type": "[Thesaurus!]!", + "arguments": [], + "example_query": "query thesaurus { thesaurus { id uri label lastModificationDate creationDate version langs titles descriptions topLevels { ...SynSetFragment } } }", + "example_variables": "", + "example_response": "{ \"data\": { \"thesaurus\": [ { \"id\": 4, \"uri\": \"http://www.test.com/\", \"label\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"creationDate\": \"2007-12-03T10:15:30Z\", \"version\": \"xyz789\", \"langs\": [\"ar\"], \"titles\": {}, \"descriptions\": {}, \"topLevels\": [SynSet] } ] } }" + }, + { + "name": "thesaurusById", + "type": "query", + "description": "", + "response_type": "[Thesaurus!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query thesaurusById($id: [ID!]!) { thesaurusById(id: $id) { id uri label lastModificationDate creationDate version langs titles descriptions topLevels { ...SynSetFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"thesaurusById\": [ { \"id\": 4, \"uri\": \"http://www.test.com/\", \"label\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"creationDate\": \"2007-12-03T10:15:30Z\", \"version\": \"xyz789\", \"langs\": [\"ar\"], \"titles\": {}, \"descriptions\": {}, \"topLevels\": [SynSet] } ] } }" + }, + { + "name": "thesaurusByLabel", + "type": "query", + "description": "", + "response_type": "[Thesaurus!]", + "arguments": [ + { + "name": "label", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query thesaurusByLabel($label: [ID!]!) { thesaurusByLabel(label: $label) { id uri label lastModificationDate creationDate version langs titles descriptions topLevels { ...SynSetFragment } } }", + "example_variables": "{\"label\": [\"4\"]}", + "example_response": "{ \"data\": { \"thesaurusByLabel\": [ { \"id\": \"4\", \"uri\": \"http://www.test.com/\", \"label\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"creationDate\": \"2007-12-03T10:15:30Z\", \"version\": \"abc123\", \"langs\": [\"ar\"], \"titles\": {}, \"descriptions\": {}, \"topLevels\": [SynSet] } ] } }" + }, + { + "name": "thesaurusByURI", + "type": "query", + "description": "", + "response_type": "[Thesaurus!]", + "arguments": [ + { + "name": "uri", + "type": "[URL!]!", + "description": "", + "required": true + } + ], + "example_query": "query thesaurusByURI($uri: [URL!]!) { thesaurusByURI(uri: $uri) { id uri label lastModificationDate creationDate version langs titles descriptions topLevels { ...SynSetFragment } } }", + "example_variables": "{\"uri\": [\"http://www.test.com/\"]}", + "example_response": "{ \"data\": { \"thesaurusByURI\": [ { \"id\": \"4\", \"uri\": \"http://www.test.com/\", \"label\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"creationDate\": \"2007-12-03T10:15:30Z\", \"version\": \"abc123\", \"langs\": [\"ar\"], \"titles\": {}, \"descriptions\": {}, \"topLevels\": [SynSet] } ] } }" + }, + { + "name": "trashedObjects", + "type": "query", + "description": "", + "response_type": "a TrashablePagingResponse!", + "arguments": [ + { + "name": "hideIfParentIsTrashed", + "type": "Boolean", + "description": "Default = true", + "required": false + }, + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query trashedObjects( $hideIfParentIsTrashed: Boolean, $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { trashedObjects( hideIfParentIsTrashed: $hideIfParentIsTrashed, filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...TrashableFragment } } }", + "example_variables": "{ \"hideIfParentIsTrashed\": true, \"filter\": iFilter, \"limit\": 987, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"trashedObjects\": { \"lowerCursor\": \"4\", \"upperCursor\": 4, \"hasMoreItems\": false, \"objectList\": [Trashable] } } }" + }, + { + "name": "userActionById", + "type": "query", + "description": "Get user action(s) based on ID", + "response_type": "[UserAction!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query userActionById($id: [ID!]!) { userActionById(id: $id) { id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } applyTo context enableGrouping assetMimeTypes script icon translations productionParticipants { ...ProductionParticipantFragment } workflow { ...WorkflowFragment } destination destinationCollection } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"userActionById\": [ { \"id\": 4, \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"applyTo\": \"Folder\", \"context\": \"ORIGINAL_FILE\", \"enableGrouping\": false, \"assetMimeTypes\": [\"abc123\"], \"script\": \"abc123\", \"icon\": \"xyz789\", \"translations\": {}, \"productionParticipants\": [ProductionParticipant], \"workflow\": Workflow, \"destination\": \"WORKFLOW_DRIVEN\", \"destinationCollection\": \"abc123\" } ] } }" + }, + { + "name": "userActionIconNames", + "type": "query", + "description": "** List the names of all uploaded user action icons **", + "response_type": "[String!]!", + "arguments": [], + "example_query": "query userActionIconNames { userActionIconNames }", + "example_variables": "", + "example_response": "{ \"data\": { \"userActionIconNames\": [\"abc123\"] } }" + }, + { + "name": "userActionInstancesById", + "type": "query", + "description": "** Get user action instance(s) by id **", + "response_type": "[UserActionInstance!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query userActionInstancesById($id: [ID!]!) { userActionInstancesById(id: $id) { id userAction { ...UserActionFragment } user { ...UserFragment } status startDate source { ...EntityFragment } result { ...EntityFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"userActionInstancesById\": [ { \"id\": \"4\", \"userAction\": UserAction, \"user\": User, \"status\": \"Created\", \"startDate\": \"2007-12-03T10:15:30Z\", \"source\": [Entity], \"result\": [Entity] } ] } }" + }, + { + "name": "userActionInstancesByUser", + "type": "query", + "description": "** Get user action instance(s) executed by the specified user**", + "response_type": "[UserActionInstance!]!", + "arguments": [ + { + "name": "user", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query userActionInstancesByUser($user: [ID!]!) { userActionInstancesByUser(user: $user) { id userAction { ...UserActionFragment } user { ...UserFragment } status startDate source { ...EntityFragment } result { ...EntityFragment } } }", + "example_variables": "{\"user\": [4]}", + "example_response": "{ \"data\": { \"userActionInstancesByUser\": [ { \"id\": \"4\", \"userAction\": UserAction, \"user\": User, \"status\": \"Created\", \"startDate\": \"2007-12-03T10:15:30Z\", \"source\": [Entity], \"result\": [Entity] } ] } }" + }, + { + "name": "userActions", + "type": "query", + "description": "List all user actions", + "response_type": "[UserAction!]!", + "arguments": [ + { + "name": "orderBy", + "type": "iOrderBy", + "description": "", + "required": false + } + ], + "example_query": "query userActions($orderBy: iOrderBy) { userActions(orderBy: $orderBy) { id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } applyTo context enableGrouping assetMimeTypes script icon translations productionParticipants { ...ProductionParticipantFragment } workflow { ...WorkflowFragment } destination destinationCollection } }", + "example_variables": "{\"orderBy\": iOrderBy}", + "example_response": "{ \"data\": { \"userActions\": [ { \"id\": 4, \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"applyTo\": \"Folder\", \"context\": \"ORIGINAL_FILE\", \"enableGrouping\": false, \"assetMimeTypes\": [\"abc123\"], \"script\": \"xyz789\", \"icon\": \"xyz789\", \"translations\": {}, \"productionParticipants\": [ProductionParticipant], \"workflow\": Workflow, \"destination\": \"WORKFLOW_DRIVEN\", \"destinationCollection\": \"xyz789\" } ] } }" + }, + { + "name": "userById", + "type": "query", + "description": "Retrieve user by id", + "response_type": "[User!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query userById($id: [ID!]!) { userById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } login userCanLog lang dateFormat unitResolution unitLength color image use2FA channel2FA sessionTimeout workCapacity workCapacityUnit firstName lastName email title company phone phone2 homePhone fax mobilePhone department address { ...AddressFragment } organization { ...OrganizationFragment } groups { ...GroupFragment } roles { ...RoleFragment } defaultProfile { ...UserSecurityProfileFragment } availableProfiles { ...UserSecurityProfileFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"userById\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"login\": \"abc123\", \"userCanLog\": true, \"lang\": \"ar\", \"dateFormat\": \"abc123\", \"unitResolution\": \"xyz789\", \"unitLength\": \"xyz789\", \"color\": \"xyz789\", \"image\": \"xyz789\", \"use2FA\": true, \"channel2FA\": \"AUTHENTICATOR\", \"sessionTimeout\": 123, \"workCapacity\": \"abc123\", \"workCapacityUnit\": \"xyz789\", \"firstName\": \"xyz789\", \"lastName\": \"abc123\", \"email\": \"abc123\", \"title\": \"abc123\", \"company\": \"xyz789\", \"phone\": \"abc123\", \"phone2\": \"xyz789\", \"homePhone\": \"xyz789\", \"fax\": \"abc123\", \"mobilePhone\": \"xyz789\", \"department\": \"xyz789\", \"address\": Address, \"organization\": Organization, \"groups\": [Group], \"roles\": [Role], \"defaultProfile\": UserSecurityProfile, \"availableProfiles\": [UserSecurityProfile], \"notifications\": [Notification] } ] } }" + }, + { + "name": "userConnectionByClientId", + "type": "query", + "description": "", + "response_type": "[UserConnection!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + } + ], + "example_query": "query userConnectionByClientId($id: [ID!]) { userConnectionByClientId(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } user { ...UserFragment } securityProfile { ...UserSecurityProfileFragment } expirationDate clientApplication { ...ClientApplicationFragment } authentication { ...AuthenticationFragment } sharing { ...SharingFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"userConnectionByClientId\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"user\": User, \"securityProfile\": UserSecurityProfile, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"clientApplication\": ClientApplication, \"authentication\": Authentication, \"sharing\": Sharing } ] } }" + }, + { + "name": "userConnectionById", + "type": "query", + "description": "", + "response_type": "[UserConnection!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + } + ], + "example_query": "query userConnectionById($id: [ID!]) { userConnectionById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } user { ...UserFragment } securityProfile { ...UserSecurityProfileFragment } expirationDate clientApplication { ...ClientApplicationFragment } authentication { ...AuthenticationFragment } sharing { ...SharingFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"userConnectionById\": [ { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"user\": User, \"securityProfile\": UserSecurityProfile, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"clientApplication\": ClientApplication, \"authentication\": Authentication, \"sharing\": Sharing } ] } }" + }, + { + "name": "userConnections", + "type": "query", + "description": "", + "response_type": "a UserConnectionPagingResponse", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query userConnections( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { userConnections( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...UserConnectionFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 987, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"userConnections\": { \"lowerCursor\": 4, \"upperCursor\": 4, \"hasMoreItems\": false, \"objectList\": [UserConnection] } } }" + }, + { + "name": "userNotifications", + "type": "query", + "description": "Retrieve the notifications of the current user", + "response_type": "[Notification!]", + "arguments": [ + { + "name": "onlyEnabled", + "type": "Boolean", + "description": "Default = false", + "required": false + } + ], + "example_query": "query userNotifications($onlyEnabled: Boolean) { userNotifications(onlyEnabled: $onlyEnabled) { id event } }", + "example_variables": "{\"onlyEnabled\": false}", + "example_response": "{ \"data\": { \"userNotifications\": [ { \"id\": \"4\", \"event\": \"PROJECT_CREATION\" } ] } }" + }, + { + "name": "userPreference", + "type": "query", + "description": "", + "response_type": "[UserPreference]", + "arguments": [ + { + "name": "name", + "type": "[String!]!", + "description": "", + "required": true + } + ], + "example_query": "query userPreference($name: [String!]!) { userPreference(name: $name) { id name value } }", + "example_variables": "{\"name\": [\"abc123\"]}", + "example_response": "{ \"data\": { \"userPreference\": [ { \"id\": 4, \"name\": \"abc123\", \"value\": 4 } ] } }" + }, + { + "name": "users", + "type": "query", + "description": "Retrieve visible users by the current logged user", + "response_type": "a UserPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query users( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { users( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...UserFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 123, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"users\": { \"lowerCursor\": \"4\", \"upperCursor\": \"4\", \"hasMoreItems\": true, \"objectList\": [User] } } }" + }, + { + "name": "viewingConditionById", + "type": "query", + "description": "", + "response_type": "[ViewingCondition!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query viewingConditionById($id: [ID!]!) { viewingConditionById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } parents { ...ContainerFragment } renderingIntent gamutCheck profile rgb { ...WorkingSpaceSimulationFragment } cmyk { ...WorkingSpaceSimulationFragment } gray { ...WorkingSpaceSimulationFragment } useCloseLoop closeLoop { ...CloseLoopParamsFragment } } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"viewingConditionById\": [ { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"parents\": [Container], \"renderingIntent\": \"PaperWhite\", \"gamutCheck\": true, \"profile\": \"abc123\", \"rgb\": WorkingSpaceSimulation, \"cmyk\": WorkingSpaceSimulation, \"gray\": WorkingSpaceSimulation, \"useCloseLoop\": true, \"closeLoop\": CloseLoopParams } ] } }" + }, + { + "name": "viewingConditions", + "type": "query", + "description": "", + "response_type": "a ViewingConditionPagingResponse!", + "arguments": [ + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"name\", direction : ASC}", + "required": false + } + ], + "example_query": "query viewingConditions( $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { viewingConditions( limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ViewingConditionFragment } } }", + "example_variables": "{ \"limit\": 987, \"cursor\": \"4\", \"orderBy\": {\"property\": \"name\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"viewingConditions\": { \"lowerCursor\": 4, \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [ViewingCondition] } } }" + }, + { + "name": "volumeById", + "type": "query", + "description": "Get volume(s) based on ID", + "response_type": "[Volume!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query volumeById($id: [ID!]!) { volumeById(id: $id) { id group access reference path nfsAlias smbAlias protocol server userName port } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"volumeById\": [ { \"id\": \"4\", \"group\": \"ATTACHMENT\", \"access\": \"DISABLED\", \"reference\": \"abc123\", \"path\": \"abc123\", \"nfsAlias\": \"abc123\", \"smbAlias\": \"abc123\", \"protocol\": \"FILE\", \"server\": \"xyz789\", \"userName\": \"xyz789\", \"port\": 123 } ] } }" + }, + { + "name": "volumes", + "type": "query", + "description": "List all volumes", + "response_type": "[Volume!]!", + "arguments": [], + "example_query": "query volumes { volumes { id group access reference path nfsAlias smbAlias protocol server userName port } }", + "example_variables": "", + "example_response": "{ \"data\": { \"volumes\": [ { \"id\": \"4\", \"group\": \"ATTACHMENT\", \"access\": \"DISABLED\", \"reference\": \"xyz789\", \"path\": \"xyz789\", \"nfsAlias\": \"abc123\", \"smbAlias\": \"abc123\", \"protocol\": \"FILE\", \"server\": \"abc123\", \"userName\": \"abc123\", \"port\": 987 } ] } }" + }, + { + "name": "webAuthnRegistrations", + "type": "query", + "description": "List all Webauthn registration of all users visible by the logged one.", + "response_type": "a WebAuthnPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "applicable filter", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query webAuthnRegistrations( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { webAuthnRegistrations( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...WebAuthnRegistrationFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 987, \"cursor\": \"4\", \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"webAuthnRegistrations\": { \"lowerCursor\": \"4\", \"upperCursor\": 4, \"hasMoreItems\": false, \"objectList\": [WebAuthnRegistration] } } }" + }, + { + "name": "whoami", + "type": "query", + "description": "", + "response_type": "a Whoami!", + "arguments": [], + "example_query": "query whoami { whoami { id user { ...UserFragment } securityProfile { ...UserSecurityProfileFragment } } }", + "example_variables": "", + "example_response": "{ \"data\": { \"whoami\": { \"id\": \"4\", \"user\": User, \"securityProfile\": UserSecurityProfile } } }" + }, + { + "name": "workflowEngine", + "type": "query", + "description": "Retrieve Workflow Engine infos", + "response_type": "a WorkflowEngine!", + "arguments": [ + { + "name": "url", + "type": "URL!", + "description": "", + "required": true + } + ], + "example_query": "query workflowEngine($url: URL!) { workflowEngine(url: $url) { url id capacity running activities { ...ActivityEngineFragment } activityTemplates { ...ActivityEngineTemplateFragment } } }", + "example_variables": "{\"url\": \"http://www.test.com/\"}", + "example_response": "{ \"data\": { \"workflowEngine\": { \"url\": \"http://www.test.com/\", \"id\": \"4\", \"capacity\": 123, \"running\": 987, \"activities\": [ActivityEngine], \"activityTemplates\": [ActivityEngineTemplate] } } }" + }, + { + "name": "workflows", + "type": "query", + "description": "Retrieve Workflows by filter", + "response_type": "a WorkflowPagingResponse!", + "arguments": [ + { + "name": "filter", + "type": "iFilter", + "description": "", + "required": false + }, + { + "name": "limit", + "type": "Int", + "description": "", + "required": false + }, + { + "name": "cursor", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "orderBy", + "type": "iOrderBy", + "description": "Default = {property : \"id\", direction : ASC}", + "required": false + } + ], + "example_query": "query workflows( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { workflows( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...WorkflowFragment } } }", + "example_variables": "{ \"filter\": iFilter, \"limit\": 987, \"cursor\": 4, \"orderBy\": {\"property\": \"id\", \"direction\": \"ASC\"} }", + "example_response": "{ \"data\": { \"workflows\": { \"lowerCursor\": \"4\", \"upperCursor\": 4, \"hasMoreItems\": true, \"objectList\": [Workflow] } } }" + }, + { + "name": "workflowsByEntity", + "type": "query", + "description": "", + "response_type": "[Workflow!]", + "arguments": [ + { + "name": "entityId", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "wflName", + "type": "[String!]!", + "description": "", + "required": true + } + ], + "example_query": "query workflowsByEntity( $entityId: ID!, $wflName: [String!]! ) { workflowsByEntity( entityId: $entityId, wflName: $wflName ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } priority applyOn activities { ...ActivityFragment } links { ...LinkFragment } layout { ...WorkflowLayoutFragment } parameters { ...MetadataValueFragment } onFailed { ...FailHandlerFragment } onCompletedRetention onFailedRetention } }", + "example_variables": "{\"entityId\": 4, \"wflName\": [\"xyz789\"]}", + "example_response": "{ \"data\": { \"workflowsByEntity\": [ { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"priority\": 123, \"applyOn\": \"Folder\", \"activities\": [Activity], \"links\": [Link], \"layout\": WorkflowLayout, \"parameters\": [MetadataValue], \"onFailed\": FailHandler, \"onCompletedRetention\": 123, \"onFailedRetention\": 123 } ] } }" + }, + { + "name": "workflowsById", + "type": "query", + "description": "Retrieve Workflows by ID or [ID]", + "response_type": "[Workflow!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "query workflowsById($id: [ID!]!) { workflowsById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } priority applyOn activities { ...ActivityFragment } links { ...LinkFragment } layout { ...WorkflowLayoutFragment } parameters { ...MetadataValueFragment } onFailed { ...FailHandlerFragment } onCompletedRetention onFailedRetention } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"workflowsById\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"priority\": 987, \"applyOn\": \"Folder\", \"activities\": [Activity], \"links\": [Link], \"layout\": WorkflowLayout, \"parameters\": [MetadataValue], \"onFailed\": FailHandler, \"onCompletedRetention\": 123, \"onFailedRetention\": 123 } ] } }" + }, + { + "name": "workflowsByName", + "type": "query", + "description": "Retrieve Workflows by name or [name] When revision is not defined returns the current revision, when revision is 0 returns all workflows with this name", + "response_type": "[Workflow!]", + "arguments": [ + { + "name": "name", + "type": "[String!]!", + "description": "", + "required": true + }, + { + "name": "revision", + "type": "Int", + "description": "", + "required": false + } + ], + "example_query": "query workflowsByName( $name: [String!]!, $revision: Int ) { workflowsByName( name: $name, revision: $revision ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } priority applyOn activities { ...ActivityFragment } links { ...LinkFragment } layout { ...WorkflowLayoutFragment } parameters { ...MetadataValueFragment } onFailed { ...FailHandlerFragment } onCompletedRetention onFailedRetention } }", + "example_variables": "{\"name\": [\"xyz789\"], \"revision\": 123}", + "example_response": "{ \"data\": { \"workflowsByName\": [ { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"priority\": 987, \"applyOn\": \"Folder\", \"activities\": [Activity], \"links\": [Link], \"layout\": WorkflowLayout, \"parameters\": [MetadataValue], \"onFailed\": FailHandler, \"onCompletedRetention\": 123, \"onFailedRetention\": 987 } ] } }" + }, + { + "name": "addCustomerToGroup", + "type": "mutation", + "description": "**Add one or many Customers to one group.", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation addCustomerToGroup( $id: [ID!]!, $to: ID! ) { addCustomerToGroup( id: $id, to: $to ) }", + "example_variables": "{\"id\": [\"4\"], \"to\": 4}", + "example_response": "{\"data\": {\"addCustomerToGroup\": true}}" + }, + { + "name": "addCustomerToOrganization", + "type": "mutation", + "description": "**Add one or many Customers to one Organization.", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation addCustomerToOrganization( $id: [ID!]!, $to: ID! ) { addCustomerToOrganization( id: $id, to: $to ) }", + "example_variables": "{\"id\": [4], \"to\": 4}", + "example_response": "{\"data\": {\"addCustomerToOrganization\": false}}" + }, + { + "name": "addNoteAttachment", + "type": "mutation", + "description": "If a rank is specified the attachment will be added to the reply of the given rank If an attachment ID is specified, the existing attachment will be added to the note, only if the note has no current attachments.If no attachment ID is specified, the given files will be added to the note.If neither is secified, nothing will be done", + "response_type": "a Note!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "rank", + "type": "Long", + "description": "", + "required": false + }, + { + "name": "files", + "type": "[Upload!]", + "description": "", + "required": true + }, + { + "name": "attachment", + "type": "ID", + "description": "", + "required": false + } + ], + "example_query": "mutation addNoteAttachment( $id: ID!, $rank: Long, $files: [Upload!], $attachment: ID ) { addNoteAttachment( id: $id, rank: $rank, files: $files, attachment: $attachment ) { id type objectOwnerId pageNumber lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } attachments { ...AttachmentFragment } checkable status { ...AnnotationStatusFragment } collapsed seenBy { ...UserFragment } replies { ...NoteReplyFragment } content originalContent stylizedContent positionX positionY positionZ anchorX anchorY anchorZ tx ty proofReadingMark { ...ProofReadingMarkFragment } path selectable startTime endTime } }", + "example_variables": "{ \"id\": \"4\", \"rank\": {}, \"files\": [Upload], \"attachment\": 4 }", + "example_response": "{ \"data\": { \"addNoteAttachment\": { \"id\": \"4\", \"type\": \"Note\", \"objectOwnerId\": \"4\", \"pageNumber\": {}, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"attachments\": [Attachment], \"checkable\": true, \"status\": AnnotationStatus, \"collapsed\": true, \"seenBy\": [User], \"replies\": [NoteReply], \"content\": \"abc123\", \"originalContent\": \"xyz789\", \"stylizedContent\": \"xyz789\", \"positionX\": 987.65, \"positionY\": 987.65, \"positionZ\": 123.45, \"anchorX\": 123.45, \"anchorY\": 123.45, \"anchorZ\": 987.65, \"tx\": 987.65, \"ty\": 123.45, \"proofReadingMark\": ProofReadingMark, \"path\": \"xyz789\", \"selectable\": true, \"startTime\": 123.45, \"endTime\": 987.65 } } }" + }, + { + "name": "addObjectToCollection", + "type": "mutation", + "description": "To add an object in a Collection", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "class", + "type": "CollectionableTypeName!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation addObjectToCollection( $id: [ID!]!, $class: CollectionableTypeName!, $to: ID! ) { addObjectToCollection( id: $id, class: $class, to: $to ) }", + "example_variables": "{\"id\": [4], \"class\": \"ColorSpace\", \"to\": 4}", + "example_response": "{\"data\": {\"addObjectToCollection\": true}}" + }, + { + "name": "addProfileToUser", + "type": "mutation", + "description": "Add one or many SecurityProfiles to one or many Users", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation addProfileToUser( $id: [ID!]!, $to: [ID!]! ) { addProfileToUser( id: $id, to: $to ) }", + "example_variables": "{\"id\": [\"4\"], \"to\": [4]}", + "example_response": "{\"data\": {\"addProfileToUser\": true}}" + }, + { + "name": "addRoleToUser", + "type": "mutation", + "description": "Add one or many Role(s) to one or many User(s)", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation addRoleToUser( $id: [ID!]!, $to: [ID!]! ) { addRoleToUser( id: $id, to: $to ) }", + "example_variables": "{\"id\": [\"4\"], \"to\": [4]}", + "example_response": "{\"data\": {\"addRoleToUser\": true}}" + }, + { + "name": "addUserToGroup", + "type": "mutation", + "description": "Add one or many Users to one or many Groups that are not System Groups. All the Users provided will be added to each Groups provided", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation addUserToGroup( $id: [ID!]!, $to: [ID!]! ) { addUserToGroup( id: $id, to: $to ) }", + "example_variables": "{\"id\": [\"4\"], \"to\": [4]}", + "example_response": "{\"data\": {\"addUserToGroup\": false}}" + }, + { + "name": "approve", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "The id(s) of the request approval(s) to approve", + "required": true + }, + { + "name": "comment", + "type": "String", + "description": "The comment associated to the approve action", + "required": false + }, + { + "name": "checkViewingCondition", + "type": "Boolean", + "description": "Specify if the viewing condition should be checked or not. Default = true", + "required": false + } + ], + "example_query": "mutation approve( $id: [ID!]!, $comment: String, $checkViewingCondition: Boolean ) { approve( id: $id, comment: $comment, checkViewingCondition: $checkViewingCondition ) }", + "example_variables": "{ \"id\": [4], \"comment\": \"xyz789\", \"checkViewingCondition\": true }", + "example_response": "{\"data\": {\"approve\": true}}" + }, + { + "name": "approveObject", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "The id(s) of the object(s) to approve", + "required": true + }, + { + "name": "comment", + "type": "String", + "description": "The comment associated to the approve action", + "required": false + }, + { + "name": "checkViewingCondition", + "type": "Boolean", + "description": "Specify if the viewing condition should be checked or not. Default = true", + "required": false + } + ], + "example_query": "mutation approveObject( $id: [ID!]!, $comment: String, $checkViewingCondition: Boolean ) { approveObject( id: $id, comment: $comment, checkViewingCondition: $checkViewingCondition ) }", + "example_variables": "{ \"id\": [4], \"comment\": \"xyz789\", \"checkViewingCondition\": true }", + "example_response": "{\"data\": {\"approveObject\": false}}" + }, + { + "name": "cancelCheckOutAsset", + "type": "mutation", + "description": "To cancel the checkout of an Asset", + "response_type": "[Asset!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation cancelCheckOutAsset($id: [ID!]!) { cancelCheckOutAsset(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"cancelCheckOutAsset\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"approvalSummary\": \"NONE\", \"approvalStatus\": [ApprovalActivityStatus], \"approvals\": [ApprovalCycle], \"workflowName\": \"abc123\", \"isAlias\": false, \"processes\": [Process], \"uuid\": \"xyz789\", \"priority\": 987, \"isCheckedOut\": true, \"checkedOutBy\": User, \"privateWorkingRevision\": 987, \"isArchived\": false, \"archiveId\": \"4\", \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"project\": Project, \"parents\": [Container], \"numberOfRevisions\": 123, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"medias\": [Media], \"notes\": [Note], \"relationFrom\": [Relation], \"relationTo\": [Relation], \"accessControls\": {} } ] } }" + }, + { + "name": "cancelProcess", + "type": "mutation", + "description": "To cancel a workflow", + "response_type": "[Process!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + } + ], + "example_query": "mutation cancelProcess($id: [ID!]) { cancelProcess(id: $id) { id priority status virtualStatus startTime steps { ...ActivityInstanceFragment } workflow { ...WorkflowFragment } stages { ...StageFragment } object { ...EntityFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"cancelProcess\": [ { \"id\": \"4\", \"priority\": 987, \"status\": \"Created\", \"virtualStatus\": \"xyz789\", \"startTime\": \"2007-12-03T10:15:30Z\", \"steps\": [ActivityInstance], \"workflow\": Workflow, \"stages\": [Stage], \"object\": Entity } ] } }" + }, + { + "name": "changeMyPassword", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "oldPassword", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "newPassword", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation changeMyPassword( $oldPassword: String!, $newPassword: String! ) { changeMyPassword( oldPassword: $oldPassword, newPassword: $newPassword ) }", + "example_variables": "{ \"oldPassword\": \"xyz789\", \"newPassword\": \"xyz789\" }", + "example_response": "{\"data\": {\"changeMyPassword\": true}}" + }, + { + "name": "changeMyProfile", + "type": "mutation", + "description": "", + "response_type": "a JSON!", + "arguments": [ + { + "name": "withSecurityProfile", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation changeMyProfile($withSecurityProfile: String!) { changeMyProfile(withSecurityProfile: $withSecurityProfile) }", + "example_variables": "{\"withSecurityProfile\": \"xyz789\"}", + "example_response": "{\"data\": {\"changeMyProfile\": {}}}" + }, + { + "name": "changeProcessPriority", + "type": "mutation", + "description": "To change the priority of a workflow", + "response_type": "[Process!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "priority", + "type": "Int!", + "description": "", + "required": true + } + ], + "example_query": "mutation changeProcessPriority( $id: [ID!]!, $priority: Int! ) { changeProcessPriority( id: $id, priority: $priority ) { id priority status virtualStatus startTime steps { ...ActivityInstanceFragment } workflow { ...WorkflowFragment } stages { ...StageFragment } object { ...EntityFragment } } }", + "example_variables": "{\"id\": [\"4\"], \"priority\": 123}", + "example_response": "{ \"data\": { \"changeProcessPriority\": [ { \"id\": \"4\", \"priority\": 123, \"status\": \"Created\", \"virtualStatus\": \"abc123\", \"startTime\": \"2007-12-03T10:15:30Z\", \"steps\": [ActivityInstance], \"workflow\": Workflow, \"stages\": [Stage], \"object\": Entity } ] } }" + }, + { + "name": "changeUser", + "type": "mutation", + "description": "", + "response_type": "a User!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation changeUser($name: String!) { changeUser(name: $name) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } login userCanLog lang dateFormat unitResolution unitLength color image use2FA channel2FA sessionTimeout workCapacity workCapacityUnit firstName lastName email title company phone phone2 homePhone fax mobilePhone department address { ...AddressFragment } organization { ...OrganizationFragment } groups { ...GroupFragment } roles { ...RoleFragment } defaultProfile { ...UserSecurityProfileFragment } availableProfiles { ...UserSecurityProfileFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{\"name\": \"abc123\"}", + "example_response": "{ \"data\": { \"changeUser\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"login\": \"xyz789\", \"userCanLog\": true, \"lang\": \"ar\", \"dateFormat\": \"xyz789\", \"unitResolution\": \"abc123\", \"unitLength\": \"abc123\", \"color\": \"xyz789\", \"image\": \"abc123\", \"use2FA\": true, \"channel2FA\": \"AUTHENTICATOR\", \"sessionTimeout\": 123, \"workCapacity\": \"xyz789\", \"workCapacityUnit\": \"xyz789\", \"firstName\": \"abc123\", \"lastName\": \"xyz789\", \"email\": \"xyz789\", \"title\": \"abc123\", \"company\": \"abc123\", \"phone\": \"xyz789\", \"phone2\": \"abc123\", \"homePhone\": \"abc123\", \"fax\": \"abc123\", \"mobilePhone\": \"abc123\", \"department\": \"xyz789\", \"address\": Address, \"organization\": Organization, \"groups\": [Group], \"roles\": [Role], \"defaultProfile\": UserSecurityProfile, \"availableProfiles\": [UserSecurityProfile], \"notifications\": [Notification] } } }" + }, + { + "name": "checkInAsset", + "type": "mutation", + "description": "To checkin a new version of an Asset", + "response_type": "an Asset!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "file", + "type": "Upload", + "description": "", + "required": false + }, + { + "name": "comment", + "type": "String", + "description": "", + "required": false + }, + { + "name": "asRevision", + "type": "RevisioningState", + "description": "Default = MINOR", + "required": false + } + ], + "example_query": "mutation checkInAsset( $id: ID!, $file: Upload, $comment: String, $asRevision: RevisioningState ) { checkInAsset( id: $id, file: $file, comment: $comment, asRevision: $asRevision ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } }", + "example_variables": "{ \"id\": 4, \"file\": Upload, \"comment\": \"abc123\", \"asRevision\": \"MINOR\" }", + "example_response": "{ \"data\": { \"checkInAsset\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"approvalSummary\": \"NONE\", \"approvalStatus\": [ApprovalActivityStatus], \"approvals\": [ApprovalCycle], \"workflowName\": \"abc123\", \"isAlias\": true, \"processes\": [Process], \"uuid\": \"xyz789\", \"priority\": 123, \"isCheckedOut\": true, \"checkedOutBy\": User, \"privateWorkingRevision\": 987, \"isArchived\": true, \"archiveId\": 4, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"project\": Project, \"parents\": [Container], \"numberOfRevisions\": 123, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"medias\": [Media], \"notes\": [Note], \"relationFrom\": [Relation], \"relationTo\": [Relation], \"accessControls\": {} } } }" + }, + { + "name": "checkOutAsset", + "type": "mutation", + "description": "To checkOut the Asset(s) with Id or Ids", + "response_type": "[Asset!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation checkOutAsset($id: [ID!]!) { checkOutAsset(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{ \"data\": { \"checkOutAsset\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"approvalSummary\": \"NONE\", \"approvalStatus\": [ApprovalActivityStatus], \"approvals\": [ApprovalCycle], \"workflowName\": \"abc123\", \"isAlias\": false, \"processes\": [Process], \"uuid\": \"abc123\", \"priority\": 987, \"isCheckedOut\": false, \"checkedOutBy\": User, \"privateWorkingRevision\": 123, \"isArchived\": true, \"archiveId\": 4, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"project\": Project, \"parents\": [Container], \"numberOfRevisions\": 987, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"medias\": [Media], \"notes\": [Note], \"relationFrom\": [Relation], \"relationTo\": [Relation], \"accessControls\": {} } ] } }" + }, + { + "name": "clearUserActionInstancesById", + "type": "mutation", + "description": "** Delete running or completed user action(s) specified by ID**", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "removeResult", + "type": "Boolean", + "description": "Default = false", + "required": false + } + ], + "example_query": "mutation clearUserActionInstancesById( $id: [ID!]!, $removeResult: Boolean ) { clearUserActionInstancesById( id: $id, removeResult: $removeResult ) }", + "example_variables": "{\"id\": [\"4\"], \"removeResult\": false}", + "example_response": "{\"data\": {\"clearUserActionInstancesById\": true}}" + }, + { + "name": "clearUserActionInstancesByUser", + "type": "mutation", + "description": "** Delete running or completed user action(s) linked to the specified user**", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "user", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "removeResult", + "type": "Boolean", + "description": "Default = false", + "required": false + } + ], + "example_query": "mutation clearUserActionInstancesByUser( $user: [ID!]!, $removeResult: Boolean ) { clearUserActionInstancesByUser( user: $user, removeResult: $removeResult ) }", + "example_variables": "{\"user\": [4], \"removeResult\": false}", + "example_response": "{\"data\": {\"clearUserActionInstancesByUser\": true}}" + }, + { + "name": "connectAs", + "type": "mutation", + "description": "Enable an Admin to connect to ES as another User. The response is identical to a standard login, a new AccessToken is received.", + "response_type": "a JSON!", + "arguments": [ + { + "name": "login", + "type": "String!", + "description": "login of the user", + "required": true + }, + { + "name": "withSecurityProfile", + "type": "String", + "description": "name of a securityProfile", + "required": false + }, + { + "name": "createIfNotExists", + "type": "Boolean", + "description": "Auto-created user if not exists", + "required": false + } + ], + "example_query": "mutation connectAs( $login: String!, $withSecurityProfile: String, $createIfNotExists: Boolean ) { connectAs( login: $login, withSecurityProfile: $withSecurityProfile, createIfNotExists: $createIfNotExists ) }", + "example_variables": "{ \"login\": \"abc123\", \"withSecurityProfile\": \"abc123\", \"createIfNotExists\": true }", + "example_response": "{\"data\": {\"connectAs\": {}}}" + }, + { + "name": "copyAssetToFolder", + "type": "mutation", + "description": "Duplicate an asset. WARNING It is not currently possible to copy an asset between two ProjectFolders in the same Project!", + "response_type": "[Asset!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation copyAssetToFolder( $id: [ID!]!, $to: ID! ) { copyAssetToFolder( id: $id, to: $to ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } }", + "example_variables": "{\"id\": [4], \"to\": 4}", + "example_response": "{ \"data\": { \"copyAssetToFolder\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"approvalSummary\": \"NONE\", \"approvalStatus\": [ApprovalActivityStatus], \"approvals\": [ApprovalCycle], \"workflowName\": \"xyz789\", \"isAlias\": true, \"processes\": [Process], \"uuid\": \"abc123\", \"priority\": 987, \"isCheckedOut\": false, \"checkedOutBy\": User, \"privateWorkingRevision\": 123, \"isArchived\": false, \"archiveId\": \"4\", \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"project\": Project, \"parents\": [Container], \"numberOfRevisions\": 987, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"medias\": [Media], \"notes\": [Note], \"relationFrom\": [Relation], \"relationTo\": [Relation], \"accessControls\": {} } ] } }" + }, + { + "name": "createAdminSecurityProfile", + "type": "mutation", + "description": "", + "response_type": "a UserSecurityProfile", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "description", + "type": "String", + "description": "", + "required": false + } + ], + "example_query": "mutation createAdminSecurityProfile( $name: String!, $description: String ) { createAdminSecurityProfile( name: $name, description: $description ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } securityRoles } }", + "example_variables": "{ \"name\": \"xyz789\", \"description\": \"abc123\" }", + "example_response": "{ \"data\": { \"createAdminSecurityProfile\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"properties\": [SecurityProperty], \"securityRoles\": [\"ADMIN\"] } } }" + }, + { + "name": "createAndUploadUIFile", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "in", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "parentPath", + "type": "String", + "description": "Default = \"/\"", + "required": false + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "content", + "type": "Upload!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iUIFileSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createAndUploadUIFile( $in: String!, $parentPath: String, $name: String!, $content: Upload!, $setup: iUIFileSetup ) { createAndUploadUIFile( in: $in, parentPath: $parentPath, name: $name, content: $content, setup: $setup ) }", + "example_variables": "{ \"in\": \"abc123\", \"parentPath\": \"/\", \"name\": \"xyz789\", \"content\": Upload, \"setup\": iUIFileSetup }", + "example_response": "{\"data\": {\"createAndUploadUIFile\": true}}" + }, + { + "name": "createAnnotationStatus", + "type": "mutation", + "description": "Returns an AnnotationStatus!", + "response_type": "an AnnotationStatus!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iAnnotationStatus", + "description": "", + "required": false + } + ], + "example_query": "mutation createAnnotationStatus( $name: String!, $setup: iAnnotationStatus ) { createAnnotationStatus( name: $name, setup: $setup ) { id lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } color icon isActive order translations } }", + "example_variables": "{ \"name\": \"abc123\", \"setup\": iAnnotationStatus }", + "example_response": "{ \"data\": { \"createAnnotationStatus\": { \"id\": 4, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"color\": \"xyz789\", \"icon\": \"xyz789\", \"isActive\": true, \"order\": 987, \"translations\": {} } } }" + }, + { + "name": "createAsset", + "type": "mutation", + "description": "To create an Asset.", + "response_type": "an AssetCreationStatus!", + "arguments": [ + { + "name": "in", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "name", + "type": "String", + "description": "", + "required": false + }, + { + "name": "checkedOut", + "type": "Boolean", + "description": "Default = false", + "required": false + }, + { + "name": "setup", + "type": "iAssetSetup", + "description": "", + "required": false + }, + { + "name": "input", + "type": "iInputFile", + "description": "", + "required": false + } + ], + "example_query": "mutation createAsset( $in: [ID!]!, $name: String, $checkedOut: Boolean, $setup: iAssetSetup, $input: iInputFile ) { createAsset( in: $in, name: $name, checkedOut: $checkedOut, setup: $setup, input: $input ) { created asset { ...AssetFragment } } }", + "example_variables": "{ \"in\": [\"4\"], \"name\": \"xyz789\", \"checkedOut\": false, \"setup\": iAssetSetup, \"input\": iInputFile }", + "example_response": "{ \"data\": { \"createAsset\": {\"created\": false, \"asset\": Asset} } }" + }, + { + "name": "createAssetAlias", + "type": "mutation", + "description": "To create an Asset alias where 'id' is the Asset ID and 'to' defines a project or a project subfolder ID", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation createAssetAlias( $id: [ID!]!, $to: ID! ) { createAssetAlias( id: $id, to: $to ) }", + "example_variables": "{\"id\": [4], \"to\": 4}", + "example_response": "{\"data\": {\"createAssetAlias\": false}}" + }, + { + "name": "createAuthentication", + "type": "mutation", + "description": "", + "response_type": "an Authentication!", + "arguments": [ + { + "name": "type", + "type": "AuthenticationType!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iAuthentication!", + "description": "", + "required": true + } + ], + "example_query": "mutation createAuthentication( $type: AuthenticationType!, $setup: iAuthentication! ) { createAuthentication( type: $type, setup: $setup ) { id type name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } authorizationURL tokenURL clientId isActive samlSetup { ...SAMLSetupFragment } } }", + "example_variables": "{\"type\": \"INTERNAL\", \"setup\": iAuthentication}", + "example_response": "{ \"data\": { \"createAuthentication\": { \"id\": 4, \"type\": \"INTERNAL\", \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"authorizationURL\": \"http://www.test.com/\", \"tokenURL\": \"http://www.test.com/\", \"clientId\": \"4\", \"isActive\": false, \"samlSetup\": SAMLSetup } } }" + }, + { + "name": "createClientApplication", + "type": "mutation", + "description": "", + "response_type": "a ClientApplication!", + "arguments": [ + { + "name": "setup", + "type": "iCreateClientApplication!", + "description": "", + "required": true + } + ], + "example_query": "mutation createClientApplication($setup: iCreateClientApplication!) { createClientApplication(setup: $setup) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } allowIntrospection maxQueryDepth redirectURL secret schema defaultTokenDuration algorithm { ...JWTAlgorithmFragment } } }", + "example_variables": "{\"setup\": iCreateClientApplication}", + "example_response": "{ \"data\": { \"createClientApplication\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"allowIntrospection\": true, \"maxQueryDepth\": 987, \"redirectURL\": \"http://www.test.com/\", \"secret\": \"xyz789\", \"schema\": [\"ADMIN\"], \"defaultTokenDuration\": {}, \"algorithm\": JWTAlgorithm } } }" + }, + { + "name": "createCollection", + "type": "mutation", + "description": "To create a Collection", + "response_type": "a Collection!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "setup", + "type": "iCollectionSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createCollection( $name: String!, $in: ID, $setup: iCollectionSetup ) { createCollection( name: $name, in: $in, setup: $setup ) { id name description color lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } icon lName translations children { ...PagingResponseFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly accessControlList { ...AccessControlListFragment } path { ...CollectionFragment } parents { ...ContainerFragment } destination { ...EntityFragment } } }", + "example_variables": "{ \"name\": \"abc123\", \"in\": \"4\", \"setup\": iCollectionSetup }", + "example_response": "{ \"data\": { \"createCollection\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"color\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"icon\": 4, \"lName\": \"xyz789\", \"translations\": {}, \"children\": PagingResponse, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": false, \"accessControlList\": AccessControlList, \"path\": [Collection], \"parents\": [Container], \"destination\": Entity } } }" + }, + { + "name": "createColorSpace", + "type": "mutation", + "description": "", + "response_type": "a ColorSpace!", + "arguments": [ + { + "name": "setup", + "type": "iColorSpace!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID", + "description": "", + "required": false + } + ], + "example_query": "mutation createColorSpace( $setup: iColorSpace!, $in: ID ) { createColorSpace( setup: $setup, in: $in ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } parents { ...ContainerFragment } colorEngine blackPointCompensation mixedWorkingSpace { ...ICCDestinationSelectionFragment } mixedVectorInput { ...ICCSourceSelectionFragment } mixedRasterInput { ...ICCSourceSelectionFragment } rgbWorkingSpace { ...ICCDestinationSelectionFragment } cmykWorkingSpace { ...ICCDestinationSelectionFragment } grayWorkingSpace { ...ICCDestinationSelectionFragment } } }", + "example_variables": "{\"setup\": iColorSpace, \"in\": 4}", + "example_response": "{ \"data\": { \"createColorSpace\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"parents\": [Container], \"colorEngine\": \"ADOBE_ACE\", \"blackPointCompensation\": true, \"mixedWorkingSpace\": ICCDestinationSelection, \"mixedVectorInput\": ICCSourceSelection, \"mixedRasterInput\": ICCSourceSelection, \"rgbWorkingSpace\": ICCDestinationSelection, \"cmykWorkingSpace\": ICCDestinationSelection, \"grayWorkingSpace\": ICCDestinationSelection } } }" + }, + { + "name": "createCustomActivity", + "type": "mutation", + "description": "Custom activity creation", + "response_type": "an Activity!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iActivity!", + "description": "", + "required": true + } + ], + "example_query": "mutation createCustomActivity( $name: String!, $setup: iActivity! ) { createCustomActivity( name: $name, setup: $setup ) { id name bypassed icon color category } }", + "example_variables": "{ \"name\": \"abc123\", \"setup\": iActivity }", + "example_response": "{ \"data\": { \"createCustomActivity\": { \"id\": \"4\", \"name\": \"abc123\", \"bypassed\": false, \"icon\": 4, \"color\": \"abc123\", \"category\": \"abc123\" } } }" + }, + { + "name": "createCustomer", + "type": "mutation", + "description": "Create a Customer", + "response_type": "a Customer!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "defaultProjectTemplateId", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iCustomerSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createCustomer( $name: String!, $in: ID!, $defaultProjectTemplateId: ID!, $setup: iCustomerSetup ) { createCustomer( name: $name, in: $in, defaultProjectTemplateId: $defaultProjectTemplateId, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } sites defaultSite defaultProjectTemplate { ...ProjectTemplateFragment } projectTemplates { ...ProjectTemplateFragment } code phone phone2 www fax shippingAddress { ...AddressFragment } billingAddress { ...AddressFragment } organization { ...OrganizationFragment } children { ...PagingResponseFragment } emailTemplates { ...EmailTemplateFragment } notificationTemplates { ...NotificationTemplateFragment } securityConfiguration { ...SecurityConfigurationFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{ \"name\": \"xyz789\", \"in\": 4, \"defaultProjectTemplateId\": \"4\", \"setup\": iCustomerSetup }", + "example_response": "{ \"data\": { \"createCustomer\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"sites\": [\"abc123\"], \"defaultSite\": \"xyz789\", \"defaultProjectTemplate\": ProjectTemplate, \"projectTemplates\": [ProjectTemplate], \"code\": \"xyz789\", \"phone\": \"xyz789\", \"phone2\": \"xyz789\", \"www\": \"xyz789\", \"fax\": \"xyz789\", \"shippingAddress\": Address, \"billingAddress\": Address, \"organization\": Organization, \"children\": PagingResponse, \"emailTemplates\": [EmailTemplate], \"notificationTemplates\": [NotificationTemplate], \"securityConfiguration\": SecurityConfiguration, \"notifications\": [Notification] } } }" + }, + { + "name": "createDefaultSecurityProfile", + "type": "mutation", + "description": "", + "response_type": "a UserSecurityProfile", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "description", + "type": "String", + "description": "", + "required": false + } + ], + "example_query": "mutation createDefaultSecurityProfile( $name: String!, $description: String ) { createDefaultSecurityProfile( name: $name, description: $description ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } securityRoles } }", + "example_variables": "{ \"name\": \"xyz789\", \"description\": \"abc123\" }", + "example_response": "{ \"data\": { \"createDefaultSecurityProfile\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"properties\": [SecurityProperty], \"securityRoles\": [\"ADMIN\"] } } }" + }, + { + "name": "createEmailOutputChannel", + "type": "mutation", + "description": "Create an email output channel", + "response_type": "an EmailOutputChannel!", + "arguments": [ + { + "name": "setup", + "type": "iEmailOutputChannelSetup!", + "description": "", + "required": true + }, + { + "name": "group", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation createEmailOutputChannel( $setup: iEmailOutputChannelSetup!, $group: ID! ) { createEmailOutputChannel( setup: $setup, group: $group ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } isActive to subject body specificAttachmentURL attachCurrentFile } }", + "example_variables": "{\"setup\": iEmailOutputChannelSetup, \"group\": 4}", + "example_response": "{ \"data\": { \"createEmailOutputChannel\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"isActive\": false, \"to\": [\"abc123\"], \"subject\": \"xyz789\", \"body\": \"xyz789\", \"specificAttachmentURL\": \"http://www.test.com/\", \"attachCurrentFile\": true } } }" + }, + { + "name": "createEmailTemplate", + "type": "mutation", + "description": "", + "response_type": "an EmailTemplate!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "iCustomizableEntityId", + "description": "", + "required": false + }, + { + "name": "setup", + "type": "iEmailTemplate", + "description": "", + "required": false + } + ], + "example_query": "mutation createEmailTemplate( $name: String!, $in: iCustomizableEntityId, $setup: iEmailTemplate ) { createEmailTemplate( name: $name, in: $in, setup: $setup ) { id name description parentEntity { ...WithEmailTemplateFragment } emailParts attachPreview attachPreviewsIfMultipage attachCurrentFile attachHistoryReportAllRevisions attachHistoryReportCurrentRevision attachNoteReportAllRevisions attachNoteReportCurrentRevision attachPreflightReport lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } } }", + "example_variables": "{ \"name\": \"abc123\", \"in\": iCustomizableEntityId, \"setup\": iEmailTemplate }", + "example_response": "{ \"data\": { \"createEmailTemplate\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"parentEntity\": WithEmailTemplate, \"emailParts\": {}, \"attachPreview\": false, \"attachPreviewsIfMultipage\": true, \"attachCurrentFile\": false, \"attachHistoryReportAllRevisions\": true, \"attachHistoryReportCurrentRevision\": false, \"attachNoteReportAllRevisions\": false, \"attachNoteReportCurrentRevision\": false, \"attachPreflightReport\": false, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User } } }" + }, + { + "name": "createFileOutputChannel", + "type": "mutation", + "description": "Create a file output channel", + "response_type": "a FileOutputChannel!", + "arguments": [ + { + "name": "setup", + "type": "iFileOutputChannelSetup!", + "description": "", + "required": true + }, + { + "name": "group", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation createFileOutputChannel( $setup: iFileOutputChannelSetup!, $group: ID! ) { createFileOutputChannel( setup: $setup, group: $group ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } isActive encoding protocol server userName path fileName } }", + "example_variables": "{ \"setup\": iFileOutputChannelSetup, \"group\": \"4\" }", + "example_response": "{ \"data\": { \"createFileOutputChannel\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"isActive\": true, \"encoding\": \"UTF8\", \"protocol\": \"FILE\", \"server\": \"abc123\", \"userName\": \"xyz789\", \"path\": \"xyz789\", \"fileName\": \"abc123\" } } }" + }, + { + "name": "createFileSystemVolume", + "type": "mutation", + "description": "Create a File System Volume", + "response_type": "a FileSystemVolume!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iFileSystemVolumeSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation createFileSystemVolume( $id: ID!, $setup: iFileSystemVolumeSetup! ) { createFileSystemVolume( id: $id, setup: $setup ) { id group access reference path nfsAlias smbAlias protocol server userName port host { ...HostFragment } diskId site folderRegExp folderExclRegExp fileRegExp fileExclRegExp projectTemplate { ...ProjectTemplateFragment } monitoringQueue monitoring versioning updateMetadata monitorOnBrowse accessControlList { ...AccessControlListFragment } } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iFileSystemVolumeSetup }", + "example_response": "{ \"data\": { \"createFileSystemVolume\": { \"id\": \"4\", \"group\": \"ATTACHMENT\", \"access\": \"DISABLED\", \"reference\": \"xyz789\", \"path\": \"abc123\", \"nfsAlias\": \"xyz789\", \"smbAlias\": \"xyz789\", \"protocol\": \"FILE\", \"server\": \"abc123\", \"userName\": \"abc123\", \"port\": 123, \"host\": Host, \"diskId\": \"4\", \"site\": \"abc123\", \"folderRegExp\": \"abc123\", \"folderExclRegExp\": \"abc123\", \"fileRegExp\": \"xyz789\", \"fileExclRegExp\": \"xyz789\", \"projectTemplate\": ProjectTemplate, \"monitoringQueue\": \"abc123\", \"monitoring\": true, \"versioning\": true, \"updateMetadata\": false, \"monitorOnBrowse\": true, \"accessControlList\": AccessControlList } } }" + }, + { + "name": "createFolder", + "type": "mutation", + "description": "To create a Folder", + "response_type": "a Folder!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iFolderSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createFolder( $name: String!, $in: ID!, $setup: iFolderSetup ) { createFolder( name: $name, in: $in, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly productionSettings { ...ProductionSettingsFragment } processes { ...ProcessFragment } accessControlList { ...AccessControlListFragment } children { ...PagingResponseFragment } project { ...ProjectFragment } parents { ...ContainerFragment } path { ...FolderFragment } color icon } }", + "example_variables": "{ \"name\": \"xyz789\", \"in\": 4, \"setup\": iFolderSetup }", + "example_response": "{ \"data\": { \"createFolder\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": true, \"productionSettings\": ProductionSettings, \"processes\": [Process], \"accessControlList\": AccessControlList, \"children\": PagingResponse, \"project\": Project, \"parents\": [Container], \"path\": [Folder], \"color\": \"xyz789\", \"icon\": 4 } } }" + }, + { + "name": "createFolderFromProject", + "type": "mutation", + "description": "To create a Folder from a Project in the selected Folder", + "response_type": "a Folder!", + "arguments": [ + { + "name": "projectId", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "folderId", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation createFolderFromProject( $projectId: ID!, $folderId: ID! ) { createFolderFromProject( projectId: $projectId, folderId: $folderId ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly productionSettings { ...ProductionSettingsFragment } processes { ...ProcessFragment } accessControlList { ...AccessControlListFragment } children { ...PagingResponseFragment } project { ...ProjectFragment } parents { ...ContainerFragment } path { ...FolderFragment } color icon } }", + "example_variables": "{\"projectId\": 4, \"folderId\": 4}", + "example_response": "{ \"data\": { \"createFolderFromProject\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": true, \"productionSettings\": ProductionSettings, \"processes\": [Process], \"accessControlList\": AccessControlList, \"children\": PagingResponse, \"project\": Project, \"parents\": [Container], \"path\": [Folder], \"color\": \"xyz789\", \"icon\": 4 } } }" + }, + { + "name": "createGlobalProofReadingMark", + "type": "mutation", + "description": "Returns a Boolean!", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "setup", + "type": "iProofReadingMarkSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation createGlobalProofReadingMark( $name: String!, $in: ID, $setup: iProofReadingMarkSetup! ) { createGlobalProofReadingMark( name: $name, in: $in, setup: $setup ) }", + "example_variables": "{ \"name\": \"abc123\", \"in\": 4, \"setup\": iProofReadingMarkSetup }", + "example_response": "{\"data\": {\"createGlobalProofReadingMark\": false}}" + }, + { + "name": "createGroup", + "type": "mutation", + "description": "Create a Group in the specified Organization", + "response_type": "a Group!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iGroupSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createGroup( $name: String!, $in: ID!, $setup: iGroupSetup ) { createGroup( name: $name, in: $in, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } isSystem metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } children { ...PagingResponseFragment } organization { ...OrganizationFragment } customers { ...CustomerPagingResponseFragment } } }", + "example_variables": "{ \"name\": \"xyz789\", \"in\": \"4\", \"setup\": iGroupSetup }", + "example_response": "{ \"data\": { \"createGroup\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"isSystem\": false, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"children\": PagingResponse, \"organization\": Organization, \"customers\": CustomerPagingResponse } } }" + }, + { + "name": "createInputChannel", + "type": "mutation", + "description": "", + "response_type": "an InputChannel!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "description", + "type": "String", + "description": "", + "required": false + }, + { + "name": "ruleSets", + "type": "[iChannelInputRuleSet!]", + "description": "", + "required": true + }, + { + "name": "pipes", + "type": "[iInputPipe!]", + "description": "", + "required": true + } + ], + "example_query": "mutation createInputChannel( $name: String!, $description: String, $ruleSets: [iChannelInputRuleSet!], $pipes: [iInputPipe!] ) { createInputChannel( name: $name, description: $description, ruleSets: $ruleSets, pipes: $pipes ) { id name description ruleSets { ...InputRuleSetFragment } pipes { ...InputPipeFragment } } }", + "example_variables": "{ \"name\": \"xyz789\", \"description\": \"xyz789\", \"ruleSets\": [iChannelInputRuleSet], \"pipes\": [iInputPipe] }", + "example_response": "{ \"data\": { \"createInputChannel\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"ruleSets\": [InputRuleSet], \"pipes\": [InputPipe] } } }" + }, + { + "name": "createInputRuleSet", + "type": "mutation", + "description": "", + "response_type": "an InputRuleSet!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iInputRuleSet", + "description": "", + "required": false + } + ], + "example_query": "mutation createInputRuleSet( $name: String!, $setup: iInputRuleSet ) { createInputRuleSet( name: $name, setup: $setup ) { id name description rules { ...InputRuleFragment } } }", + "example_variables": "{ \"name\": \"xyz789\", \"setup\": iInputRuleSet }", + "example_response": "{ \"data\": { \"createInputRuleSet\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"abc123\", \"rules\": [InputRule] } } }" + }, + { + "name": "createLayout", + "type": "mutation", + "description": "Create a layout", + "response_type": "a Layout!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "type", + "type": "LayoutType", + "description": "Default = ENTITY", + "required": false + }, + { + "name": "setup", + "type": "iLayoutSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation createLayout( $name: String!, $type: LayoutType, $setup: iLayoutSetup! ) { createLayout( name: $name, type: $type, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } type applyTo priority layout translations icon } }", + "example_variables": "{ \"name\": \"xyz789\", \"type\": \"ENTITY\", \"setup\": iLayoutSetup }", + "example_response": "{ \"data\": { \"createLayout\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"type\": \"ENTITY\", \"applyTo\": [\"Folder\"], \"priority\": 123, \"layout\": {}, \"translations\": {}, \"icon\": 4 } } }" + }, + { + "name": "createMetadataDefinition", + "type": "mutation", + "description": "To create a metadata definition", + "response_type": "a MetadataDefinition", + "arguments": [ + { + "name": "in", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iMetadataDefinition", + "description": "", + "required": false + } + ], + "example_query": "mutation createMetadataDefinition( $in: ID!, $name: String!, $setup: iMetadataDefinition ) { createMetadataDefinition( in: $in, name: $name, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } nameSpace { ...MetadataNameSpaceFragment } type cardinality struct { ...MetadataDefinitionFragment } lName translations searchable availableInLayout saveInXmp required unique editable dictionary { ...DictionaryFragment } minRange maxRange minChar maxChar regex defaultValue } }", + "example_variables": "{ \"in\": 4, \"name\": \"abc123\", \"setup\": iMetadataDefinition }", + "example_response": "{ \"data\": { \"createMetadataDefinition\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"nameSpace\": MetadataNameSpace, \"type\": \"BOOLEAN\", \"cardinality\": \"SINGLE\", \"struct\": [MetadataDefinition], \"lName\": \"xyz789\", \"translations\": {}, \"searchable\": true, \"availableInLayout\": true, \"saveInXmp\": true, \"required\": false, \"unique\": false, \"editable\": true, \"dictionary\": Dictionary, \"minRange\": Number, \"maxRange\": Number, \"minChar\": Number, \"maxChar\": Number, \"regex\": \"abc123\", \"defaultValue\": {} } } }" + }, + { + "name": "createMetadataNameSpace", + "type": "mutation", + "description": "To create a metadata nameSpace", + "response_type": "a MetadataNameSpace", + "arguments": [ + { + "name": "uri", + "type": "URL!", + "description": "URI of the nameSpace must end with either / or #", + "required": true + }, + { + "name": "prefix", + "type": "String!", + "description": "Preferred prefix of the name Space", + "required": true + }, + { + "name": "setup", + "type": "iMetadataNameSpaceCreation", + "description": "Definition of parameters. Default = {searchable : true, availableInLayout : true, saveInXmp : false}", + "required": false + }, + { + "name": "in", + "type": "ID", + "description": "Id of a folder into which to create the nameSpace", + "required": false + }, + { + "name": "metadatas", + "type": "[iCreateMetadata!]", + "description": "List of metadata definition that will be created in the same Transaction", + "required": true + } + ], + "example_query": "mutation createMetadataNameSpace( $uri: URL!, $prefix: String!, $setup: iMetadataNameSpaceCreation, $in: ID, $metadatas: [iCreateMetadata!] ) { createMetadataNameSpace( uri: $uri, prefix: $prefix, setup: $setup, in: $in, metadatas: $metadatas ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } uri prefix metadataDefs { ...MetadataDefinitionFragment } lName translations searchable availableInLayout saveInXmp } }", + "example_variables": "{ \"uri\": \"http://www.test.com/\", \"prefix\": \"xyz789\", \"setup\": { \"searchable\": \"true\", \"availableInLayout\": \"true\", \"saveInXmp\": \"false\" }, \"in\": 4, \"metadatas\": [iCreateMetadata] }", + "example_response": "{ \"data\": { \"createMetadataNameSpace\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"uri\": \"http://www.test.com/\", \"prefix\": \"abc123\", \"metadataDefs\": [MetadataDefinition], \"lName\": \"xyz789\", \"translations\": {}, \"searchable\": true, \"availableInLayout\": true, \"saveInXmp\": true } } }" + }, + { + "name": "createMilestone", + "type": "mutation", + "description": "To create a Milestone", + "response_type": "an Activity!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iActivity!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID", + "description": "", + "required": false + } + ], + "example_query": "mutation createMilestone( $name: String!, $setup: iActivity!, $in: ID ) { createMilestone( name: $name, setup: $setup, in: $in ) { id name bypassed icon color category } }", + "example_variables": "{ \"name\": \"xyz789\", \"setup\": iActivity, \"in\": \"4\" }", + "example_response": "{ \"data\": { \"createMilestone\": { \"id\": \"4\", \"name\": \"xyz789\", \"bypassed\": false, \"icon\": \"4\", \"color\": \"xyz789\", \"category\": \"abc123\" } } }" + }, + { + "name": "createNamedSearchFilter", + "type": "mutation", + "description": "", + "response_type": "a NamedSearchFilter!", + "arguments": [ + { + "name": "name", + "type": "String", + "description": "", + "required": false + }, + { + "name": "in", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "filter", + "type": "iSearchFilter!", + "description": "", + "required": true + } + ], + "example_query": "mutation createNamedSearchFilter( $name: String, $in: ID, $filter: iSearchFilter! ) { createNamedSearchFilter( name: $name, in: $in, filter: $filter ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } filter { ...SearchFilterFragment } } }", + "example_variables": "{ \"name\": \"xyz789\", \"in\": \"4\", \"filter\": iSearchFilter }", + "example_response": "{ \"data\": { \"createNamedSearchFilter\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"filter\": SearchFilter } } }" + }, + { + "name": "createNote", + "type": "mutation", + "description": "Returns [Note!]!", + "response_type": "[Note!]!", + "arguments": [ + { + "name": "on", + "type": "[ID!]!", + "description": "The id(s) of the object : Asset, Project, Media", + "required": true + }, + { + "name": "type", + "type": "NoteType!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iNoteSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation createNote( $on: [ID!]!, $type: NoteType!, $setup: iNoteSetup! ) { createNote( on: $on, type: $type, setup: $setup ) { id type objectOwnerId pageNumber lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } attachments { ...AttachmentFragment } checkable status { ...AnnotationStatusFragment } collapsed seenBy { ...UserFragment } replies { ...NoteReplyFragment } content originalContent stylizedContent positionX positionY positionZ anchorX anchorY anchorZ tx ty proofReadingMark { ...ProofReadingMarkFragment } path selectable startTime endTime } }", + "example_variables": "{ \"on\": [\"4\"], \"type\": \"Note\", \"setup\": iNoteSetup }", + "example_response": "{ \"data\": { \"createNote\": [ { \"id\": \"4\", \"type\": \"Note\", \"objectOwnerId\": \"4\", \"pageNumber\": {}, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"attachments\": [Attachment], \"checkable\": true, \"status\": AnnotationStatus, \"collapsed\": true, \"seenBy\": [User], \"replies\": [NoteReply], \"content\": \"xyz789\", \"originalContent\": \"xyz789\", \"stylizedContent\": \"abc123\", \"positionX\": 123.45, \"positionY\": 123.45, \"positionZ\": 123.45, \"anchorX\": 123.45, \"anchorY\": 987.65, \"anchorZ\": 123.45, \"tx\": 987.65, \"ty\": 987.65, \"proofReadingMark\": ProofReadingMark, \"path\": \"abc123\", \"selectable\": true, \"startTime\": 123.45, \"endTime\": 987.65 } ] } }" + }, + { + "name": "createNotificationTemplate", + "type": "mutation", + "description": "", + "response_type": "a NotificationTemplate!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "event", + "type": "iEmailTemplateNotificationEvent!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "iCustomizableEntityId", + "description": "", + "required": false + }, + { + "name": "setup", + "type": "iNotificationEmailTemplate", + "description": "", + "required": false + } + ], + "example_query": "mutation createNotificationTemplate( $name: String!, $event: iEmailTemplateNotificationEvent!, $in: iCustomizableEntityId, $setup: iNotificationEmailTemplate ) { createNotificationTemplate( name: $name, event: $event, in: $in, setup: $setup ) { id name event { ... on ApprovalNotificationTemplateEvent { ...ApprovalNotificationTemplateEventFragment } ... on MilestoneNotificationTemplateEvent { ...MilestoneNotificationTemplateEventFragment } ... on BaseNotificationTemplateEvent { ...BaseNotificationTemplateEventFragment } } emailTemplate { ...EmailTemplateFragment } parentEntity { ...WithEmailTemplateFragment } lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } } }", + "example_variables": "{ \"name\": \"xyz789\", \"event\": iEmailTemplateNotificationEvent, \"in\": iCustomizableEntityId, \"setup\": iNotificationEmailTemplate }", + "example_response": "{ \"data\": { \"createNotificationTemplate\": { \"id\": 4, \"name\": \"abc123\", \"event\": ApprovalNotificationTemplateEvent, \"emailTemplate\": EmailTemplate, \"parentEntity\": WithEmailTemplate, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User } } }" + }, + { + "name": "createOrganization", + "type": "mutation", + "description": "Create an Organization in the specified Organization", + "response_type": "an Organization!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iOrganizationSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createOrganization( $name: String!, $in: ID!, $setup: iOrganizationSetup ) { createOrganization( name: $name, in: $in, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } children { ...PagingResponseFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } phone phone2 www fax shippingAddress { ...AddressFragment } billingAddress { ...AddressFragment } organization { ...OrganizationFragment } customers { ...CustomerFragment } emailTemplates { ...EmailTemplateFragment } notificationTemplates { ...NotificationTemplateFragment } ldapConfiguration { ...LDAPConfigurationFragment } applySecurityConfigToSubOrganization securityConfiguration { ...SecurityConfigurationFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{ \"name\": \"xyz789\", \"in\": \"4\", \"setup\": iOrganizationSetup }", + "example_response": "{ \"data\": { \"createOrganization\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"children\": PagingResponse, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"phone\": \"xyz789\", \"phone2\": \"abc123\", \"www\": \"abc123\", \"fax\": \"xyz789\", \"shippingAddress\": Address, \"billingAddress\": Address, \"organization\": Organization, \"customers\": [Customer], \"emailTemplates\": [EmailTemplate], \"notificationTemplates\": [NotificationTemplate], \"ldapConfiguration\": LDAPConfiguration, \"applySecurityConfigToSubOrganization\": false, \"securityConfiguration\": SecurityConfiguration, \"notifications\": [Notification] } } }" + }, + { + "name": "createOutputChannelGroup", + "type": "mutation", + "description": "Create an output channel group Note that it is possible to create an empty channel group", + "response_type": "an OutputChannelGroup!", + "arguments": [ + { + "name": "setup", + "type": "iOutputChannelGroupSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createOutputChannelGroup($setup: iOutputChannelGroupSetup) { createOutputChannelGroup(setup: $setup) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } outputChannels { ...OutputChannelFragment } } }", + "example_variables": "{\"setup\": iOutputChannelGroupSetup}", + "example_response": "{ \"data\": { \"createOutputChannelGroup\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"outputChannels\": [OutputChannel] } } }" + }, + { + "name": "createPrivateProofReadingMark", + "type": "mutation", + "description": "Returns a Boolean!", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "setup", + "type": "iProofReadingMarkSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation createPrivateProofReadingMark( $name: String!, $in: ID, $setup: iProofReadingMarkSetup! ) { createPrivateProofReadingMark( name: $name, in: $in, setup: $setup ) }", + "example_variables": "{ \"name\": \"abc123\", \"in\": \"4\", \"setup\": iProofReadingMarkSetup }", + "example_response": "{\"data\": {\"createPrivateProofReadingMark\": true}}" + }, + { + "name": "createProject", + "type": "mutation", + "description": "security role handle by the mutationFetcher itself To create a Project for a Customer with a name", + "response_type": "a Project!", + "arguments": [ + { + "name": "customerId", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iProjectSetup", + "description": "", + "required": false + }, + { + "name": "inputs", + "type": "[iInputFile!]", + "description": "", + "required": true + } + ], + "example_query": "mutation createProject( $customerId: ID!, $name: String!, $setup: iProjectSetup, $inputs: [iInputFile!] ) { createProject( customerId: $customerId, name: $name, setup: $setup, inputs: $inputs ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } endDate metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status workflowName approvalStatus { ...ApprovalActivityStatusFragment } approvalSummary approvals { ...ApprovalCycleFragment } assetApprovals { ...ApprovalCycleFragment } children { ...PagingResponseFragment } assetWorkflow { ...WorkflowFragment } processes { ...ProcessFragment } projectTemplate { ...ProjectTemplateFragment } priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } reversedView customer { ...CustomerFragment } parents { ...ContainerFragment } mainAsset { ...AssetFragment } siteId productionParticipants { ...ProductionParticipantFragment } notes { ...NoteFragment } trimmedHeight trimmedWidth nbPages accessControls deadlines { ...ProjectDeadlineFragment } } }", + "example_variables": "{ \"customerId\": \"4\", \"name\": \"xyz789\", \"setup\": iProjectSetup, \"inputs\": [iInputFile] }", + "example_response": "{ \"data\": { \"createProject\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"endDate\": \"2007-12-03T10:15:30Z\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"workflowName\": \"xyz789\", \"approvalStatus\": [ApprovalActivityStatus], \"approvalSummary\": \"NONE\", \"approvals\": [ApprovalCycle], \"assetApprovals\": [ApprovalCycle], \"children\": PagingResponse, \"assetWorkflow\": Workflow, \"processes\": [Process], \"projectTemplate\": ProjectTemplate, \"priority\": 987, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"reversedView\": true, \"customer\": Customer, \"parents\": [Container], \"mainAsset\": Asset, \"siteId\": \"4\", \"productionParticipants\": [ProductionParticipant], \"notes\": [Note], \"trimmedHeight\": 123.45, \"trimmedWidth\": 123.45, \"nbPages\": 987, \"accessControls\": {}, \"deadlines\": [ProjectDeadline] } } }" + }, + { + "name": "createProjectFolder", + "type": "mutation", + "description": "To create a ProjectFolder - Note: reusing iFoldersetup for now as iProjectFolderSetup would be identical", + "response_type": "a ProjectFolder!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iFolderSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createProjectFolder( $name: String!, $in: ID!, $setup: iFolderSetup ) { createProjectFolder( name: $name, in: $in, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly productionSettings { ...ProductionSettingsFragment } processes { ...ProcessFragment } accessControlList { ...AccessControlListFragment } children { ...PagingResponseFragment } project { ...ProjectFragment } parents { ...ContainerFragment } path { ...ProjectFolderFragment } color icon } }", + "example_variables": "{ \"name\": \"abc123\", \"in\": \"4\", \"setup\": iFolderSetup }", + "example_response": "{ \"data\": { \"createProjectFolder\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": false, \"productionSettings\": ProductionSettings, \"processes\": [Process], \"accessControlList\": AccessControlList, \"children\": PagingResponse, \"project\": Project, \"parents\": [Container], \"path\": [ProjectFolder], \"color\": \"xyz789\", \"icon\": \"4\" } } }" + }, + { + "name": "createProjectFromFolder", + "type": "mutation", + "description": "To create a project from an existing filesystem Folder", + "response_type": "a Project!", + "arguments": [ + { + "name": "folderId", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "customerId", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iProjectSetup", + "description": "", + "required": false + }, + { + "name": "processWorkflow", + "type": "Boolean", + "description": "Default = true", + "required": false + } + ], + "example_query": "mutation createProjectFromFolder( $folderId: ID!, $customerId: ID!, $name: String!, $setup: iProjectSetup, $processWorkflow: Boolean ) { createProjectFromFolder( folderId: $folderId, customerId: $customerId, name: $name, setup: $setup, processWorkflow: $processWorkflow ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } endDate metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status workflowName approvalStatus { ...ApprovalActivityStatusFragment } approvalSummary approvals { ...ApprovalCycleFragment } assetApprovals { ...ApprovalCycleFragment } children { ...PagingResponseFragment } assetWorkflow { ...WorkflowFragment } processes { ...ProcessFragment } projectTemplate { ...ProjectTemplateFragment } priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } reversedView customer { ...CustomerFragment } parents { ...ContainerFragment } mainAsset { ...AssetFragment } siteId productionParticipants { ...ProductionParticipantFragment } notes { ...NoteFragment } trimmedHeight trimmedWidth nbPages accessControls deadlines { ...ProjectDeadlineFragment } } }", + "example_variables": "{ \"folderId\": 4, \"customerId\": 4, \"name\": \"xyz789\", \"setup\": iProjectSetup, \"processWorkflow\": true }", + "example_response": "{ \"data\": { \"createProjectFromFolder\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"endDate\": \"2007-12-03T10:15:30Z\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"workflowName\": \"xyz789\", \"approvalStatus\": [ApprovalActivityStatus], \"approvalSummary\": \"NONE\", \"approvals\": [ApprovalCycle], \"assetApprovals\": [ApprovalCycle], \"children\": PagingResponse, \"assetWorkflow\": Workflow, \"processes\": [Process], \"projectTemplate\": ProjectTemplate, \"priority\": 123, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"reversedView\": true, \"customer\": Customer, \"parents\": [Container], \"mainAsset\": Asset, \"siteId\": 4, \"productionParticipants\": [ProductionParticipant], \"notes\": [Note], \"trimmedHeight\": 987.65, \"trimmedWidth\": 123.45, \"nbPages\": 987, \"accessControls\": {}, \"deadlines\": [ProjectDeadline] } } }" + }, + { + "name": "createProjectTemplate", + "type": "mutation", + "description": "To create a ProjectTemplate", + "response_type": "a ProjectTemplate!", + "arguments": [ + { + "name": "setup", + "type": "iProjectTemplateSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createProjectTemplate($setup: iProjectTemplateSetup) { createProjectTemplate(setup: $setup) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } friendlyName priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } assetWorkflow { ...WorkflowFragment } projectWorkflow { ...WorkflowFragment } productionParticipants { ...ProductionParticipantFragment } assetApprovals { ...ApprovalCycleFragment } projectApprovals { ...ApprovalCycleFragment } deadlines { ...ProjectDeadlineFragment } skipWeekend } }", + "example_variables": "{\"setup\": iProjectTemplateSetup}", + "example_response": "{ \"data\": { \"createProjectTemplate\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"friendlyName\": \"xyz789\", \"priority\": 987, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"assetWorkflow\": Workflow, \"projectWorkflow\": Workflow, \"productionParticipants\": [ProductionParticipant], \"assetApprovals\": [ApprovalCycle], \"projectApprovals\": [ApprovalCycle], \"deadlines\": [ProjectDeadline], \"skipWeekend\": true } } }" + }, + { + "name": "createRelation", + "type": "mutation", + "description": "To create Relations between 1 source Entity and one or more target Entities", + "response_type": "[Relation!]", + "arguments": [ + { + "name": "from", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iRelationSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createRelation( $from: ID!, $to: [ID!]!, $setup: iRelationSetup ) { createRelation( from: $from, to: $to, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } from { ...WithRelationFragment } to { ...WithRelationFragment } } }", + "example_variables": "{ \"from\": 4, \"to\": [\"4\"], \"setup\": iRelationSetup }", + "example_response": "{ \"data\": { \"createRelation\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"from\": WithRelation, \"to\": WithRelation } ] } }" + }, + { + "name": "createRole", + "type": "mutation", + "description": "Create a Role", + "response_type": "a Role!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iRoleSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createRole( $name: String!, $setup: iRoleSetup ) { createRole( name: $name, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{ \"name\": \"xyz789\", \"setup\": iRoleSetup }", + "example_response": "{ \"data\": { \"createRole\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"notifications\": [Notification] } } }" + }, + { + "name": "createSchemaExtension", + "type": "mutation", + "description": "", + "response_type": "a SchemaExtension!", + "arguments": [ + { + "name": "setup", + "type": "iSchemaExtension!", + "description": "", + "required": true + } + ], + "example_query": "mutation createSchemaExtension($setup: iSchemaExtension!) { createSchemaExtension(setup: $setup) { id type executionType name newOperation operations script securityRole usableInSharing } }", + "example_variables": "{\"setup\": iSchemaExtension}", + "example_response": "{ \"data\": { \"createSchemaExtension\": { \"id\": 4, \"type\": \"QUERY\", \"executionType\": \"GRAPHQL\", \"name\": \"xyz789\", \"newOperation\": \"abc123\", \"operations\": [\"abc123\"], \"script\": \"abc123\", \"securityRole\": \"ADMIN\", \"usableInSharing\": false } } }" + }, + { + "name": "createSecurityProfileMask", + "type": "mutation", + "description": "", + "response_type": "a SecurityProfileMask", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iSecurityProfileMask", + "description": "", + "required": false + } + ], + "example_query": "mutation createSecurityProfileMask( $name: String!, $setup: iSecurityProfileMask ) { createSecurityProfileMask( name: $name, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } } }", + "example_variables": "{ \"name\": \"abc123\", \"setup\": iSecurityProfileMask }", + "example_response": "{ \"data\": { \"createSecurityProfileMask\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"properties\": [SecurityProperty] } } }" + }, + { + "name": "createSmartCollection", + "type": "mutation", + "description": "To create a SmartCollection", + "response_type": "a SmartCollection!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iSmartCollectionSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createSmartCollection( $name: String!, $setup: iSmartCollectionSetup ) { createSmartCollection( name: $name, setup: $setup ) { id name description color lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } icon lName translations children { ...PagingResponseFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly accessControlList { ...AccessControlListFragment } searchProperties { ...SmartCollectionSearchPropertiesFragment } } }", + "example_variables": "{ \"name\": \"abc123\", \"setup\": iSmartCollectionSetup }", + "example_response": "{ \"data\": { \"createSmartCollection\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"color\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"icon\": 4, \"lName\": \"abc123\", \"translations\": {}, \"children\": PagingResponse, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": true, \"accessControlList\": AccessControlList, \"searchProperties\": SmartCollectionSearchProperties } } }" + }, + { + "name": "createSynSet", + "type": "mutation", + "description": "", + "response_type": "a SynSet!", + "arguments": [ + { + "name": "thesaurusId", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "label", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "uri", + "type": "URL", + "description": "", + "required": false + }, + { + "name": "in", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "words", + "type": "[iWord!]", + "description": "", + "required": true + }, + { + "name": "glosses", + "type": "[iWord!]", + "description": "", + "required": true + }, + { + "name": "sentences", + "type": "[iWord!]", + "description": "", + "required": true + } + ], + "example_query": "mutation createSynSet( $thesaurusId: ID!, $label: String!, $uri: URL, $in: ID, $words: [iWord!], $glosses: [iWord!], $sentences: [iWord!] ) { createSynSet( thesaurusId: $thesaurusId, label: $label, uri: $uri, in: $in, words: $words, glosses: $glosses, sentences: $sentences ) { id uri label creationDate glosses sentences words { ...WordFragment } hyponyms { ...SynSetFragment } hypernyms { ...SynSetFragment } } }", + "example_variables": "{ \"thesaurusId\": \"4\", \"label\": \"xyz789\", \"uri\": \"http://www.test.com/\", \"in\": 4, \"words\": [iWord], \"glosses\": [iWord], \"sentences\": [iWord] }", + "example_response": "{ \"data\": { \"createSynSet\": { \"id\": \"4\", \"uri\": \"http://www.test.com/\", \"label\": \"xyz789\", \"creationDate\": \"2007-12-03T10:15:30Z\", \"glosses\": {}, \"sentences\": [{}], \"words\": [Word], \"hyponyms\": [SynSet], \"hypernyms\": [SynSet] } } }" + }, + { + "name": "createThesaurus", + "type": "mutation", + "description": "", + "response_type": "a Thesaurus!", + "arguments": [ + { + "name": "uri", + "type": "URL!", + "description": "", + "required": true + }, + { + "name": "label", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "version", + "type": "String", + "description": "", + "required": false + }, + { + "name": "titles", + "type": "[iWord!]", + "description": "", + "required": true + }, + { + "name": "descriptions", + "type": "[iWord!]", + "description": "", + "required": true + } + ], + "example_query": "mutation createThesaurus( $uri: URL!, $label: String!, $version: String, $titles: [iWord!], $descriptions: [iWord!] ) { createThesaurus( uri: $uri, label: $label, version: $version, titles: $titles, descriptions: $descriptions ) { id uri label lastModificationDate creationDate version langs titles descriptions topLevels { ...SynSetFragment } } }", + "example_variables": "{ \"uri\": \"http://www.test.com/\", \"label\": \"abc123\", \"version\": \"abc123\", \"titles\": [iWord], \"descriptions\": [iWord] }", + "example_response": "{ \"data\": { \"createThesaurus\": { \"id\": \"4\", \"uri\": \"http://www.test.com/\", \"label\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"creationDate\": \"2007-12-03T10:15:30Z\", \"version\": \"abc123\", \"langs\": [\"ar\"], \"titles\": {}, \"descriptions\": {}, \"topLevels\": [SynSet] } } }" + }, + { + "name": "createUIFile", + "type": "mutation", + "description": "", + "response_type": "an UIProjectFile!", + "arguments": [ + { + "name": "in", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "parentPath", + "type": "String", + "description": "Default = \"/\"", + "required": false + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "content", + "type": "String", + "description": "", + "required": false + }, + { + "name": "setup", + "type": "iUIFileSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createUIFile( $in: String!, $parentPath: String, $name: String!, $content: String, $setup: iUIFileSetup ) { createUIFile( in: $in, parentPath: $parentPath, name: $name, content: $content, setup: $setup ) { isFolder name path id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } uiProject { ...UIProjectFragment } labels mimeType metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } translations } }", + "example_variables": "{ \"in\": \"xyz789\", \"parentPath\": \"/\", \"name\": \"xyz789\", \"content\": \"xyz789\", \"setup\": iUIFileSetup }", + "example_response": "{ \"data\": { \"createUIFile\": { \"isFolder\": false, \"name\": \"abc123\", \"path\": \"xyz789\", \"id\": \"4\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"uiProject\": UIProject, \"labels\": [\"xyz789\"], \"mimeType\": \"xyz789\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"translations\": {} } } }" + }, + { + "name": "createUIFolder", + "type": "mutation", + "description": "", + "response_type": "an UIProjectFile", + "arguments": [ + { + "name": "in", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "parentPath", + "type": "String", + "description": "Default = \"/\"", + "required": false + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation createUIFolder( $in: String!, $parentPath: String, $name: String! ) { createUIFolder( in: $in, parentPath: $parentPath, name: $name ) { isFolder name path id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } uiProject { ...UIProjectFragment } labels mimeType metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } translations } }", + "example_variables": "{ \"in\": \"xyz789\", \"parentPath\": \"/\", \"name\": \"xyz789\" }", + "example_response": "{ \"data\": { \"createUIFolder\": { \"isFolder\": true, \"name\": \"abc123\", \"path\": \"abc123\", \"id\": 4, \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"uiProject\": UIProject, \"labels\": [\"abc123\"], \"mimeType\": \"abc123\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"translations\": {} } } }" + }, + { + "name": "createUIProject", + "type": "mutation", + "description": "", + "response_type": "an UIProject", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation createUIProject($name: String!) { createUIProject(name: $name) { name id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } type icon labels translations } }", + "example_variables": "{\"name\": \"xyz789\"}", + "example_response": "{ \"data\": { \"createUIProject\": { \"name\": \"abc123\", \"id\": 4, \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"type\": \"xyz789\", \"icon\": \"abc123\", \"labels\": [\"xyz789\"], \"translations\": {} } } }" + }, + { + "name": "createUIProjectWithType", + "type": "mutation", + "description": "", + "response_type": "an UIProject", + "arguments": [ + { + "name": "setup", + "type": "iUIProjectCreateSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createUIProjectWithType($setup: iUIProjectCreateSetup) { createUIProjectWithType(setup: $setup) { name id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } type icon labels translations } }", + "example_variables": "{\"setup\": iUIProjectCreateSetup}", + "example_response": "{ \"data\": { \"createUIProjectWithType\": { \"name\": \"xyz789\", \"id\": \"4\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"type\": \"xyz789\", \"icon\": \"abc123\", \"labels\": [\"abc123\"], \"translations\": {} } } }" + }, + { + "name": "createUser", + "type": "mutation", + "description": "Create an User in the specified Organization", + "response_type": "a User!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iCreateUserSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation createUser( $name: String!, $in: ID!, $setup: iCreateUserSetup ) { createUser( name: $name, in: $in, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } login userCanLog lang dateFormat unitResolution unitLength color image use2FA channel2FA sessionTimeout workCapacity workCapacityUnit firstName lastName email title company phone phone2 homePhone fax mobilePhone department address { ...AddressFragment } organization { ...OrganizationFragment } groups { ...GroupFragment } roles { ...RoleFragment } defaultProfile { ...UserSecurityProfileFragment } availableProfiles { ...UserSecurityProfileFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{ \"name\": \"abc123\", \"in\": 4, \"setup\": iCreateUserSetup }", + "example_response": "{ \"data\": { \"createUser\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"login\": \"xyz789\", \"userCanLog\": false, \"lang\": \"ar\", \"dateFormat\": \"abc123\", \"unitResolution\": \"xyz789\", \"unitLength\": \"xyz789\", \"color\": \"xyz789\", \"image\": \"abc123\", \"use2FA\": true, \"channel2FA\": \"AUTHENTICATOR\", \"sessionTimeout\": 123, \"workCapacity\": \"xyz789\", \"workCapacityUnit\": \"xyz789\", \"firstName\": \"xyz789\", \"lastName\": \"xyz789\", \"email\": \"abc123\", \"title\": \"xyz789\", \"company\": \"xyz789\", \"phone\": \"xyz789\", \"phone2\": \"xyz789\", \"homePhone\": \"abc123\", \"fax\": \"xyz789\", \"mobilePhone\": \"abc123\", \"department\": \"abc123\", \"address\": Address, \"organization\": Organization, \"groups\": [Group], \"roles\": [Role], \"defaultProfile\": UserSecurityProfile, \"availableProfiles\": [UserSecurityProfile], \"notifications\": [Notification] } } }" + }, + { + "name": "createUserAction", + "type": "mutation", + "description": "** Create a user action**", + "response_type": "a UserAction!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iUserAction!", + "description": "", + "required": true + } + ], + "example_query": "mutation createUserAction( $id: ID!, $setup: iUserAction! ) { createUserAction( id: $id, setup: $setup ) { id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } applyTo context enableGrouping assetMimeTypes script icon translations productionParticipants { ...ProductionParticipantFragment } workflow { ...WorkflowFragment } destination destinationCollection } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iUserAction }", + "example_response": "{ \"data\": { \"createUserAction\": { \"id\": \"4\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"applyTo\": \"Folder\", \"context\": \"ORIGINAL_FILE\", \"enableGrouping\": true, \"assetMimeTypes\": [\"abc123\"], \"script\": \"abc123\", \"icon\": \"abc123\", \"translations\": {}, \"productionParticipants\": [ProductionParticipant], \"workflow\": Workflow, \"destination\": \"WORKFLOW_DRIVEN\", \"destinationCollection\": \"xyz789\" } } }" + }, + { + "name": "createUserSecurityProfile", + "type": "mutation", + "description": "", + "response_type": "a UserSecurityProfile", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iUserSecurityProfile", + "description": "", + "required": false + } + ], + "example_query": "mutation createUserSecurityProfile( $name: String!, $setup: iUserSecurityProfile ) { createUserSecurityProfile( name: $name, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } securityRoles } }", + "example_variables": "{ \"name\": \"abc123\", \"setup\": iUserSecurityProfile }", + "example_response": "{ \"data\": { \"createUserSecurityProfile\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"properties\": [SecurityProperty], \"securityRoles\": [\"ADMIN\"] } } }" + }, + { + "name": "createViewingCondition", + "type": "mutation", + "description": "", + "response_type": "a ViewingCondition!", + "arguments": [ + { + "name": "setup", + "type": "iViewingCondition!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID", + "description": "", + "required": false + } + ], + "example_query": "mutation createViewingCondition( $setup: iViewingCondition!, $in: ID ) { createViewingCondition( setup: $setup, in: $in ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } parents { ...ContainerFragment } renderingIntent gamutCheck profile rgb { ...WorkingSpaceSimulationFragment } cmyk { ...WorkingSpaceSimulationFragment } gray { ...WorkingSpaceSimulationFragment } useCloseLoop closeLoop { ...CloseLoopParamsFragment } } }", + "example_variables": "{ \"setup\": iViewingCondition, \"in\": \"4\" }", + "example_response": "{ \"data\": { \"createViewingCondition\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"parents\": [Container], \"renderingIntent\": \"PaperWhite\", \"gamutCheck\": false, \"profile\": \"xyz789\", \"rgb\": WorkingSpaceSimulation, \"cmyk\": WorkingSpaceSimulation, \"gray\": WorkingSpaceSimulation, \"useCloseLoop\": false, \"closeLoop\": CloseLoopParams } } }" + }, + { + "name": "createVolume", + "type": "mutation", + "description": "Create a Volume", + "response_type": "a Volume!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "group", + "type": "IVolumeGroup!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iVolumeSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation createVolume( $id: ID!, $group: IVolumeGroup!, $setup: iVolumeSetup! ) { createVolume( id: $id, group: $group, setup: $setup ) { id group access reference path nfsAlias smbAlias protocol server userName port } }", + "example_variables": "{\"id\": 4, \"group\": \"ATTACHMENT\", \"setup\": iVolumeSetup}", + "example_response": "{ \"data\": { \"createVolume\": { \"id\": 4, \"group\": \"ATTACHMENT\", \"access\": \"DISABLED\", \"reference\": \"xyz789\", \"path\": \"abc123\", \"nfsAlias\": \"xyz789\", \"smbAlias\": \"xyz789\", \"protocol\": \"FILE\", \"server\": \"xyz789\", \"userName\": \"xyz789\", \"port\": 123 } } }" + }, + { + "name": "createWorkflow", + "type": "mutation", + "description": "Worflow creation", + "response_type": "a Workflow!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "scope", + "type": "WorkflowableTypeName", + "description": "", + "required": false + }, + { + "name": "description", + "type": "String", + "description": "", + "required": false + }, + { + "name": "parameters", + "type": "[iMetadataValue!]", + "description": "", + "required": true + }, + { + "name": "onCompletedRetention", + "type": "Int", + "description": "Default = -1", + "required": false + }, + { + "name": "onFailedRetention", + "type": "Int", + "description": "Default = -1", + "required": false + }, + { + "name": "activities", + "type": "[iActivity!]", + "description": "", + "required": true + }, + { + "name": "links", + "type": "[iLink!]", + "description": "", + "required": true + }, + { + "name": "layout", + "type": "iWorkflowLayout", + "description": "", + "required": false + }, + { + "name": "failHandler", + "type": "iFailHandler", + "description": "", + "required": false + }, + { + "name": "in", + "type": "ID", + "description": "", + "required": false + } + ], + "example_query": "mutation createWorkflow( $name: String!, $scope: WorkflowableTypeName, $description: String, $parameters: [iMetadataValue!], $onCompletedRetention: Int, $onFailedRetention: Int, $activities: [iActivity!], $links: [iLink!], $layout: iWorkflowLayout, $failHandler: iFailHandler, $in: ID ) { createWorkflow( name: $name, scope: $scope, description: $description, parameters: $parameters, onCompletedRetention: $onCompletedRetention, onFailedRetention: $onFailedRetention, activities: $activities, links: $links, layout: $layout, failHandler: $failHandler, in: $in ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } priority applyOn activities { ...ActivityFragment } links { ...LinkFragment } layout { ...WorkflowLayoutFragment } parameters { ...MetadataValueFragment } onFailed { ...FailHandlerFragment } onCompletedRetention onFailedRetention } }", + "example_variables": "{ \"name\": \"xyz789\", \"scope\": \"Folder\", \"description\": \"xyz789\", \"parameters\": [iMetadataValue], \"onCompletedRetention\": -1, \"onFailedRetention\": -1, \"activities\": [iActivity], \"links\": [iLink], \"layout\": iWorkflowLayout, \"failHandler\": iFailHandler, \"in\": \"4\" }", + "example_response": "{ \"data\": { \"createWorkflow\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"priority\": 123, \"applyOn\": \"Folder\", \"activities\": [Activity], \"links\": [Link], \"layout\": WorkflowLayout, \"parameters\": [MetadataValue], \"onFailed\": FailHandler, \"onCompletedRetention\": 987, \"onFailedRetention\": 123 } } }" + }, + { + "name": "deleteActivity", + "type": "mutation", + "description": "To delete an activity", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "name", + "type": "[String!]!", + "description": "", + "required": true + }, + { + "name": "type", + "type": "ActivityType!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteActivity( $name: [String!]!, $type: ActivityType! ) { deleteActivity( name: $name, type: $type ) }", + "example_variables": "{\"name\": [\"xyz789\"], \"type\": \"InputFile\"}", + "example_response": "{\"data\": {\"deleteActivity\": false}}" + }, + { + "name": "deleteActivityIcon", + "type": "mutation", + "description": "delete an activity icon", + "response_type": "a Boolean", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteActivityIcon($id: [ID!]!) { deleteActivityIcon(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteActivityIcon\": true}}" + }, + { + "name": "deleteActivityPreset", + "type": "mutation", + "description": "To delete a preset", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "type", + "type": "ActivityType!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteActivityPreset( $name: String!, $type: ActivityType! ) { deleteActivityPreset( name: $name, type: $type ) }", + "example_variables": "{\"name\": \"abc123\", \"type\": \"InputFile\"}", + "example_response": "{\"data\": {\"deleteActivityPreset\": true}}" + }, + { + "name": "deleteAllTrashedObjects", + "type": "mutation", + "description": "Delete all objects that have been trashed with the current user", + "response_type": "a Boolean!", + "arguments": [], + "example_query": "mutation deleteAllTrashedObjects { deleteAllTrashedObjects }", + "example_variables": "", + "example_response": "{\"data\": {\"deleteAllTrashedObjects\": true}}" + }, + { + "name": "deleteAnnotationStatus", + "type": "mutation", + "description": "Returns a Boolean", + "response_type": "a Boolean", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteAnnotationStatus($id: [ID!]!) { deleteAnnotationStatus(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteAnnotationStatus\": false}}" + }, + { + "name": "deleteAnyProofReadingMark", + "type": "mutation", + "description": "Returns a Boolean!", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteAnyProofReadingMark($id: [ID!]!) { deleteAnyProofReadingMark(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteAnyProofReadingMark\": true}}" + }, + { + "name": "deleteAsset", + "type": "mutation", + "description": "To delete an Asset. By default the Asset is moved to the trash", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "id of the Asset", + "required": true + }, + { + "name": "now", + "type": "Boolean", + "description": "flag to be able to immediately delete the Asset otherwise it is moved to the trash. Default = false", + "required": false + } + ], + "example_query": "mutation deleteAsset( $id: [ID!]!, $now: Boolean ) { deleteAsset( id: $id, now: $now ) }", + "example_variables": "{\"id\": [4], \"now\": false}", + "example_response": "{\"data\": {\"deleteAsset\": false}}" + }, + { + "name": "deleteAuthentication", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteAuthentication($id: ID!) { deleteAuthentication(id: $id) }", + "example_variables": "{\"id\": \"4\"}", + "example_response": "{\"data\": {\"deleteAuthentication\": false}}" + }, + { + "name": "deleteClientApplication", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteClientApplication($id: ID!) { deleteClientApplication(id: $id) }", + "example_variables": "{\"id\": \"4\"}", + "example_response": "{\"data\": {\"deleteClientApplication\": false}}" + }, + { + "name": "deleteCollection", + "type": "mutation", + "description": "To delete a Collection. By default the Collection is moved to the trash", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "id of the Collection", + "required": true + }, + { + "name": "now", + "type": "Boolean", + "description": "flag to be able to immediately delete the Collection otherwise it is moved to the trash. Default = false", + "required": false + } + ], + "example_query": "mutation deleteCollection( $id: [ID!]!, $now: Boolean ) { deleteCollection( id: $id, now: $now ) }", + "example_variables": "{\"id\": [4], \"now\": false}", + "example_response": "{\"data\": {\"deleteCollection\": false}}" + }, + { + "name": "deleteColorSpace", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteColorSpace($id: [ID!]!) { deleteColorSpace(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteColorSpace\": true}}" + }, + { + "name": "deleteCustomActivity", + "type": "mutation", + "description": "Custom activity deletion", + "response_type": "a Boolean", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteCustomActivity($name: String!) { deleteCustomActivity(name: $name) }", + "example_variables": "{\"name\": \"abc123\"}", + "example_response": "{\"data\": {\"deleteCustomActivity\": false}}" + }, + { + "name": "deleteCustomer", + "type": "mutation", + "description": "Delete one or many Customer(s)", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteCustomer($id: [ID!]!) { deleteCustomer(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteCustomer\": true}}" + }, + { + "name": "deleteEmailOutputChannel", + "type": "mutation", + "description": "Delete one or more email output channels", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteEmailOutputChannel($id: [ID!]!) { deleteEmailOutputChannel(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteEmailOutputChannel\": true}}" + }, + { + "name": "deleteEmailTemplate", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteEmailTemplate($id: [ID!]!) { deleteEmailTemplate(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteEmailTemplate\": true}}" + }, + { + "name": "deleteFileOutputChannel", + "type": "mutation", + "description": "Delete one or more file output channels", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteFileOutputChannel($id: [ID!]!) { deleteFileOutputChannel(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteFileOutputChannel\": false}}" + }, + { + "name": "deleteFolder", + "type": "mutation", + "description": "To delete a Folder. By default the Folder is moved to the trash", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "id of the Folder", + "required": true + }, + { + "name": "now", + "type": "Boolean", + "description": "flag to be able to immediately delete the Folder otherwise it is moved to the trash. Default = false", + "required": false + } + ], + "example_query": "mutation deleteFolder( $id: [ID!]!, $now: Boolean ) { deleteFolder( id: $id, now: $now ) }", + "example_variables": "{\"id\": [\"4\"], \"now\": false}", + "example_response": "{\"data\": {\"deleteFolder\": true}}" + }, + { + "name": "deleteGroup", + "type": "mutation", + "description": "Delete one or many Groups that are not System Groups", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteGroup($id: [ID!]!) { deleteGroup(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteGroup\": true}}" + }, + { + "name": "deleteHost", + "type": "mutation", + "description": "Delete a Host deprecated", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteHost($id: [ID!]!) { deleteHost(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteHost\": true}}" + }, + { + "name": "deleteIccProfile", + "type": "mutation", + "description": "", + "response_type": "a Boolean", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteIccProfile($id: [ID!]!) { deleteIccProfile(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteIccProfile\": true}}" + }, + { + "name": "deleteInputChannel", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteInputChannel($id: [ID!]!) { deleteInputChannel(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteInputChannel\": true}}" + }, + { + "name": "deleteInputRuleSet", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteInputRuleSet($id: [ID!]!) { deleteInputRuleSet(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteInputRuleSet\": false}}" + }, + { + "name": "deleteLayout", + "type": "mutation", + "description": "Delete a layout", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteLayout($id: [ID]!) { deleteLayout(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteLayout\": false}}" + }, + { + "name": "deleteMetadataDefinition", + "type": "mutation", + "description": "To delete a metadata definition", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteMetadataDefinition($id: [ID!]!) { deleteMetadataDefinition(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteMetadataDefinition\": true}}" + }, + { + "name": "deleteMetadataNameSpace", + "type": "mutation", + "description": "To delete a nameSpace definition", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteMetadataNameSpace($id: [ID!]!) { deleteMetadataNameSpace(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteMetadataNameSpace\": false}}" + }, + { + "name": "deleteMyProofReadingMark", + "type": "mutation", + "description": "Returns a Boolean!", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteMyProofReadingMark($id: [ID!]!) { deleteMyProofReadingMark(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteMyProofReadingMark\": false}}" + }, + { + "name": "deleteMySharing", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteMySharing($id: [ID!]!) { deleteMySharing(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteMySharing\": false}}" + }, + { + "name": "deleteMyWebAuthnRegistration", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteMyWebAuthnRegistration($id: [ID!]!) { deleteMyWebAuthnRegistration(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteMyWebAuthnRegistration\": false}}" + }, + { + "name": "deleteNote", + "type": "mutation", + "description": "Returns a Boolean!", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteNote($id: [ID!]!) { deleteNote(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteNote\": true}}" + }, + { + "name": "deleteNotificationTemplate", + "type": "mutation", + "description": "The default ones cannot be deleted", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteNotificationTemplate($id: [ID!]!) { deleteNotificationTemplate(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteNotificationTemplate\": false}}" + }, + { + "name": "deleteObject", + "type": "mutation", + "description": "Generic delete object", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "id of the Project", + "required": true + }, + { + "name": "now", + "type": "Boolean", + "description": "flag to be able to immediately delete the Project otherwise it is moved to the trash. Default = false", + "required": false + } + ], + "example_query": "mutation deleteObject( $id: [ID!]!, $now: Boolean ) { deleteObject( id: $id, now: $now ) }", + "example_variables": "{\"id\": [\"4\"], \"now\": false}", + "example_response": "{\"data\": {\"deleteObject\": false}}" + }, + { + "name": "deleteOrganization", + "type": "mutation", + "description": "Delete one or many Organizations", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteOrganization($id: [ID!]!) { deleteOrganization(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteOrganization\": true}}" + }, + { + "name": "deleteOutputChannelGroup", + "type": "mutation", + "description": "Delete one or more output channel groups Will also delete any output channels in the group", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteOutputChannelGroup($id: [ID!]!) { deleteOutputChannelGroup(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteOutputChannelGroup\": false}}" + }, + { + "name": "deleteProcess", + "type": "mutation", + "description": "To delete a Process", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteProcess($id: [ID!]) { deleteProcess(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteProcess\": true}}" + }, + { + "name": "deleteProject", + "type": "mutation", + "description": "To delete a Project. By default the project is moved to the trash", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "id of the Project", + "required": true + }, + { + "name": "now", + "type": "Boolean", + "description": "flag to be able to immediately delete the Project otherwise it is moved to the trash. Default = false", + "required": false + } + ], + "example_query": "mutation deleteProject( $id: [ID!]!, $now: Boolean ) { deleteProject( id: $id, now: $now ) }", + "example_variables": "{\"id\": [4], \"now\": false}", + "example_response": "{\"data\": {\"deleteProject\": false}}" + }, + { + "name": "deleteProjectFolder", + "type": "mutation", + "description": "To delete a ProjectFolder. By default the ProjectFolder is moved to the trash", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "id of the ProjectFolder", + "required": true + }, + { + "name": "now", + "type": "Boolean", + "description": "flag to be able to immediately delete the Folder otherwise it is moved to the trash. Default = false", + "required": false + } + ], + "example_query": "mutation deleteProjectFolder( $id: [ID!]!, $now: Boolean ) { deleteProjectFolder( id: $id, now: $now ) }", + "example_variables": "{\"id\": [4], \"now\": false}", + "example_response": "{\"data\": {\"deleteProjectFolder\": false}}" + }, + { + "name": "deleteProjectTemplate", + "type": "mutation", + "description": "To delete a ProjectTemplate", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteProjectTemplate($id: [ID!]!) { deleteProjectTemplate(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteProjectTemplate\": false}}" + }, + { + "name": "deleteProperty", + "type": "mutation", + "description": "To delete a property", + "response_type": "a ConfigProperty!", + "arguments": [ + { + "name": "category", + "type": "String!", + "description": "The category to which belongs the property", + "required": true + }, + { + "name": "name", + "type": "String!", + "description": "The name of the property", + "required": true + } + ], + "example_query": "mutation deleteProperty( $category: String!, $name: String! ) { deleteProperty( category: $category, name: $name ) { id category name value } }", + "example_variables": "{ \"category\": \"abc123\", \"name\": \"xyz789\" }", + "example_response": "{ \"data\": { \"deleteProperty\": { \"id\": 4, \"category\": \"abc123\", \"name\": \"xyz789\", \"value\": \"abc123\" } } }" + }, + { + "name": "deleteRelation", + "type": "mutation", + "description": "To delete Relations by there ID(s)", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteRelation($id: [ID!]!) { deleteRelation(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteRelation\": false}}" + }, + { + "name": "deleteRelationFromObject", + "type": "mutation", + "description": "To delete Relations from there target and/or sources one of source or target is mandatory", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "from", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "to", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "name", + "type": "String", + "description": "", + "required": false + } + ], + "example_query": "mutation deleteRelationFromObject( $from: [ID!], $to: [ID!], $name: String ) { deleteRelationFromObject( from: $from, to: $to, name: $name ) }", + "example_variables": "{ \"from\": [\"4\"], \"to\": [4], \"name\": \"abc123\" }", + "example_response": "{\"data\": {\"deleteRelationFromObject\": false}}" + }, + { + "name": "deleteReplyOfNote", + "type": "mutation", + "description": "Returns a Note!", + "response_type": "a Note!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "rank", + "type": "Long!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteReplyOfNote( $id: ID!, $rank: Long! ) { deleteReplyOfNote( id: $id, rank: $rank ) { id type objectOwnerId pageNumber lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } attachments { ...AttachmentFragment } checkable status { ...AnnotationStatusFragment } collapsed seenBy { ...UserFragment } replies { ...NoteReplyFragment } content originalContent stylizedContent positionX positionY positionZ anchorX anchorY anchorZ tx ty proofReadingMark { ...ProofReadingMarkFragment } path selectable startTime endTime } }", + "example_variables": "{\"id\": \"4\", \"rank\": {}}", + "example_response": "{ \"data\": { \"deleteReplyOfNote\": { \"id\": 4, \"type\": \"Note\", \"objectOwnerId\": \"4\", \"pageNumber\": {}, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"attachments\": [Attachment], \"checkable\": true, \"status\": AnnotationStatus, \"collapsed\": true, \"seenBy\": [User], \"replies\": [NoteReply], \"content\": \"abc123\", \"originalContent\": \"abc123\", \"stylizedContent\": \"abc123\", \"positionX\": 987.65, \"positionY\": 987.65, \"positionZ\": 987.65, \"anchorX\": 987.65, \"anchorY\": 123.45, \"anchorZ\": 987.65, \"tx\": 987.65, \"ty\": 123.45, \"proofReadingMark\": ProofReadingMark, \"path\": \"abc123\", \"selectable\": false, \"startTime\": 987.65, \"endTime\": 123.45 } } }" + }, + { + "name": "deleteRole", + "type": "mutation", + "description": "Delete one or many Role(s)", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteRole($id: [ID!]!) { deleteRole(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteRole\": false}}" + }, + { + "name": "deleteSchemaExtension", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteSchemaExtension($id: [ID!]) { deleteSchemaExtension(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteSchemaExtension\": false}}" + }, + { + "name": "deleteSecurityProfile", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteSecurityProfile($id: [ID!]!) { deleteSecurityProfile(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteSecurityProfile\": false}}" + }, + { + "name": "deleteSharing", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteSharing($id: [ID!]!) { deleteSharing(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteSharing\": false}}" + }, + { + "name": "deleteSmartCollection", + "type": "mutation", + "description": "To delete a SmartCollection. By default the SmartCollection is moved to the trash", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "id of the SmartCollection", + "required": true + }, + { + "name": "now", + "type": "Boolean", + "description": "flag to be able to immediately delete the SmartCollection otherwise it is moved to the trash. Default = false", + "required": false + } + ], + "example_query": "mutation deleteSmartCollection( $id: [ID!]!, $now: Boolean ) { deleteSmartCollection( id: $id, now: $now ) }", + "example_variables": "{\"id\": [\"4\"], \"now\": false}", + "example_response": "{\"data\": {\"deleteSmartCollection\": true}}" + }, + { + "name": "deleteSynSet", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "mode", + "type": "SynSetDeletionMode", + "description": "Default = None", + "required": false + } + ], + "example_query": "mutation deleteSynSet( $id: ID!, $mode: SynSetDeletionMode ) { deleteSynSet( id: $id, mode: $mode ) }", + "example_variables": "{\"id\": \"4\", \"mode\": \"None\"}", + "example_response": "{\"data\": {\"deleteSynSet\": true}}" + }, + { + "name": "deleteThesaurus", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteThesaurus($id: ID!) { deleteThesaurus(id: $id) }", + "example_variables": "{\"id\": 4}", + "example_response": "{\"data\": {\"deleteThesaurus\": false}}" + }, + { + "name": "deleteUIFile", + "type": "mutation", + "description": "", + "response_type": "a Boolean", + "arguments": [ + { + "name": "from", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "path", + "type": "[String!]", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteUIFile( $from: String!, $path: [String!] ) { deleteUIFile( from: $from, path: $path ) }", + "example_variables": "{ \"from\": \"abc123\", \"path\": [\"abc123\"] }", + "example_response": "{\"data\": {\"deleteUIFile\": true}}" + }, + { + "name": "deleteUIFolder", + "type": "mutation", + "description": "", + "response_type": "a Boolean", + "arguments": [ + { + "name": "from", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "path", + "type": "[String!]", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteUIFolder( $from: String!, $path: [String!] ) { deleteUIFolder( from: $from, path: $path ) }", + "example_variables": "{ \"from\": \"abc123\", \"path\": [\"abc123\"] }", + "example_response": "{\"data\": {\"deleteUIFolder\": false}}" + }, + { + "name": "deleteUIProject", + "type": "mutation", + "description": "", + "response_type": "a Boolean", + "arguments": [ + { + "name": "name", + "type": "[String!]", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteUIProject($name: [String!]) { deleteUIProject(name: $name) }", + "example_variables": "{\"name\": [\"xyz789\"]}", + "example_response": "{\"data\": {\"deleteUIProject\": true}}" + }, + { + "name": "deleteUser", + "type": "mutation", + "description": "Delete one or many Users", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteUser($id: [ID!]!) { deleteUser(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"deleteUser\": false}}" + }, + { + "name": "deleteUserAction", + "type": "mutation", + "description": "** Delete one or more user actions**", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteUserAction($id: [ID!]!) { deleteUserAction(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteUserAction\": false}}" + }, + { + "name": "deleteViewingCondition", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteViewingCondition($id: [ID!]!) { deleteViewingCondition(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteViewingCondition\": false}}" + }, + { + "name": "deleteVolume", + "type": "mutation", + "description": "Delete a Volume", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteVolume($id: [ID!]!) { deleteVolume(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteVolume\": false}}" + }, + { + "name": "deleteWebAuthnRegistration", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteWebAuthnRegistration($id: [ID!]!) { deleteWebAuthnRegistration(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"deleteWebAuthnRegistration\": true}}" + }, + { + "name": "deleteWorkflow", + "type": "mutation", + "description": "Workflow deletion : to delete a workflow with entityId 0", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "name", + "type": "[String!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation deleteWorkflow($name: [String!]!) { deleteWorkflow(name: $name) }", + "example_variables": "{\"name\": [\"xyz789\"]}", + "example_response": "{\"data\": {\"deleteWorkflow\": false}}" + }, + { + "name": "disableNotifications", + "type": "mutation", + "description": "for the current user", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "setup", + "type": "[iEnableDisableNotification!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation disableNotifications($setup: [iEnableDisableNotification!]!) { disableNotifications(setup: $setup) }", + "example_variables": "{\"setup\": [iEnableDisableNotification]}", + "example_response": "{\"data\": {\"disableNotifications\": false}}" + }, + { + "name": "disconnectAs", + "type": "mutation", + "description": "When connected as another user, returns to the original login, the current token is revoked. The response is identical to a standard login, a new AccessToken is received. If the AccessToken does not correspond to a user connected as, then nothing append, the current token is still valid.", + "response_type": "a JSON!", + "arguments": [], + "example_query": "mutation disconnectAs { disconnectAs }", + "example_variables": "", + "example_response": "{\"data\": {\"disconnectAs\": {}}}" + }, + { + "name": "duplicateActivity", + "type": "mutation", + "description": "To duplicate Top Level Activity", + "response_type": "an Activity!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "newName", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "type", + "type": "ActivityType!", + "description": "", + "required": true + } + ], + "example_query": "mutation duplicateActivity( $name: String!, $newName: String!, $type: ActivityType! ) { duplicateActivity( name: $name, newName: $newName, type: $type ) { id name bypassed icon color category } }", + "example_variables": "{ \"name\": \"xyz789\", \"newName\": \"abc123\", \"type\": \"InputFile\" }", + "example_response": "{ \"data\": { \"duplicateActivity\": { \"id\": 4, \"name\": \"abc123\", \"bypassed\": true, \"icon\": \"4\", \"color\": \"abc123\", \"category\": \"abc123\" } } }" + }, + { + "name": "duplicateProject", + "type": "mutation", + "description": "To duplicate a project", + "response_type": "a Project!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "newName", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "duplicateImposition", + "type": "Boolean", + "description": "Default = false", + "required": false + }, + { + "name": "duplicateImpositionDetails", + "type": "Boolean", + "description": "Default = false", + "required": false + } + ], + "example_query": "mutation duplicateProject( $id: ID!, $newName: String!, $duplicateImposition: Boolean, $duplicateImpositionDetails: Boolean ) { duplicateProject( id: $id, newName: $newName, duplicateImposition: $duplicateImposition, duplicateImpositionDetails: $duplicateImpositionDetails ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } endDate metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status workflowName approvalStatus { ...ApprovalActivityStatusFragment } approvalSummary approvals { ...ApprovalCycleFragment } assetApprovals { ...ApprovalCycleFragment } children { ...PagingResponseFragment } assetWorkflow { ...WorkflowFragment } processes { ...ProcessFragment } projectTemplate { ...ProjectTemplateFragment } priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } reversedView customer { ...CustomerFragment } parents { ...ContainerFragment } mainAsset { ...AssetFragment } siteId productionParticipants { ...ProductionParticipantFragment } notes { ...NoteFragment } trimmedHeight trimmedWidth nbPages accessControls deadlines { ...ProjectDeadlineFragment } } }", + "example_variables": "{ \"id\": \"4\", \"newName\": \"abc123\", \"duplicateImposition\": false, \"duplicateImpositionDetails\": false }", + "example_response": "{ \"data\": { \"duplicateProject\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"endDate\": \"2007-12-03T10:15:30Z\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"workflowName\": \"abc123\", \"approvalStatus\": [ApprovalActivityStatus], \"approvalSummary\": \"NONE\", \"approvals\": [ApprovalCycle], \"assetApprovals\": [ApprovalCycle], \"children\": PagingResponse, \"assetWorkflow\": Workflow, \"processes\": [Process], \"projectTemplate\": ProjectTemplate, \"priority\": 987, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"reversedView\": true, \"customer\": Customer, \"parents\": [Container], \"mainAsset\": Asset, \"siteId\": 4, \"productionParticipants\": [ProductionParticipant], \"notes\": [Note], \"trimmedHeight\": 987.65, \"trimmedWidth\": 987.65, \"nbPages\": 987, \"accessControls\": {}, \"deadlines\": [ProjectDeadline] } } }" + }, + { + "name": "duplicateProjectTemplate", + "type": "mutation", + "description": "To duplicate a ProjectTemplate", + "response_type": "a ProjectTemplate!", + "arguments": [ + { + "name": "id", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "friendlyName", + "type": "String", + "description": "", + "required": false + } + ], + "example_query": "mutation duplicateProjectTemplate( $id: ID, $friendlyName: String ) { duplicateProjectTemplate( id: $id, friendlyName: $friendlyName ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } friendlyName priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } assetWorkflow { ...WorkflowFragment } projectWorkflow { ...WorkflowFragment } productionParticipants { ...ProductionParticipantFragment } assetApprovals { ...ApprovalCycleFragment } projectApprovals { ...ApprovalCycleFragment } deadlines { ...ProjectDeadlineFragment } skipWeekend } }", + "example_variables": "{\"id\": 4, \"friendlyName\": \"xyz789\"}", + "example_response": "{ \"data\": { \"duplicateProjectTemplate\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"friendlyName\": \"xyz789\", \"priority\": 987, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"assetWorkflow\": Workflow, \"projectWorkflow\": Workflow, \"productionParticipants\": [ProductionParticipant], \"assetApprovals\": [ApprovalCycle], \"projectApprovals\": [ApprovalCycle], \"deadlines\": [ProjectDeadline], \"skipWeekend\": false } } }" + }, + { + "name": "duplicateSecurityProfile", + "type": "mutation", + "description": "to duplicate a profile", + "response_type": "a SecurityProfile", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "description", + "type": "String", + "description": "", + "required": false + } + ], + "example_query": "mutation duplicateSecurityProfile( $id: ID!, $name: String!, $description: String ) { duplicateSecurityProfile( id: $id, name: $name, description: $description ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } } }", + "example_variables": "{ \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\" }", + "example_response": "{ \"data\": { \"duplicateSecurityProfile\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"properties\": [SecurityProperty] } } }" + }, + { + "name": "duplicateWorkflow", + "type": "mutation", + "description": "deleteWorkflowRevision(name:String! revision:Int!):Boolean! @security(role:ADMIN_WORKFLOW) Workflow duplication in can be null, the duplicated workflow is linked in the same folder as the original one", + "response_type": "a Workflow!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "newName", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID", + "description": "", + "required": false + } + ], + "example_query": "mutation duplicateWorkflow( $name: String!, $newName: String!, $in: ID ) { duplicateWorkflow( name: $name, newName: $newName, in: $in ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } priority applyOn activities { ...ActivityFragment } links { ...LinkFragment } layout { ...WorkflowLayoutFragment } parameters { ...MetadataValueFragment } onFailed { ...FailHandlerFragment } onCompletedRetention onFailedRetention } }", + "example_variables": "{ \"name\": \"abc123\", \"newName\": \"xyz789\", \"in\": \"4\" }", + "example_response": "{ \"data\": { \"duplicateWorkflow\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"priority\": 123, \"applyOn\": \"Folder\", \"activities\": [Activity], \"links\": [Link], \"layout\": WorkflowLayout, \"parameters\": [MetadataValue], \"onFailed\": FailHandler, \"onCompletedRetention\": 987, \"onFailedRetention\": 987 } } }" + }, + { + "name": "editActivity", + "type": "mutation", + "description": "To edit Top Level Activity toRemove: true will throw an Exception", + "response_type": "an Activity!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "type", + "type": "ActivityType!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iActivity!", + "description": "", + "required": true + } + ], + "example_query": "mutation editActivity( $name: String!, $type: ActivityType!, $setup: iActivity! ) { editActivity( name: $name, type: $type, setup: $setup ) { id name bypassed icon color category } }", + "example_variables": "{ \"name\": \"xyz789\", \"type\": \"InputFile\", \"setup\": iActivity }", + "example_response": "{ \"data\": { \"editActivity\": { \"id\": 4, \"name\": \"xyz789\", \"bypassed\": false, \"icon\": \"4\", \"color\": \"xyz789\", \"category\": \"abc123\" } } }" + }, + { + "name": "editActivityEngineCapacity", + "type": "mutation", + "description": "Edit capacity of an ActivityEngine in a specific Workflow Engine", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "from", + "type": "URL!", + "description": "", + "required": true + }, + { + "name": "capacity", + "type": "Int!", + "description": "", + "required": true + } + ], + "example_query": "mutation editActivityEngineCapacity( $id: ID!, $from: URL!, $capacity: Int! ) { editActivityEngineCapacity( id: $id, from: $from, capacity: $capacity ) }", + "example_variables": "{ \"id\": 4, \"from\": \"http://www.test.com/\", \"capacity\": 987 }", + "example_response": "{\"data\": {\"editActivityEngineCapacity\": true}}" + }, + { + "name": "editActivityEngineTemplate", + "type": "mutation", + "description": "Edit an ActivityEngineTemplate in a specific Workflow Engine", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "from", + "type": "URL!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "JSON!", + "description": "", + "required": true + } + ], + "example_query": "mutation editActivityEngineTemplate( $from: URL!, $setup: JSON! ) { editActivityEngineTemplate( from: $from, setup: $setup ) }", + "example_variables": "{ \"from\": \"http://www.test.com/\", \"setup\": {} }", + "example_response": "{\"data\": {\"editActivityEngineTemplate\": false}}" + }, + { + "name": "editActivityPreset", + "type": "mutation", + "description": "To edit activity presets creates it if it doesn't exist", + "response_type": "an Activity!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "type", + "type": "ActivityType!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iActivity!", + "description": "", + "required": true + } + ], + "example_query": "mutation editActivityPreset( $name: String!, $type: ActivityType!, $setup: iActivity! ) { editActivityPreset( name: $name, type: $type, setup: $setup ) { id name bypassed icon color category } }", + "example_variables": "{ \"name\": \"xyz789\", \"type\": \"InputFile\", \"setup\": iActivity }", + "example_response": "{ \"data\": { \"editActivityPreset\": { \"id\": \"4\", \"name\": \"abc123\", \"bypassed\": false, \"icon\": \"4\", \"color\": \"abc123\", \"category\": \"abc123\" } } }" + }, + { + "name": "editAnnotationStatus", + "type": "mutation", + "description": "Returns an AnnotationStatus!", + "response_type": "an AnnotationStatus!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iAnnotationStatus", + "description": "", + "required": false + } + ], + "example_query": "mutation editAnnotationStatus( $id: ID!, $setup: iAnnotationStatus ) { editAnnotationStatus( id: $id, setup: $setup ) { id lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } color icon isActive order translations } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iAnnotationStatus }", + "example_response": "{ \"data\": { \"editAnnotationStatus\": { \"id\": \"4\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"color\": \"abc123\", \"icon\": \"abc123\", \"isActive\": false, \"order\": 987, \"translations\": {} } } }" + }, + { + "name": "editAsset", + "type": "mutation", + "description": "To edit an Asset", + "response_type": "[Asset!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iAssetSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editAsset( $id: [ID!]!, $setup: iAssetSetup ) { editAsset( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } }", + "example_variables": "{\"id\": [4], \"setup\": iAssetSetup}", + "example_response": "{ \"data\": { \"editAsset\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"approvalSummary\": \"NONE\", \"approvalStatus\": [ApprovalActivityStatus], \"approvals\": [ApprovalCycle], \"workflowName\": \"xyz789\", \"isAlias\": true, \"processes\": [Process], \"uuid\": \"abc123\", \"priority\": 123, \"isCheckedOut\": true, \"checkedOutBy\": User, \"privateWorkingRevision\": 123, \"isArchived\": false, \"archiveId\": \"4\", \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"project\": Project, \"parents\": [Container], \"numberOfRevisions\": 123, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"medias\": [Media], \"notes\": [Note], \"relationFrom\": [Relation], \"relationTo\": [Relation], \"accessControls\": {} } ] } }" + }, + { + "name": "editAuthentication", + "type": "mutation", + "description": "", + "response_type": "an Authentication!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iAuthentication!", + "description": "", + "required": true + } + ], + "example_query": "mutation editAuthentication( $id: ID!, $setup: iAuthentication! ) { editAuthentication( id: $id, setup: $setup ) { id type name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } authorizationURL tokenURL clientId isActive samlSetup { ...SAMLSetupFragment } } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iAuthentication }", + "example_response": "{ \"data\": { \"editAuthentication\": { \"id\": \"4\", \"type\": \"INTERNAL\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"authorizationURL\": \"http://www.test.com/\", \"tokenURL\": \"http://www.test.com/\", \"clientId\": 4, \"isActive\": false, \"samlSetup\": SAMLSetup } } }" + }, + { + "name": "editClientApplication", + "type": "mutation", + "description": "", + "response_type": "a ClientApplication!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iEditClientApplication!", + "description": "", + "required": true + } + ], + "example_query": "mutation editClientApplication( $id: ID!, $setup: iEditClientApplication! ) { editClientApplication( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } allowIntrospection maxQueryDepth redirectURL secret schema defaultTokenDuration algorithm { ...JWTAlgorithmFragment } } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iEditClientApplication }", + "example_response": "{ \"data\": { \"editClientApplication\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"allowIntrospection\": true, \"maxQueryDepth\": 123, \"redirectURL\": \"http://www.test.com/\", \"secret\": \"xyz789\", \"schema\": [\"ADMIN\"], \"defaultTokenDuration\": {}, \"algorithm\": JWTAlgorithm } } }" + }, + { + "name": "editCollection", + "type": "mutation", + "description": "To edit a Collection", + "response_type": "[Collection!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iCollectionSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editCollection( $id: [ID!]!, $setup: iCollectionSetup! ) { editCollection( id: $id, setup: $setup ) { id name description color lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } icon lName translations children { ...PagingResponseFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly accessControlList { ...AccessControlListFragment } path { ...CollectionFragment } parents { ...ContainerFragment } destination { ...EntityFragment } } }", + "example_variables": "{ \"id\": [\"4\"], \"setup\": iCollectionSetup }", + "example_response": "{ \"data\": { \"editCollection\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"color\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"icon\": 4, \"lName\": \"xyz789\", \"translations\": {}, \"children\": PagingResponse, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": true, \"accessControlList\": AccessControlList, \"path\": [Collection], \"parents\": [Container], \"destination\": Entity } ] } }" + }, + { + "name": "editColorSpace", + "type": "mutation", + "description": "", + "response_type": "a ColorSpace!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iColorSpace!", + "description": "", + "required": true + } + ], + "example_query": "mutation editColorSpace( $id: ID!, $setup: iColorSpace! ) { editColorSpace( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } parents { ...ContainerFragment } colorEngine blackPointCompensation mixedWorkingSpace { ...ICCDestinationSelectionFragment } mixedVectorInput { ...ICCSourceSelectionFragment } mixedRasterInput { ...ICCSourceSelectionFragment } rgbWorkingSpace { ...ICCDestinationSelectionFragment } cmykWorkingSpace { ...ICCDestinationSelectionFragment } grayWorkingSpace { ...ICCDestinationSelectionFragment } } }", + "example_variables": "{\"id\": 4, \"setup\": iColorSpace}", + "example_response": "{ \"data\": { \"editColorSpace\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"parents\": [Container], \"colorEngine\": \"ADOBE_ACE\", \"blackPointCompensation\": true, \"mixedWorkingSpace\": ICCDestinationSelection, \"mixedVectorInput\": ICCSourceSelection, \"mixedRasterInput\": ICCSourceSelection, \"rgbWorkingSpace\": ICCDestinationSelection, \"cmykWorkingSpace\": ICCDestinationSelection, \"grayWorkingSpace\": ICCDestinationSelection } } }" + }, + { + "name": "editCustomActivity", + "type": "mutation", + "description": "Custom activity edition", + "response_type": "an Activity!", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "type", + "type": "ActivityType!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iActivity", + "description": "", + "required": false + } + ], + "example_query": "mutation editCustomActivity( $name: String!, $type: ActivityType!, $setup: iActivity ) { editCustomActivity( name: $name, type: $type, setup: $setup ) { id name bypassed icon color category } }", + "example_variables": "{ \"name\": \"xyz789\", \"type\": \"InputFile\", \"setup\": iActivity }", + "example_response": "{ \"data\": { \"editCustomActivity\": { \"id\": 4, \"name\": \"xyz789\", \"bypassed\": false, \"icon\": 4, \"color\": \"xyz789\", \"category\": \"abc123\" } } }" + }, + { + "name": "editCustomer", + "type": "mutation", + "description": "Edit a Customer", + "response_type": "a Customer!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "defaultProjectTemplateId", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "setup", + "type": "iCustomerSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editCustomer( $id: ID!, $defaultProjectTemplateId: ID, $setup: iCustomerSetup ) { editCustomer( id: $id, defaultProjectTemplateId: $defaultProjectTemplateId, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } sites defaultSite defaultProjectTemplate { ...ProjectTemplateFragment } projectTemplates { ...ProjectTemplateFragment } code phone phone2 www fax shippingAddress { ...AddressFragment } billingAddress { ...AddressFragment } organization { ...OrganizationFragment } children { ...PagingResponseFragment } emailTemplates { ...EmailTemplateFragment } notificationTemplates { ...NotificationTemplateFragment } securityConfiguration { ...SecurityConfigurationFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{ \"id\": \"4\", \"defaultProjectTemplateId\": 4, \"setup\": iCustomerSetup }", + "example_response": "{ \"data\": { \"editCustomer\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"sites\": [\"abc123\"], \"defaultSite\": \"abc123\", \"defaultProjectTemplate\": ProjectTemplate, \"projectTemplates\": [ProjectTemplate], \"code\": \"abc123\", \"phone\": \"abc123\", \"phone2\": \"xyz789\", \"www\": \"abc123\", \"fax\": \"xyz789\", \"shippingAddress\": Address, \"billingAddress\": Address, \"organization\": Organization, \"children\": PagingResponse, \"emailTemplates\": [EmailTemplate], \"notificationTemplates\": [NotificationTemplate], \"securityConfiguration\": SecurityConfiguration, \"notifications\": [Notification] } } }" + }, + { + "name": "editEmailOutputChannel", + "type": "mutation", + "description": "Edit email output channels", + "response_type": "[EmailOutputChannel!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iEmailOutputChannelSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editEmailOutputChannel( $id: [ID!]!, $setup: iEmailOutputChannelSetup! ) { editEmailOutputChannel( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } isActive to subject body specificAttachmentURL attachCurrentFile } }", + "example_variables": "{ \"id\": [\"4\"], \"setup\": iEmailOutputChannelSetup }", + "example_response": "{ \"data\": { \"editEmailOutputChannel\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"isActive\": true, \"to\": [\"abc123\"], \"subject\": \"abc123\", \"body\": \"abc123\", \"specificAttachmentURL\": \"http://www.test.com/\", \"attachCurrentFile\": false } ] } }" + }, + { + "name": "editEmailTemplate", + "type": "mutation", + "description": "", + "response_type": "an EmailTemplate!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iEmailTemplate", + "description": "", + "required": false + } + ], + "example_query": "mutation editEmailTemplate( $id: ID!, $setup: iEmailTemplate ) { editEmailTemplate( id: $id, setup: $setup ) { id name description parentEntity { ...WithEmailTemplateFragment } emailParts attachPreview attachPreviewsIfMultipage attachCurrentFile attachHistoryReportAllRevisions attachHistoryReportCurrentRevision attachNoteReportAllRevisions attachNoteReportCurrentRevision attachPreflightReport lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } } }", + "example_variables": "{\"id\": 4, \"setup\": iEmailTemplate}", + "example_response": "{ \"data\": { \"editEmailTemplate\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"parentEntity\": WithEmailTemplate, \"emailParts\": {}, \"attachPreview\": true, \"attachPreviewsIfMultipage\": true, \"attachCurrentFile\": true, \"attachHistoryReportAllRevisions\": false, \"attachHistoryReportCurrentRevision\": true, \"attachNoteReportAllRevisions\": true, \"attachNoteReportCurrentRevision\": true, \"attachPreflightReport\": true, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User } } }" + }, + { + "name": "editFileOutputChannel", + "type": "mutation", + "description": "Edit file output channels", + "response_type": "[FileOutputChannel!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iFileOutputChannelSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editFileOutputChannel( $id: [ID!]!, $setup: iFileOutputChannelSetup! ) { editFileOutputChannel( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } isActive encoding protocol server userName path fileName } }", + "example_variables": "{ \"id\": [\"4\"], \"setup\": iFileOutputChannelSetup }", + "example_response": "{ \"data\": { \"editFileOutputChannel\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"isActive\": true, \"encoding\": \"UTF8\", \"protocol\": \"FILE\", \"server\": \"abc123\", \"userName\": \"abc123\", \"path\": \"abc123\", \"fileName\": \"abc123\" } ] } }" + }, + { + "name": "editFileSystemVolume", + "type": "mutation", + "description": "Edit a File System Volume", + "response_type": "[FileSystemVolume!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iFileSystemVolumeSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editFileSystemVolume( $id: [ID!]!, $setup: iFileSystemVolumeSetup! ) { editFileSystemVolume( id: $id, setup: $setup ) { id group access reference path nfsAlias smbAlias protocol server userName port host { ...HostFragment } diskId site folderRegExp folderExclRegExp fileRegExp fileExclRegExp projectTemplate { ...ProjectTemplateFragment } monitoringQueue monitoring versioning updateMetadata monitorOnBrowse accessControlList { ...AccessControlListFragment } } }", + "example_variables": "{\"id\": [4], \"setup\": iFileSystemVolumeSetup}", + "example_response": "{ \"data\": { \"editFileSystemVolume\": [ { \"id\": 4, \"group\": \"ATTACHMENT\", \"access\": \"DISABLED\", \"reference\": \"xyz789\", \"path\": \"xyz789\", \"nfsAlias\": \"abc123\", \"smbAlias\": \"xyz789\", \"protocol\": \"FILE\", \"server\": \"xyz789\", \"userName\": \"xyz789\", \"port\": 123, \"host\": Host, \"diskId\": 4, \"site\": \"xyz789\", \"folderRegExp\": \"abc123\", \"folderExclRegExp\": \"xyz789\", \"fileRegExp\": \"abc123\", \"fileExclRegExp\": \"xyz789\", \"projectTemplate\": ProjectTemplate, \"monitoringQueue\": \"xyz789\", \"monitoring\": false, \"versioning\": false, \"updateMetadata\": false, \"monitorOnBrowse\": false, \"accessControlList\": AccessControlList } ] } }" + }, + { + "name": "editFolder", + "type": "mutation", + "description": "To edit a Folder", + "response_type": "[Folder!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iFolderSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editFolder( $id: [ID!]!, $setup: iFolderSetup ) { editFolder( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly productionSettings { ...ProductionSettingsFragment } processes { ...ProcessFragment } accessControlList { ...AccessControlListFragment } children { ...PagingResponseFragment } project { ...ProjectFragment } parents { ...ContainerFragment } path { ...FolderFragment } color icon } }", + "example_variables": "{ \"id\": [\"4\"], \"setup\": iFolderSetup }", + "example_response": "{ \"data\": { \"editFolder\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": false, \"productionSettings\": ProductionSettings, \"processes\": [Process], \"accessControlList\": AccessControlList, \"children\": PagingResponse, \"project\": Project, \"parents\": [Container], \"path\": [Folder], \"color\": \"abc123\", \"icon\": \"4\" } ] } }" + }, + { + "name": "editGlobalProofReadingMark", + "type": "mutation", + "description": "Returns a Boolean!", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iProofReadingMarkSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editGlobalProofReadingMark( $id: ID!, $setup: iProofReadingMarkSetup! ) { editGlobalProofReadingMark( id: $id, setup: $setup ) }", + "example_variables": "{\"id\": 4, \"setup\": iProofReadingMarkSetup}", + "example_response": "{\"data\": {\"editGlobalProofReadingMark\": false}}" + }, + { + "name": "editGroup", + "type": "mutation", + "description": "Edit a Group that is not a System Group", + "response_type": "a Group!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iGroupSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editGroup( $id: ID!, $setup: iGroupSetup ) { editGroup( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } isSystem metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } children { ...PagingResponseFragment } organization { ...OrganizationFragment } customers { ...CustomerPagingResponseFragment } } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iGroupSetup }", + "example_response": "{ \"data\": { \"editGroup\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"isSystem\": true, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"children\": PagingResponse, \"organization\": Organization, \"customers\": CustomerPagingResponse } } }" + }, + { + "name": "editHost", + "type": "mutation", + "description": "Edit a Host deprecated", + "response_type": "a Host!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation editHost( $id: ID!, $name: String! ) { editHost( id: $id, name: $name ) { id url } }", + "example_variables": "{\"id\": 4, \"name\": \"abc123\"}", + "example_response": "{ \"data\": { \"editHost\": { \"id\": \"4\", \"url\": \"xyz789\" } } }" + }, + { + "name": "editInk", + "type": "mutation", + "description": "This is to edit the opacity of the inks of a Asset/Revision or Media", + "response_type": "a Media!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "id of an Asset or a Media", + "required": true + }, + { + "name": "revision", + "type": "Int", + "description": "revision if it is an Asset. Default = 0", + "required": false + }, + { + "name": "setup", + "type": "[iInkOpacity!]!", + "description": "Ink opacities", + "required": true + } + ], + "example_query": "mutation editInk( $id: ID!, $revision: Int, $setup: [iInkOpacity!]! ) { editInk( id: $id, revision: $revision, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } pageCount mimeType resolution size boxes { ...BoxFragment } inks { ...InkFragment } layerConfigs files { ...FileFragment } hasNotes notes { ...NoteFragment } revision isMajorRevision isCurrentRevision asset { ...AssetFragment } } }", + "example_variables": "{ \"id\": \"4\", \"revision\": 0, \"setup\": [iInkOpacity] }", + "example_response": "{ \"data\": { \"editInk\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"pageCount\": 987, \"mimeType\": \"abc123\", \"resolution\": 123.45, \"size\": {}, \"boxes\": [Box], \"inks\": [Ink], \"layerConfigs\": {}, \"files\": [File], \"hasNotes\": true, \"notes\": [Note], \"revision\": 123, \"isMajorRevision\": false, \"isCurrentRevision\": true, \"asset\": Asset } } }" + }, + { + "name": "editInputChannel", + "type": "mutation", + "description": "Edit an Input channelid Id of the Input channel to editpipes If pipes is given, the current pipes will be replaced by the given listExisting pipes that are not given in the new list will be deletedIf the given list is empty delete every existing pipes linked to the given input channelFor existing pipes that should not be updated but are still in the list, simply give their id and these will be kept but not editedruleSets If ruleSets is given, the current rule sets will be replaced by the given list Existing rule sets that are not given in the new list will be unlinked from the given input channelIf the given list is empty, unlink every rule sets from the given input channelFor linked rule sets that should not be updated but are still in the list, simply give their id and these will be kept but not edited The order in which the rule sets are given is taken into account to define the order in which these will be applied. Sending the same list with a different order will update the rule sets order", + "response_type": "an InputChannel!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "description", + "type": "String", + "description": "", + "required": false + }, + { + "name": "ruleSets", + "type": "[iChannelInputRuleSet!]", + "description": "", + "required": true + }, + { + "name": "pipes", + "type": "[iInputPipe!]", + "description": "", + "required": true + } + ], + "example_query": "mutation editInputChannel( $id: ID!, $description: String, $ruleSets: [iChannelInputRuleSet!], $pipes: [iInputPipe!] ) { editInputChannel( id: $id, description: $description, ruleSets: $ruleSets, pipes: $pipes ) { id name description ruleSets { ...InputRuleSetFragment } pipes { ...InputPipeFragment } } }", + "example_variables": "{ \"id\": \"4\", \"description\": \"xyz789\", \"ruleSets\": [iChannelInputRuleSet], \"pipes\": [iInputPipe] }", + "example_response": "{ \"data\": { \"editInputChannel\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"ruleSets\": [InputRuleSet], \"pipes\": [InputPipe] } } }" + }, + { + "name": "editInputRuleSet", + "type": "mutation", + "description": "", + "response_type": "an InputRuleSet!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iInputRuleSet", + "description": "", + "required": false + } + ], + "example_query": "mutation editInputRuleSet( $id: ID!, $setup: iInputRuleSet ) { editInputRuleSet( id: $id, setup: $setup ) { id name description rules { ...InputRuleFragment } } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iInputRuleSet }", + "example_response": "{ \"data\": { \"editInputRuleSet\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"rules\": [InputRule] } } }" + }, + { + "name": "editLayout", + "type": "mutation", + "description": "Edit a layout", + "response_type": "a Layout!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iLayoutSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editLayout( $id: ID!, $setup: iLayoutSetup! ) { editLayout( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } type applyTo priority layout translations icon } }", + "example_variables": "{\"id\": 4, \"setup\": iLayoutSetup}", + "example_response": "{ \"data\": { \"editLayout\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"type\": \"ENTITY\", \"applyTo\": [\"Folder\"], \"priority\": 987, \"layout\": {}, \"translations\": {}, \"icon\": 4 } } }" + }, + { + "name": "editMetadataDefinition", + "type": "mutation", + "description": "To edit a metadata definition", + "response_type": "a MetadataDefinition", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iMetadataDefinition!", + "description": "", + "required": true + } + ], + "example_query": "mutation editMetadataDefinition( $id: ID!, $setup: iMetadataDefinition! ) { editMetadataDefinition( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } nameSpace { ...MetadataNameSpaceFragment } type cardinality struct { ...MetadataDefinitionFragment } lName translations searchable availableInLayout saveInXmp required unique editable dictionary { ...DictionaryFragment } minRange maxRange minChar maxChar regex defaultValue } }", + "example_variables": "{\"id\": 4, \"setup\": iMetadataDefinition}", + "example_response": "{ \"data\": { \"editMetadataDefinition\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"nameSpace\": MetadataNameSpace, \"type\": \"BOOLEAN\", \"cardinality\": \"SINGLE\", \"struct\": [MetadataDefinition], \"lName\": \"abc123\", \"translations\": {}, \"searchable\": false, \"availableInLayout\": true, \"saveInXmp\": false, \"required\": true, \"unique\": false, \"editable\": false, \"dictionary\": Dictionary, \"minRange\": Number, \"maxRange\": Number, \"minChar\": Number, \"maxChar\": Number, \"regex\": \"xyz789\", \"defaultValue\": {} } } }" + }, + { + "name": "editMetadataNameSpace", + "type": "mutation", + "description": "To edit a metadata nameSpace", + "response_type": "a MetadataNameSpace", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "Id of the namespace to edit", + "required": true + }, + { + "name": "setup", + "type": "iMetadataNameSpaceEdition", + "description": "Definition of parameters", + "required": false + }, + { + "name": "metadatas", + "type": "[iEditMetadata!]", + "description": "List of metadata definition that will be edited in the same Transaction", + "required": true + } + ], + "example_query": "mutation editMetadataNameSpace( $id: ID!, $setup: iMetadataNameSpaceEdition, $metadatas: [iEditMetadata!] ) { editMetadataNameSpace( id: $id, setup: $setup, metadatas: $metadatas ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } uri prefix metadataDefs { ...MetadataDefinitionFragment } lName translations searchable availableInLayout saveInXmp } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iMetadataNameSpaceEdition, \"metadatas\": [iEditMetadata] }", + "example_response": "{ \"data\": { \"editMetadataNameSpace\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"uri\": \"http://www.test.com/\", \"prefix\": \"abc123\", \"metadataDefs\": [MetadataDefinition], \"lName\": \"xyz789\", \"translations\": {}, \"searchable\": false, \"availableInLayout\": false, \"saveInXmp\": false } } }" + }, + { + "name": "editMySharing", + "type": "mutation", + "description": "", + "response_type": "a Sharing!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iEditSharingSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editMySharing( $id: ID!, $setup: iEditSharingSetup! ) { editMySharing( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } key hasPinCode type startDate endDate isActive owner { ...UserFragment } entities { ...PagingResponseFragment } securityProfile { ...SecurityProfileFragment } } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iEditSharingSetup }", + "example_response": "{ \"data\": { \"editMySharing\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"key\": \"xyz789\", \"hasPinCode\": true, \"type\": \"xyz789\", \"startDate\": \"2007-12-03T10:15:30Z\", \"endDate\": \"2007-12-03T10:15:30Z\", \"isActive\": false, \"owner\": User, \"entities\": PagingResponse, \"securityProfile\": SecurityProfile } } }" + }, + { + "name": "editMyUser", + "type": "mutation", + "description": "", + "response_type": "a User!", + "arguments": [ + { + "name": "setup", + "type": "iEditUserSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editMyUser($setup: iEditUserSetup) { editMyUser(setup: $setup) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } login userCanLog lang dateFormat unitResolution unitLength color image use2FA channel2FA sessionTimeout workCapacity workCapacityUnit firstName lastName email title company phone phone2 homePhone fax mobilePhone department address { ...AddressFragment } organization { ...OrganizationFragment } groups { ...GroupFragment } roles { ...RoleFragment } defaultProfile { ...UserSecurityProfileFragment } availableProfiles { ...UserSecurityProfileFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{\"setup\": iEditUserSetup}", + "example_response": "{ \"data\": { \"editMyUser\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"login\": \"abc123\", \"userCanLog\": true, \"lang\": \"ar\", \"dateFormat\": \"abc123\", \"unitResolution\": \"xyz789\", \"unitLength\": \"abc123\", \"color\": \"abc123\", \"image\": \"abc123\", \"use2FA\": true, \"channel2FA\": \"AUTHENTICATOR\", \"sessionTimeout\": 123, \"workCapacity\": \"abc123\", \"workCapacityUnit\": \"abc123\", \"firstName\": \"abc123\", \"lastName\": \"abc123\", \"email\": \"abc123\", \"title\": \"abc123\", \"company\": \"abc123\", \"phone\": \"abc123\", \"phone2\": \"abc123\", \"homePhone\": \"abc123\", \"fax\": \"xyz789\", \"mobilePhone\": \"xyz789\", \"department\": \"abc123\", \"address\": Address, \"organization\": Organization, \"groups\": [Group], \"roles\": [Role], \"defaultProfile\": UserSecurityProfile, \"availableProfiles\": [UserSecurityProfile], \"notifications\": [Notification] } } }" + }, + { + "name": "editMyWebAuthnRegistration", + "type": "mutation", + "description": "", + "response_type": "a WebAuthnRegistration", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "description", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation editMyWebAuthnRegistration( $id: ID!, $description: String! ) { editMyWebAuthnRegistration( id: $id, description: $description ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } credentialId signatureCounter user { ...UserFragment } } }", + "example_variables": "{ \"id\": \"4\", \"description\": \"abc123\" }", + "example_response": "{ \"data\": { \"editMyWebAuthnRegistration\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"credentialId\": \"4\", \"signatureCounter\": {}, \"user\": User } } }" + }, + { + "name": "editNamedSearchFilter", + "type": "mutation", + "description": "", + "response_type": "a NamedSearchFilter!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "name", + "type": "String", + "description": "", + "required": false + }, + { + "name": "filter", + "type": "iSearchFilter", + "description": "", + "required": false + } + ], + "example_query": "mutation editNamedSearchFilter( $id: ID!, $name: String, $filter: iSearchFilter ) { editNamedSearchFilter( id: $id, name: $name, filter: $filter ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } filter { ...SearchFilterFragment } } }", + "example_variables": "{ \"id\": \"4\", \"name\": \"xyz789\", \"filter\": iSearchFilter }", + "example_response": "{ \"data\": { \"editNamedSearchFilter\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"filter\": SearchFilter } } }" + }, + { + "name": "editNote", + "type": "mutation", + "description": "Returns a Note!", + "response_type": "a Note!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iNoteSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editNote( $id: ID!, $setup: iNoteSetup! ) { editNote( id: $id, setup: $setup ) { id type objectOwnerId pageNumber lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } attachments { ...AttachmentFragment } checkable status { ...AnnotationStatusFragment } collapsed seenBy { ...UserFragment } replies { ...NoteReplyFragment } content originalContent stylizedContent positionX positionY positionZ anchorX anchorY anchorZ tx ty proofReadingMark { ...ProofReadingMarkFragment } path selectable startTime endTime } }", + "example_variables": "{\"id\": 4, \"setup\": iNoteSetup}", + "example_response": "{ \"data\": { \"editNote\": { \"id\": 4, \"type\": \"Note\", \"objectOwnerId\": 4, \"pageNumber\": {}, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"attachments\": [Attachment], \"checkable\": true, \"status\": AnnotationStatus, \"collapsed\": true, \"seenBy\": [User], \"replies\": [NoteReply], \"content\": \"abc123\", \"originalContent\": \"abc123\", \"stylizedContent\": \"abc123\", \"positionX\": 987.65, \"positionY\": 123.45, \"positionZ\": 987.65, \"anchorX\": 987.65, \"anchorY\": 123.45, \"anchorZ\": 987.65, \"tx\": 987.65, \"ty\": 123.45, \"proofReadingMark\": ProofReadingMark, \"path\": \"abc123\", \"selectable\": true, \"startTime\": 123.45, \"endTime\": 987.65 } } }" + }, + { + "name": "editNotificationTemplate", + "type": "mutation", + "description": "", + "response_type": "a NotificationTemplate!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "name", + "type": "String", + "description": "", + "required": false + }, + { + "name": "event", + "type": "iEmailTemplateNotificationEvent", + "description": "", + "required": false + }, + { + "name": "setup", + "type": "iNotificationEmailTemplate", + "description": "", + "required": false + } + ], + "example_query": "mutation editNotificationTemplate( $id: ID!, $name: String, $event: iEmailTemplateNotificationEvent, $setup: iNotificationEmailTemplate ) { editNotificationTemplate( id: $id, name: $name, event: $event, setup: $setup ) { id name event { ... on ApprovalNotificationTemplateEvent { ...ApprovalNotificationTemplateEventFragment } ... on MilestoneNotificationTemplateEvent { ...MilestoneNotificationTemplateEventFragment } ... on BaseNotificationTemplateEvent { ...BaseNotificationTemplateEventFragment } } emailTemplate { ...EmailTemplateFragment } parentEntity { ...WithEmailTemplateFragment } lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } } }", + "example_variables": "{ \"id\": \"4\", \"name\": \"abc123\", \"event\": iEmailTemplateNotificationEvent, \"setup\": iNotificationEmailTemplate }", + "example_response": "{ \"data\": { \"editNotificationTemplate\": { \"id\": 4, \"name\": \"abc123\", \"event\": ApprovalNotificationTemplateEvent, \"emailTemplate\": EmailTemplate, \"parentEntity\": WithEmailTemplate, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User } } }" + }, + { + "name": "editNotifications", + "type": "mutation", + "description": "", + "response_type": "[Notification!]", + "arguments": [ + { + "name": "id", + "type": "iNotifiableID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "[iNotification!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation editNotifications( $id: iNotifiableID!, $setup: [iNotification!]! ) { editNotifications( id: $id, setup: $setup ) { id event } }", + "example_variables": "{ \"id\": iNotifiableID, \"setup\": [iNotification] }", + "example_response": "{\"data\": {\"editNotifications\": [{\"id\": 4, \"event\": \"PROJECT_CREATION\"}]}}" + }, + { + "name": "editOrganization", + "type": "mutation", + "description": "Edit an Organization", + "response_type": "an Organization!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iOrganizationSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editOrganization( $id: ID!, $setup: iOrganizationSetup ) { editOrganization( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } children { ...PagingResponseFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } phone phone2 www fax shippingAddress { ...AddressFragment } billingAddress { ...AddressFragment } organization { ...OrganizationFragment } customers { ...CustomerFragment } emailTemplates { ...EmailTemplateFragment } notificationTemplates { ...NotificationTemplateFragment } ldapConfiguration { ...LDAPConfigurationFragment } applySecurityConfigToSubOrganization securityConfiguration { ...SecurityConfigurationFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iOrganizationSetup }", + "example_response": "{ \"data\": { \"editOrganization\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"children\": PagingResponse, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"phone\": \"xyz789\", \"phone2\": \"abc123\", \"www\": \"xyz789\", \"fax\": \"abc123\", \"shippingAddress\": Address, \"billingAddress\": Address, \"organization\": Organization, \"customers\": [Customer], \"emailTemplates\": [EmailTemplate], \"notificationTemplates\": [NotificationTemplate], \"ldapConfiguration\": LDAPConfiguration, \"applySecurityConfigToSubOrganization\": true, \"securityConfiguration\": SecurityConfiguration, \"notifications\": [Notification] } } }" + }, + { + "name": "editOutputChannelGroup", + "type": "mutation", + "description": "Edit output channel groups", + "response_type": "[OutputChannelGroup!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iOutputChannelGroupSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editOutputChannelGroup( $id: [ID!]!, $setup: iOutputChannelGroupSetup ) { editOutputChannelGroup( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } outputChannels { ...OutputChannelFragment } } }", + "example_variables": "{\"id\": [4], \"setup\": iOutputChannelGroupSetup}", + "example_response": "{ \"data\": { \"editOutputChannelGroup\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"outputChannels\": [OutputChannel] } ] } }" + }, + { + "name": "editPrivateProofReadingmark", + "type": "mutation", + "description": "Returns a Boolean!", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iProofReadingMarkSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editPrivateProofReadingmark( $id: ID!, $setup: iProofReadingMarkSetup! ) { editPrivateProofReadingmark( id: $id, setup: $setup ) }", + "example_variables": "{\"id\": 4, \"setup\": iProofReadingMarkSetup}", + "example_response": "{\"data\": {\"editPrivateProofReadingmark\": true}}" + }, + { + "name": "editProject", + "type": "mutation", + "description": "To edit a Project", + "response_type": "[Project!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iProjectSetup", + "description": "", + "required": false + }, + { + "name": "completed", + "type": "Boolean", + "description": "", + "required": false + } + ], + "example_query": "mutation editProject( $id: [ID!]!, $setup: iProjectSetup, $completed: Boolean ) { editProject( id: $id, setup: $setup, completed: $completed ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } endDate metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status workflowName approvalStatus { ...ApprovalActivityStatusFragment } approvalSummary approvals { ...ApprovalCycleFragment } assetApprovals { ...ApprovalCycleFragment } children { ...PagingResponseFragment } assetWorkflow { ...WorkflowFragment } processes { ...ProcessFragment } projectTemplate { ...ProjectTemplateFragment } priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } reversedView customer { ...CustomerFragment } parents { ...ContainerFragment } mainAsset { ...AssetFragment } siteId productionParticipants { ...ProductionParticipantFragment } notes { ...NoteFragment } trimmedHeight trimmedWidth nbPages accessControls deadlines { ...ProjectDeadlineFragment } } }", + "example_variables": "{\"id\": [4], \"setup\": iProjectSetup, \"completed\": false}", + "example_response": "{ \"data\": { \"editProject\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"endDate\": \"2007-12-03T10:15:30Z\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"workflowName\": \"abc123\", \"approvalStatus\": [ApprovalActivityStatus], \"approvalSummary\": \"NONE\", \"approvals\": [ApprovalCycle], \"assetApprovals\": [ApprovalCycle], \"children\": PagingResponse, \"assetWorkflow\": Workflow, \"processes\": [Process], \"projectTemplate\": ProjectTemplate, \"priority\": 123, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"reversedView\": true, \"customer\": Customer, \"parents\": [Container], \"mainAsset\": Asset, \"siteId\": 4, \"productionParticipants\": [ProductionParticipant], \"notes\": [Note], \"trimmedHeight\": 123.45, \"trimmedWidth\": 987.65, \"nbPages\": 987, \"accessControls\": {}, \"deadlines\": [ProjectDeadline] } ] } }" + }, + { + "name": "editProjectFolder", + "type": "mutation", + "description": "To edit a ProjectFolder", + "response_type": "[ProjectFolder!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iFolderSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editProjectFolder( $id: [ID!]!, $setup: iFolderSetup ) { editProjectFolder( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly productionSettings { ...ProductionSettingsFragment } processes { ...ProcessFragment } accessControlList { ...AccessControlListFragment } children { ...PagingResponseFragment } project { ...ProjectFragment } parents { ...ContainerFragment } path { ...ProjectFolderFragment } color icon } }", + "example_variables": "{ \"id\": [\"4\"], \"setup\": iFolderSetup }", + "example_response": "{ \"data\": { \"editProjectFolder\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": true, \"productionSettings\": ProductionSettings, \"processes\": [Process], \"accessControlList\": AccessControlList, \"children\": PagingResponse, \"project\": Project, \"parents\": [Container], \"path\": [ProjectFolder], \"color\": \"xyz789\", \"icon\": 4 } ] } }" + }, + { + "name": "editProjectTemplate", + "type": "mutation", + "description": "To edit a ProjectTemplate", + "response_type": "[ProjectTemplate!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iProjectTemplateSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editProjectTemplate( $id: [ID!]!, $setup: iProjectTemplateSetup ) { editProjectTemplate( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } friendlyName priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } assetWorkflow { ...WorkflowFragment } projectWorkflow { ...WorkflowFragment } productionParticipants { ...ProductionParticipantFragment } assetApprovals { ...ApprovalCycleFragment } projectApprovals { ...ApprovalCycleFragment } deadlines { ...ProjectDeadlineFragment } skipWeekend } }", + "example_variables": "{\"id\": [4], \"setup\": iProjectTemplateSetup}", + "example_response": "{ \"data\": { \"editProjectTemplate\": [ { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"friendlyName\": \"abc123\", \"priority\": 987, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"assetWorkflow\": Workflow, \"projectWorkflow\": Workflow, \"productionParticipants\": [ProductionParticipant], \"assetApprovals\": [ApprovalCycle], \"projectApprovals\": [ApprovalCycle], \"deadlines\": [ProjectDeadline], \"skipWeekend\": false } ] } }" + }, + { + "name": "editRelation", + "type": "mutation", + "description": "To edit Relation", + "response_type": "[Relation!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iRelationSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editRelation( $id: [ID!]!, $setup: iRelationSetup! ) { editRelation( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } from { ...WithRelationFragment } to { ...WithRelationFragment } } }", + "example_variables": "{ \"id\": [\"4\"], \"setup\": iRelationSetup }", + "example_response": "{ \"data\": { \"editRelation\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"from\": WithRelation, \"to\": WithRelation } ] } }" + }, + { + "name": "editReplyOfNote", + "type": "mutation", + "description": "Returns a Note!", + "response_type": "a Note!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "rank", + "type": "Long!", + "description": "", + "required": true + }, + { + "name": "comment", + "type": "String", + "description": "", + "required": false + }, + { + "name": "stylizedComment", + "type": "String", + "description": "", + "required": false + } + ], + "example_query": "mutation editReplyOfNote( $id: ID!, $rank: Long!, $comment: String, $stylizedComment: String ) { editReplyOfNote( id: $id, rank: $rank, comment: $comment, stylizedComment: $stylizedComment ) { id type objectOwnerId pageNumber lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } attachments { ...AttachmentFragment } checkable status { ...AnnotationStatusFragment } collapsed seenBy { ...UserFragment } replies { ...NoteReplyFragment } content originalContent stylizedContent positionX positionY positionZ anchorX anchorY anchorZ tx ty proofReadingMark { ...ProofReadingMarkFragment } path selectable startTime endTime } }", + "example_variables": "{ \"id\": \"4\", \"rank\": {}, \"comment\": \"xyz789\", \"stylizedComment\": \"abc123\" }", + "example_response": "{ \"data\": { \"editReplyOfNote\": { \"id\": 4, \"type\": \"Note\", \"objectOwnerId\": 4, \"pageNumber\": {}, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"attachments\": [Attachment], \"checkable\": false, \"status\": AnnotationStatus, \"collapsed\": false, \"seenBy\": [User], \"replies\": [NoteReply], \"content\": \"xyz789\", \"originalContent\": \"xyz789\", \"stylizedContent\": \"abc123\", \"positionX\": 987.65, \"positionY\": 123.45, \"positionZ\": 123.45, \"anchorX\": 987.65, \"anchorY\": 123.45, \"anchorZ\": 123.45, \"tx\": 987.65, \"ty\": 987.65, \"proofReadingMark\": ProofReadingMark, \"path\": \"xyz789\", \"selectable\": true, \"startTime\": 987.65, \"endTime\": 123.45 } } }" + }, + { + "name": "editRevision", + "type": "mutation", + "description": "Edit revision in an asset", + "response_type": "an Asset!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iRevisionSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editRevision( $id: ID!, $setup: iRevisionSetup ) { editRevision( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iRevisionSetup }", + "example_response": "{ \"data\": { \"editRevision\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"approvalSummary\": \"NONE\", \"approvalStatus\": [ApprovalActivityStatus], \"approvals\": [ApprovalCycle], \"workflowName\": \"abc123\", \"isAlias\": false, \"processes\": [Process], \"uuid\": \"xyz789\", \"priority\": 123, \"isCheckedOut\": true, \"checkedOutBy\": User, \"privateWorkingRevision\": 123, \"isArchived\": true, \"archiveId\": \"4\", \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"project\": Project, \"parents\": [Container], \"numberOfRevisions\": 123, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"medias\": [Media], \"notes\": [Note], \"relationFrom\": [Relation], \"relationTo\": [Relation], \"accessControls\": {} } } }" + }, + { + "name": "editRole", + "type": "mutation", + "description": "Edit a Role", + "response_type": "a Role!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iRoleSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editRole( $id: ID!, $setup: iRoleSetup ) { editRole( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{\"id\": 4, \"setup\": iRoleSetup}", + "example_response": "{ \"data\": { \"editRole\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"notifications\": [Notification] } } }" + }, + { + "name": "editSchemaExtension", + "type": "mutation", + "description": "", + "response_type": "a SchemaExtension!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iSchemaExtension!", + "description": "", + "required": true + } + ], + "example_query": "mutation editSchemaExtension( $id: ID!, $setup: iSchemaExtension! ) { editSchemaExtension( id: $id, setup: $setup ) { id type executionType name newOperation operations script securityRole usableInSharing } }", + "example_variables": "{\"id\": 4, \"setup\": iSchemaExtension}", + "example_response": "{ \"data\": { \"editSchemaExtension\": { \"id\": \"4\", \"type\": \"QUERY\", \"executionType\": \"GRAPHQL\", \"name\": \"abc123\", \"newOperation\": \"xyz789\", \"operations\": [\"abc123\"], \"script\": \"xyz789\", \"securityRole\": \"ADMIN\", \"usableInSharing\": true } } }" + }, + { + "name": "editSecurityProfile", + "type": "mutation", + "description": "to edit a profile", + "response_type": "a SecurityProfile", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iUserSecurityProfile", + "description": "", + "required": false + } + ], + "example_query": "mutation editSecurityProfile( $id: ID!, $setup: iUserSecurityProfile ) { editSecurityProfile( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } } }", + "example_variables": "{\"id\": 4, \"setup\": iUserSecurityProfile}", + "example_response": "{ \"data\": { \"editSecurityProfile\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"properties\": [SecurityProperty] } } }" + }, + { + "name": "editSharing", + "type": "mutation", + "description": "", + "response_type": "a Sharing!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iEditSharingSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editSharing( $id: ID!, $setup: iEditSharingSetup! ) { editSharing( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } key hasPinCode type startDate endDate isActive owner { ...UserFragment } entities { ...PagingResponseFragment } securityProfile { ...SecurityProfileFragment } } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iEditSharingSetup }", + "example_response": "{ \"data\": { \"editSharing\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"key\": \"xyz789\", \"hasPinCode\": false, \"type\": \"abc123\", \"startDate\": \"2007-12-03T10:15:30Z\", \"endDate\": \"2007-12-03T10:15:30Z\", \"isActive\": true, \"owner\": User, \"entities\": PagingResponse, \"securityProfile\": SecurityProfile } } }" + }, + { + "name": "editSmartCollection", + "type": "mutation", + "description": "To edit a SmartCollection", + "response_type": "[SmartCollection!]", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iSmartCollectionSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editSmartCollection( $id: [ID!]!, $setup: iSmartCollectionSetup! ) { editSmartCollection( id: $id, setup: $setup ) { id name description color lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } icon lName translations children { ...PagingResponseFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly accessControlList { ...AccessControlListFragment } searchProperties { ...SmartCollectionSearchPropertiesFragment } } }", + "example_variables": "{\"id\": [4], \"setup\": iSmartCollectionSetup}", + "example_response": "{ \"data\": { \"editSmartCollection\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"color\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"icon\": 4, \"lName\": \"abc123\", \"translations\": {}, \"children\": PagingResponse, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": false, \"accessControlList\": AccessControlList, \"searchProperties\": SmartCollectionSearchProperties } ] } }" + }, + { + "name": "editSynSet", + "type": "mutation", + "description": "", + "response_type": "a SynSet", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iSynSetEditParams", + "description": "", + "required": false + } + ], + "example_query": "mutation editSynSet( $id: ID!, $setup: iSynSetEditParams ) { editSynSet( id: $id, setup: $setup ) { id uri label creationDate glosses sentences words { ...WordFragment } hyponyms { ...SynSetFragment } hypernyms { ...SynSetFragment } } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iSynSetEditParams }", + "example_response": "{ \"data\": { \"editSynSet\": { \"id\": \"4\", \"uri\": \"http://www.test.com/\", \"label\": \"xyz789\", \"creationDate\": \"2007-12-03T10:15:30Z\", \"glosses\": {}, \"sentences\": [{}], \"words\": [Word], \"hyponyms\": [SynSet], \"hypernyms\": [SynSet] } } }" + }, + { + "name": "editUIFile", + "type": "mutation", + "description": "", + "response_type": "an UIProjectFile!", + "arguments": [ + { + "name": "from", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "path", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iUIFileSetup", + "description": "", + "required": false + }, + { + "name": "content", + "type": "String", + "description": "", + "required": false + } + ], + "example_query": "mutation editUIFile( $from: String!, $path: String!, $setup: iUIFileSetup, $content: String ) { editUIFile( from: $from, path: $path, setup: $setup, content: $content ) { isFolder name path id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } uiProject { ...UIProjectFragment } labels mimeType metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } translations } }", + "example_variables": "{ \"from\": \"xyz789\", \"path\": \"abc123\", \"setup\": iUIFileSetup, \"content\": \"xyz789\" }", + "example_response": "{ \"data\": { \"editUIFile\": { \"isFolder\": true, \"name\": \"xyz789\", \"path\": \"xyz789\", \"id\": \"4\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"uiProject\": UIProject, \"labels\": [\"abc123\"], \"mimeType\": \"xyz789\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"translations\": {} } } }" + }, + { + "name": "editUIProject", + "type": "mutation", + "description": "", + "response_type": "an UIProject", + "arguments": [ + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iUIProjectEditSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editUIProject( $name: String!, $setup: iUIProjectEditSetup ) { editUIProject( name: $name, setup: $setup ) { name id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } type icon labels translations } }", + "example_variables": "{ \"name\": \"xyz789\", \"setup\": iUIProjectEditSetup }", + "example_response": "{ \"data\": { \"editUIProject\": { \"name\": \"abc123\", \"id\": 4, \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"type\": \"abc123\", \"icon\": \"abc123\", \"labels\": [\"abc123\"], \"translations\": {} } } }" + }, + { + "name": "editUser", + "type": "mutation", + "description": "Edit an User", + "response_type": "a User!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iEditUserSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editUser( $id: ID!, $setup: iEditUserSetup ) { editUser( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } login userCanLog lang dateFormat unitResolution unitLength color image use2FA channel2FA sessionTimeout workCapacity workCapacityUnit firstName lastName email title company phone phone2 homePhone fax mobilePhone department address { ...AddressFragment } organization { ...OrganizationFragment } groups { ...GroupFragment } roles { ...RoleFragment } defaultProfile { ...UserSecurityProfileFragment } availableProfiles { ...UserSecurityProfileFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{\"id\": 4, \"setup\": iEditUserSetup}", + "example_response": "{ \"data\": { \"editUser\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"login\": \"xyz789\", \"userCanLog\": true, \"lang\": \"ar\", \"dateFormat\": \"abc123\", \"unitResolution\": \"abc123\", \"unitLength\": \"xyz789\", \"color\": \"xyz789\", \"image\": \"xyz789\", \"use2FA\": false, \"channel2FA\": \"AUTHENTICATOR\", \"sessionTimeout\": 123, \"workCapacity\": \"abc123\", \"workCapacityUnit\": \"xyz789\", \"firstName\": \"abc123\", \"lastName\": \"abc123\", \"email\": \"abc123\", \"title\": \"xyz789\", \"company\": \"abc123\", \"phone\": \"xyz789\", \"phone2\": \"abc123\", \"homePhone\": \"abc123\", \"fax\": \"abc123\", \"mobilePhone\": \"abc123\", \"department\": \"abc123\", \"address\": Address, \"organization\": Organization, \"groups\": [Group], \"roles\": [Role], \"defaultProfile\": UserSecurityProfile, \"availableProfiles\": [UserSecurityProfile], \"notifications\": [Notification] } } }" + }, + { + "name": "editUserAction", + "type": "mutation", + "description": "** Edit one or more user actions**", + "response_type": "[UserAction!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iUserAction!", + "description": "", + "required": true + } + ], + "example_query": "mutation editUserAction( $id: [ID!]!, $setup: iUserAction! ) { editUserAction( id: $id, setup: $setup ) { id description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } applyTo context enableGrouping assetMimeTypes script icon translations productionParticipants { ...ProductionParticipantFragment } workflow { ...WorkflowFragment } destination destinationCollection } }", + "example_variables": "{ \"id\": [\"4\"], \"setup\": iUserAction }", + "example_response": "{ \"data\": { \"editUserAction\": [ { \"id\": \"4\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"applyTo\": \"Folder\", \"context\": \"ORIGINAL_FILE\", \"enableGrouping\": true, \"assetMimeTypes\": [\"abc123\"], \"script\": \"abc123\", \"icon\": \"xyz789\", \"translations\": {}, \"productionParticipants\": [ProductionParticipant], \"workflow\": Workflow, \"destination\": \"WORKFLOW_DRIVEN\", \"destinationCollection\": \"abc123\" } ] } }" + }, + { + "name": "editUserPreference", + "type": "mutation", + "description": "Edit user preferences", + "response_type": "[UserPreference!]!", + "arguments": [ + { + "name": "id", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "setup", + "type": "iUserPreferenceSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation editUserPreference( $id: ID, $setup: iUserPreferenceSetup ) { editUserPreference( id: $id, setup: $setup ) { id name value } }", + "example_variables": "{\"id\": 4, \"setup\": iUserPreferenceSetup}", + "example_response": "{ \"data\": { \"editUserPreference\": [ { \"id\": 4, \"name\": \"xyz789\", \"value\": 4 } ] } }" + }, + { + "name": "editViewingCondition", + "type": "mutation", + "description": "", + "response_type": "a ViewingCondition!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iViewingCondition!", + "description": "", + "required": true + } + ], + "example_query": "mutation editViewingCondition( $id: ID!, $setup: iViewingCondition! ) { editViewingCondition( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } parents { ...ContainerFragment } renderingIntent gamutCheck profile rgb { ...WorkingSpaceSimulationFragment } cmyk { ...WorkingSpaceSimulationFragment } gray { ...WorkingSpaceSimulationFragment } useCloseLoop closeLoop { ...CloseLoopParamsFragment } } }", + "example_variables": "{ \"id\": \"4\", \"setup\": iViewingCondition }", + "example_response": "{ \"data\": { \"editViewingCondition\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"parents\": [Container], \"renderingIntent\": \"PaperWhite\", \"gamutCheck\": false, \"profile\": \"abc123\", \"rgb\": WorkingSpaceSimulation, \"cmyk\": WorkingSpaceSimulation, \"gray\": WorkingSpaceSimulation, \"useCloseLoop\": true, \"closeLoop\": CloseLoopParams } } }" + }, + { + "name": "editVolume", + "type": "mutation", + "description": "Edit a Volume", + "response_type": "[Volume!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iVolumeSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation editVolume( $id: [ID!]!, $setup: iVolumeSetup! ) { editVolume( id: $id, setup: $setup ) { id group access reference path nfsAlias smbAlias protocol server userName port } }", + "example_variables": "{ \"id\": [\"4\"], \"setup\": iVolumeSetup }", + "example_response": "{ \"data\": { \"editVolume\": [ { \"id\": \"4\", \"group\": \"ATTACHMENT\", \"access\": \"DISABLED\", \"reference\": \"xyz789\", \"path\": \"xyz789\", \"nfsAlias\": \"xyz789\", \"smbAlias\": \"xyz789\", \"protocol\": \"FILE\", \"server\": \"xyz789\", \"userName\": \"xyz789\", \"port\": 123 } ] } }" + }, + { + "name": "editWebAuthnRegistration", + "type": "mutation", + "description": "", + "response_type": "a WebAuthnRegistration", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "description", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation editWebAuthnRegistration( $id: ID!, $description: String! ) { editWebAuthnRegistration( id: $id, description: $description ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } credentialId signatureCounter user { ...UserFragment } } }", + "example_variables": "{ \"id\": \"4\", \"description\": \"abc123\" }", + "example_response": "{ \"data\": { \"editWebAuthnRegistration\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"credentialId\": \"4\", \"signatureCounter\": {}, \"user\": User } } }" + }, + { + "name": "editWorkflow", + "type": "mutation", + "description": "createWorkflowRevision(name:String!): Workflow! @security(role:ADMIN_WORKFLOW) To define the current revision of a Workflow setWorkflowCurrentRevision(name:String! revision:Int!): Workflow! @security(role:ADMIN_WORKFLOW) Workflow edition : ID AND entity id OR processId : to know which instance to edit", + "response_type": "a Workflow!", + "arguments": [ + { + "name": "id", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "entityId", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "processId", + "type": "ID", + "description": "", + "required": false + }, + { + "name": "description", + "type": "String", + "description": "", + "required": false + }, + { + "name": "parameters", + "type": "[iMetadataValue!]", + "description": "", + "required": true + }, + { + "name": "onCompletedRetention", + "type": "Int", + "description": "Default = -1", + "required": false + }, + { + "name": "onFailedRetention", + "type": "Int", + "description": "Default = -1", + "required": false + }, + { + "name": "activities", + "type": "[iActivity!]", + "description": "", + "required": true + }, + { + "name": "links", + "type": "[iLink!]", + "description": "", + "required": true + }, + { + "name": "layout", + "type": "iWorkflowLayout", + "description": "", + "required": false + }, + { + "name": "failHandler", + "type": "iFailHandler", + "description": "", + "required": false + } + ], + "example_query": "mutation editWorkflow( $id: ID, $entityId: ID, $processId: ID, $description: String, $parameters: [iMetadataValue!], $onCompletedRetention: Int, $onFailedRetention: Int, $activities: [iActivity!], $links: [iLink!], $layout: iWorkflowLayout, $failHandler: iFailHandler ) { editWorkflow( id: $id, entityId: $entityId, processId: $processId, description: $description, parameters: $parameters, onCompletedRetention: $onCompletedRetention, onFailedRetention: $onFailedRetention, activities: $activities, links: $links, layout: $layout, failHandler: $failHandler ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } priority applyOn activities { ...ActivityFragment } links { ...LinkFragment } layout { ...WorkflowLayoutFragment } parameters { ...MetadataValueFragment } onFailed { ...FailHandlerFragment } onCompletedRetention onFailedRetention } }", + "example_variables": "{ \"id\": \"4\", \"entityId\": \"4\", \"processId\": 4, \"description\": \"abc123\", \"parameters\": [iMetadataValue], \"onCompletedRetention\": -1, \"onFailedRetention\": -1, \"activities\": [iActivity], \"links\": [iLink], \"layout\": iWorkflowLayout, \"failHandler\": iFailHandler }", + "example_response": "{ \"data\": { \"editWorkflow\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"priority\": 987, \"applyOn\": \"Folder\", \"activities\": [Activity], \"links\": [Link], \"layout\": WorkflowLayout, \"parameters\": [MetadataValue], \"onFailed\": FailHandler, \"onCompletedRetention\": 123, \"onFailedRetention\": 123 } } }" + }, + { + "name": "editWorkflowEngineCapacity", + "type": "mutation", + "description": "Edit capacity of a Workflow Engine", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "from", + "type": "URL!", + "description": "", + "required": true + }, + { + "name": "capacity", + "type": "Int!", + "description": "", + "required": true + } + ], + "example_query": "mutation editWorkflowEngineCapacity( $from: URL!, $capacity: Int! ) { editWorkflowEngineCapacity( from: $from, capacity: $capacity ) }", + "example_variables": "{ \"from\": \"http://www.test.com/\", \"capacity\": 123 }", + "example_response": "{\"data\": {\"editWorkflowEngineCapacity\": false}}" + }, + { + "name": "enableNotifications", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "setup", + "type": "[iEnableDisableNotification!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation enableNotifications($setup: [iEnableDisableNotification!]!) { enableNotifications(setup: $setup) }", + "example_variables": "{\"setup\": [iEnableDisableNotification]}", + "example_response": "{\"data\": {\"enableNotifications\": true}}" + }, + { + "name": "finishWebAuthnRegistration", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "setup", + "type": "iWebAuthnRegistration!", + "description": "", + "required": true + } + ], + "example_query": "mutation finishWebAuthnRegistration($setup: iWebAuthnRegistration!) { finishWebAuthnRegistration(setup: $setup) }", + "example_variables": "{\"setup\": iWebAuthnRegistration}", + "example_response": "{\"data\": {\"finishWebAuthnRegistration\": true}}" + }, + { + "name": "importData", + "type": "mutation", + "description": "**Import the given file", + "response_type": "a Boolean", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "iImportCollection", + "description": "", + "required": false + } + ], + "example_query": "mutation importData( $id: ID!, $in: iImportCollection ) { importData( id: $id, in: $in ) }", + "example_variables": "{\"id\": 4, \"in\": iImportCollection}", + "example_response": "{\"data\": {\"importData\": true}}" + }, + { + "name": "markAsSeen", + "type": "mutation", + "description": "Returns a Boolean!", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation markAsSeen($id: ID!) { markAsSeen(id: $id) }", + "example_variables": "{\"id\": 4}", + "example_response": "{\"data\": {\"markAsSeen\": false}}" + }, + { + "name": "mergeAsset", + "type": "mutation", + "description": "Merge Assets with their revisions", + "response_type": "an Asset!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "with", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation mergeAsset( $id: ID!, $with: ID! ) { mergeAsset( id: $id, with: $with ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } }", + "example_variables": "{\"id\": 4, \"with\": \"4\"}", + "example_response": "{ \"data\": { \"mergeAsset\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"approvalSummary\": \"NONE\", \"approvalStatus\": [ApprovalActivityStatus], \"approvals\": [ApprovalCycle], \"workflowName\": \"abc123\", \"isAlias\": true, \"processes\": [Process], \"uuid\": \"xyz789\", \"priority\": 987, \"isCheckedOut\": true, \"checkedOutBy\": User, \"privateWorkingRevision\": 123, \"isArchived\": false, \"archiveId\": \"4\", \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"project\": Project, \"parents\": [Container], \"numberOfRevisions\": 123, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"medias\": [Media], \"notes\": [Note], \"relationFrom\": [Relation], \"relationTo\": [Relation], \"accessControls\": {} } } }" + }, + { + "name": "moveAsset", + "type": "mutation", + "description": "Move one or several Asset(s) into a Folder or a Project", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation moveAsset( $id: [ID!]!, $to: ID! ) { moveAsset( id: $id, to: $to ) }", + "example_variables": "{\"id\": [4], \"to\": \"4\"}", + "example_response": "{\"data\": {\"moveAsset\": false}}" + }, + { + "name": "moveCollection", + "type": "mutation", + "description": "To move a Collection", + "response_type": "[Collection!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "ID", + "description": "", + "required": false + } + ], + "example_query": "mutation moveCollection( $id: [ID!]!, $to: ID ) { moveCollection( id: $id, to: $to ) { id name description color lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } icon lName translations children { ...PagingResponseFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly accessControlList { ...AccessControlListFragment } path { ...CollectionFragment } parents { ...ContainerFragment } destination { ...EntityFragment } } }", + "example_variables": "{\"id\": [4], \"to\": \"4\"}", + "example_response": "{ \"data\": { \"moveCollection\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"color\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"icon\": \"4\", \"lName\": \"abc123\", \"translations\": {}, \"children\": PagingResponse, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": false, \"accessControlList\": AccessControlList, \"path\": [Collection], \"parents\": [Container], \"destination\": Entity } ] } }" + }, + { + "name": "moveFolder", + "type": "mutation", + "description": "To move a Folder - TODO Return type can't be folder anymore", + "response_type": "[Folder!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation moveFolder( $id: [ID!]!, $to: ID! ) { moveFolder( id: $id, to: $to ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly productionSettings { ...ProductionSettingsFragment } processes { ...ProcessFragment } accessControlList { ...AccessControlListFragment } children { ...PagingResponseFragment } project { ...ProjectFragment } parents { ...ContainerFragment } path { ...FolderFragment } color icon } }", + "example_variables": "{\"id\": [\"4\"], \"to\": 4}", + "example_response": "{ \"data\": { \"moveFolder\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": true, \"productionSettings\": ProductionSettings, \"processes\": [Process], \"accessControlList\": AccessControlList, \"children\": PagingResponse, \"project\": Project, \"parents\": [Container], \"path\": [Folder], \"color\": \"abc123\", \"icon\": \"4\" } ] } }" + }, + { + "name": "moveObjectFromCollectionToCollection", + "type": "mutation", + "description": "To move an object from one collection to another one", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "class", + "type": "CollectionableTypeName!", + "description": "", + "required": true + }, + { + "name": "from", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation moveObjectFromCollectionToCollection( $id: [ID!]!, $class: CollectionableTypeName!, $from: ID!, $to: ID! ) { moveObjectFromCollectionToCollection( id: $id, class: $class, from: $from, to: $to ) }", + "example_variables": "{ \"id\": [4], \"class\": \"ColorSpace\", \"from\": \"4\", \"to\": \"4\" }", + "example_response": "{\"data\": {\"moveObjectFromCollectionToCollection\": false}}" + }, + { + "name": "moveProjectFolder", + "type": "mutation", + "description": "To move a ProjectFolder - TODO using container as return for testing. Discuss long term return type.", + "response_type": "[Container!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation moveProjectFolder( $id: [ID!]!, $to: ID! ) { moveProjectFolder( id: $id, to: $to ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } children { ...PagingResponseFragment } } }", + "example_variables": "{\"id\": [\"4\"], \"to\": 4}", + "example_response": "{ \"data\": { \"moveProjectFolder\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"children\": PagingResponse } ] } }" + }, + { + "name": "moveProjectToCustomer", + "type": "mutation", + "description": "To move one or several project(s) to a customer", + "response_type": "[Project!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "to", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation moveProjectToCustomer( $id: [ID!]!, $to: ID! ) { moveProjectToCustomer( id: $id, to: $to ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } endDate metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status workflowName approvalStatus { ...ApprovalActivityStatusFragment } approvalSummary approvals { ...ApprovalCycleFragment } assetApprovals { ...ApprovalCycleFragment } children { ...PagingResponseFragment } assetWorkflow { ...WorkflowFragment } processes { ...ProcessFragment } projectTemplate { ...ProjectTemplateFragment } priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } reversedView customer { ...CustomerFragment } parents { ...ContainerFragment } mainAsset { ...AssetFragment } siteId productionParticipants { ...ProductionParticipantFragment } notes { ...NoteFragment } trimmedHeight trimmedWidth nbPages accessControls deadlines { ...ProjectDeadlineFragment } } }", + "example_variables": "{\"id\": [\"4\"], \"to\": 4}", + "example_response": "{ \"data\": { \"moveProjectToCustomer\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"endDate\": \"2007-12-03T10:15:30Z\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"workflowName\": \"abc123\", \"approvalStatus\": [ApprovalActivityStatus], \"approvalSummary\": \"NONE\", \"approvals\": [ApprovalCycle], \"assetApprovals\": [ApprovalCycle], \"children\": PagingResponse, \"assetWorkflow\": Workflow, \"processes\": [Process], \"projectTemplate\": ProjectTemplate, \"priority\": 123, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"reversedView\": true, \"customer\": Customer, \"parents\": [Container], \"mainAsset\": Asset, \"siteId\": \"4\", \"productionParticipants\": [ProductionParticipant], \"notes\": [Note], \"trimmedHeight\": 123.45, \"trimmedWidth\": 123.45, \"nbPages\": 123, \"accessControls\": {}, \"deadlines\": [ProjectDeadline] } ] } }" + }, + { + "name": "moveUser", + "type": "mutation", + "description": "Move an existing User in the specified Organization", + "response_type": "a User!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "in", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation moveUser( $id: ID!, $in: ID! ) { moveUser( id: $id, in: $in ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } login userCanLog lang dateFormat unitResolution unitLength color image use2FA channel2FA sessionTimeout workCapacity workCapacityUnit firstName lastName email title company phone phone2 homePhone fax mobilePhone department address { ...AddressFragment } organization { ...OrganizationFragment } groups { ...GroupFragment } roles { ...RoleFragment } defaultProfile { ...UserSecurityProfileFragment } availableProfiles { ...UserSecurityProfileFragment } notifications { ...NotificationFragment } } }", + "example_variables": "{ \"id\": \"4\", \"in\": \"4\" }", + "example_response": "{ \"data\": { \"moveUser\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"login\": \"abc123\", \"userCanLog\": true, \"lang\": \"ar\", \"dateFormat\": \"abc123\", \"unitResolution\": \"xyz789\", \"unitLength\": \"abc123\", \"color\": \"xyz789\", \"image\": \"xyz789\", \"use2FA\": false, \"channel2FA\": \"AUTHENTICATOR\", \"sessionTimeout\": 123, \"workCapacity\": \"abc123\", \"workCapacityUnit\": \"xyz789\", \"firstName\": \"abc123\", \"lastName\": \"abc123\", \"email\": \"abc123\", \"title\": \"abc123\", \"company\": \"xyz789\", \"phone\": \"abc123\", \"phone2\": \"abc123\", \"homePhone\": \"xyz789\", \"fax\": \"xyz789\", \"mobilePhone\": \"xyz789\", \"department\": \"abc123\", \"address\": Address, \"organization\": Organization, \"groups\": [Group], \"roles\": [Role], \"defaultProfile\": UserSecurityProfile, \"availableProfiles\": [UserSecurityProfile], \"notifications\": [Notification] } } }" + }, + { + "name": "putSecurityProperties", + "type": "mutation", + "description": "Add security properties to a security profile (user or mask)", + "response_type": "[SecurityProfile!]!", + "arguments": [ + { + "name": "to", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "properties", + "type": "[iSecurityProperty!]", + "description": "", + "required": true + } + ], + "example_query": "mutation putSecurityProperties( $to: [ID!]!, $properties: [iSecurityProperty!] ) { putSecurityProperties( to: $to, properties: $properties ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } } }", + "example_variables": "{ \"to\": [\"4\"], \"properties\": [iSecurityProperty] }", + "example_response": "{ \"data\": { \"putSecurityProperties\": [ { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"properties\": [SecurityProperty] } ] } }" + }, + { + "name": "putSecurityRoles", + "type": "mutation", + "description": "Add a security roles to a user Security Profile", + "response_type": "[UserSecurityProfile!]!", + "arguments": [ + { + "name": "to", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "securityRoles", + "type": "[SecurityRole!]", + "description": "", + "required": true + } + ], + "example_query": "mutation putSecurityRoles( $to: [ID!]!, $securityRoles: [SecurityRole!] ) { putSecurityRoles( to: $to, securityRoles: $securityRoles ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } securityRoles } }", + "example_variables": "{\"to\": [\"4\"], \"securityRoles\": [\"ADMIN\"]}", + "example_response": "{ \"data\": { \"putSecurityRoles\": [ { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"properties\": [SecurityProperty], \"securityRoles\": [\"ADMIN\"] } ] } }" + }, + { + "name": "reactivateSynSet", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "mode", + "type": "SynSetRetireMode", + "description": "Default = None", + "required": false + } + ], + "example_query": "mutation reactivateSynSet( $id: ID!, $mode: SynSetRetireMode ) { reactivateSynSet( id: $id, mode: $mode ) }", + "example_variables": "{\"id\": \"4\", \"mode\": \"None\"}", + "example_response": "{\"data\": {\"reactivateSynSet\": true}}" + }, + { + "name": "reject", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "The id(s) of the request approval(s) to reject", + "required": true + }, + { + "name": "comment", + "type": "String", + "description": "The comment associated to the reject action", + "required": false + }, + { + "name": "checkViewingCondition", + "type": "Boolean", + "description": "Specify if the viewing condition should be checked or not. Default = true", + "required": false + } + ], + "example_query": "mutation reject( $id: [ID!]!, $comment: String, $checkViewingCondition: Boolean ) { reject( id: $id, comment: $comment, checkViewingCondition: $checkViewingCondition ) }", + "example_variables": "{ \"id\": [\"4\"], \"comment\": \"abc123\", \"checkViewingCondition\": true }", + "example_response": "{\"data\": {\"reject\": false}}" + }, + { + "name": "rejectObject", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "The id(s) of the object(s) to reject", + "required": true + }, + { + "name": "comment", + "type": "String", + "description": "The comment associated to the reject action", + "required": false + }, + { + "name": "checkViewingCondition", + "type": "Boolean", + "description": "Specify if the viewing condition should be checked or not. Default = true", + "required": false + } + ], + "example_query": "mutation rejectObject( $id: [ID!]!, $comment: String, $checkViewingCondition: Boolean ) { rejectObject( id: $id, comment: $comment, checkViewingCondition: $checkViewingCondition ) }", + "example_variables": "{ \"id\": [\"4\"], \"comment\": \"abc123\", \"checkViewingCondition\": true }", + "example_response": "{\"data\": {\"rejectObject\": true}}" + }, + { + "name": "removeAssetAlias", + "type": "mutation", + "description": "To remove an Asset alias where 'id' is the Asset ID and 'from' defines a project or a project subfolder ID", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "from", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation removeAssetAlias( $id: [ID!]!, $from: ID! ) { removeAssetAlias( id: $id, from: $from ) }", + "example_variables": "{\"id\": [4], \"from\": 4}", + "example_response": "{\"data\": {\"removeAssetAlias\": true}}" + }, + { + "name": "removeCustomerFromGroup", + "type": "mutation", + "description": "Remove one or many Customers from one Group.", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "from", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation removeCustomerFromGroup( $id: [ID!]!, $from: ID! ) { removeCustomerFromGroup( id: $id, from: $from ) }", + "example_variables": "{\"id\": [4], \"from\": 4}", + "example_response": "{\"data\": {\"removeCustomerFromGroup\": true}}" + }, + { + "name": "removeCustomerFromOrganization", + "type": "mutation", + "description": "Remove one or many Customers from one Organization.", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "from", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation removeCustomerFromOrganization( $id: [ID!]!, $from: ID! ) { removeCustomerFromOrganization( id: $id, from: $from ) }", + "example_variables": "{\"id\": [\"4\"], \"from\": 4}", + "example_response": "{\"data\": {\"removeCustomerFromOrganization\": false}}" + }, + { + "name": "removeNoteAttachment", + "type": "mutation", + "description": "Returns a Boolean!", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation removeNoteAttachment($id: [ID!]!) { removeNoteAttachment(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"removeNoteAttachment\": false}}" + }, + { + "name": "removeObjectFromCollection", + "type": "mutation", + "description": "To remove an object from a Collection", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "class", + "type": "CollectionableTypeName!", + "description": "", + "required": true + }, + { + "name": "from", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation removeObjectFromCollection( $id: [ID!]!, $class: CollectionableTypeName!, $from: ID! ) { removeObjectFromCollection( id: $id, class: $class, from: $from ) }", + "example_variables": "{\"id\": [4], \"class\": \"ColorSpace\", \"from\": 4}", + "example_response": "{\"data\": {\"removeObjectFromCollection\": true}}" + }, + { + "name": "removeProfileFromUser", + "type": "mutation", + "description": "Remove one or many SecurityProfiles from one or many Users", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "from", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation removeProfileFromUser( $id: [ID!]!, $from: [ID!]! ) { removeProfileFromUser( id: $id, from: $from ) }", + "example_variables": "{ \"id\": [\"4\"], \"from\": [\"4\"] }", + "example_response": "{\"data\": {\"removeProfileFromUser\": true}}" + }, + { + "name": "removeRoleFromUser", + "type": "mutation", + "description": "Remove one or many Role(s) from one or many User(s)", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "from", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation removeRoleFromUser( $id: [ID!]!, $from: [ID!]! ) { removeRoleFromUser( id: $id, from: $from ) }", + "example_variables": "{\"id\": [4], \"from\": [4]}", + "example_response": "{\"data\": {\"removeRoleFromUser\": true}}" + }, + { + "name": "removeSecurityProperties", + "type": "mutation", + "description": "Remove security properties from a security profile (user or mask)", + "response_type": "[SecurityProfile!]!", + "arguments": [ + { + "name": "from", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "name", + "type": "[String!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation removeSecurityProperties( $from: [ID!]!, $name: [String!]! ) { removeSecurityProperties( from: $from, name: $name ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } } }", + "example_variables": "{\"from\": [4], \"name\": [\"abc123\"]}", + "example_response": "{ \"data\": { \"removeSecurityProperties\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"properties\": [SecurityProperty] } ] } }" + }, + { + "name": "removeSecurityRoles", + "type": "mutation", + "description": "Remove security roles from a user Security Profile", + "response_type": "[UserSecurityProfile!]!", + "arguments": [ + { + "name": "from", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "securityRoles", + "type": "[SecurityRole!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation removeSecurityRoles( $from: [ID!]!, $securityRoles: [SecurityRole!]! ) { removeSecurityRoles( from: $from, securityRoles: $securityRoles ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } securityRoles } }", + "example_variables": "{\"from\": [4], \"securityRoles\": [\"ADMIN\"]}", + "example_response": "{ \"data\": { \"removeSecurityRoles\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"properties\": [SecurityProperty], \"securityRoles\": [\"ADMIN\"] } ] } }" + }, + { + "name": "removeUserFromGroup", + "type": "mutation", + "description": "Remove one or many Users from one or many Groups that are not System Groups. All the Users provided will be removed from each Groups provided", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "from", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation removeUserFromGroup( $id: [ID!]!, $from: [ID!]! ) { removeUserFromGroup( id: $id, from: $from ) }", + "example_variables": "{ \"id\": [\"4\"], \"from\": [\"4\"] }", + "example_response": "{\"data\": {\"removeUserFromGroup\": false}}" + }, + { + "name": "renameAsset", + "type": "mutation", + "description": "Not yet implemented : To rename an Asset with Id newName is used to rename the asset", + "response_type": "an Asset!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "newName", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation renameAsset( $id: ID!, $newName: String! ) { renameAsset( id: $id, newName: $newName ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } }", + "example_variables": "{\"id\": 4, \"newName\": \"xyz789\"}", + "example_response": "{ \"data\": { \"renameAsset\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"approvalSummary\": \"NONE\", \"approvalStatus\": [ApprovalActivityStatus], \"approvals\": [ApprovalCycle], \"workflowName\": \"xyz789\", \"isAlias\": true, \"processes\": [Process], \"uuid\": \"abc123\", \"priority\": 123, \"isCheckedOut\": false, \"checkedOutBy\": User, \"privateWorkingRevision\": 987, \"isArchived\": true, \"archiveId\": 4, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"project\": Project, \"parents\": [Container], \"numberOfRevisions\": 987, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"medias\": [Media], \"notes\": [Note], \"relationFrom\": [Relation], \"relationTo\": [Relation], \"accessControls\": {} } } }" + }, + { + "name": "renameCollection", + "type": "mutation", + "description": "To rename a Collection", + "response_type": "a Collection!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "newName", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation renameCollection( $id: ID!, $newName: String! ) { renameCollection( id: $id, newName: $newName ) { id name description color lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } icon lName translations children { ...PagingResponseFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly accessControlList { ...AccessControlListFragment } path { ...CollectionFragment } parents { ...ContainerFragment } destination { ...EntityFragment } } }", + "example_variables": "{ \"id\": \"4\", \"newName\": \"abc123\" }", + "example_response": "{ \"data\": { \"renameCollection\": { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"xyz789\", \"color\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"icon\": 4, \"lName\": \"xyz789\", \"translations\": {}, \"children\": PagingResponse, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": false, \"accessControlList\": AccessControlList, \"path\": [Collection], \"parents\": [Container], \"destination\": Entity } } }" + }, + { + "name": "renameFolder", + "type": "mutation", + "description": "To rename a Folder", + "response_type": "a Folder!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "newName", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation renameFolder( $id: ID!, $newName: String! ) { renameFolder( id: $id, newName: $newName ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly productionSettings { ...ProductionSettingsFragment } processes { ...ProcessFragment } accessControlList { ...AccessControlListFragment } children { ...PagingResponseFragment } project { ...ProjectFragment } parents { ...ContainerFragment } path { ...FolderFragment } color icon } }", + "example_variables": "{\"id\": 4, \"newName\": \"abc123\"}", + "example_response": "{ \"data\": { \"renameFolder\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": true, \"productionSettings\": ProductionSettings, \"processes\": [Process], \"accessControlList\": AccessControlList, \"children\": PagingResponse, \"project\": Project, \"parents\": [Container], \"path\": [Folder], \"color\": \"xyz789\", \"icon\": \"4\" } } }" + }, + { + "name": "renameMetadataDefinition", + "type": "mutation", + "description": "To rename a metadata definition", + "response_type": "a MetadataDefinition", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation renameMetadataDefinition( $id: ID!, $name: String! ) { renameMetadataDefinition( id: $id, name: $name ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } nameSpace { ...MetadataNameSpaceFragment } type cardinality struct { ...MetadataDefinitionFragment } lName translations searchable availableInLayout saveInXmp required unique editable dictionary { ...DictionaryFragment } minRange maxRange minChar maxChar regex defaultValue } }", + "example_variables": "{\"id\": 4, \"name\": \"xyz789\"}", + "example_response": "{ \"data\": { \"renameMetadataDefinition\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"nameSpace\": MetadataNameSpace, \"type\": \"BOOLEAN\", \"cardinality\": \"SINGLE\", \"struct\": [MetadataDefinition], \"lName\": \"abc123\", \"translations\": {}, \"searchable\": false, \"availableInLayout\": true, \"saveInXmp\": false, \"required\": true, \"unique\": false, \"editable\": false, \"dictionary\": Dictionary, \"minRange\": Number, \"maxRange\": Number, \"minChar\": Number, \"maxChar\": Number, \"regex\": \"abc123\", \"defaultValue\": {} } } }" + }, + { + "name": "renameProject", + "type": "mutation", + "description": "To rename a Project with Id and newName", + "response_type": "a Project!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "newName", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation renameProject( $id: ID!, $newName: String! ) { renameProject( id: $id, newName: $newName ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } endDate metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status workflowName approvalStatus { ...ApprovalActivityStatusFragment } approvalSummary approvals { ...ApprovalCycleFragment } assetApprovals { ...ApprovalCycleFragment } children { ...PagingResponseFragment } assetWorkflow { ...WorkflowFragment } processes { ...ProcessFragment } projectTemplate { ...ProjectTemplateFragment } priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } reversedView customer { ...CustomerFragment } parents { ...ContainerFragment } mainAsset { ...AssetFragment } siteId productionParticipants { ...ProductionParticipantFragment } notes { ...NoteFragment } trimmedHeight trimmedWidth nbPages accessControls deadlines { ...ProjectDeadlineFragment } } }", + "example_variables": "{\"id\": 4, \"newName\": \"xyz789\"}", + "example_response": "{ \"data\": { \"renameProject\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"endDate\": \"2007-12-03T10:15:30Z\", \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"workflowName\": \"abc123\", \"approvalStatus\": [ApprovalActivityStatus], \"approvalSummary\": \"NONE\", \"approvals\": [ApprovalCycle], \"assetApprovals\": [ApprovalCycle], \"children\": PagingResponse, \"assetWorkflow\": Workflow, \"processes\": [Process], \"projectTemplate\": ProjectTemplate, \"priority\": 987, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"reversedView\": true, \"customer\": Customer, \"parents\": [Container], \"mainAsset\": Asset, \"siteId\": 4, \"productionParticipants\": [ProductionParticipant], \"notes\": [Note], \"trimmedHeight\": 123.45, \"trimmedWidth\": 987.65, \"nbPages\": 123, \"accessControls\": {}, \"deadlines\": [ProjectDeadline] } } }" + }, + { + "name": "renameProjectFolder", + "type": "mutation", + "description": "To rename a ProjectFolder", + "response_type": "a ProjectFolder!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "newName", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation renameProjectFolder( $id: ID!, $newName: String! ) { renameProjectFolder( id: $id, newName: $newName ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly productionSettings { ...ProductionSettingsFragment } processes { ...ProcessFragment } accessControlList { ...AccessControlListFragment } children { ...PagingResponseFragment } project { ...ProjectFragment } parents { ...ContainerFragment } path { ...ProjectFolderFragment } color icon } }", + "example_variables": "{ \"id\": \"4\", \"newName\": \"abc123\" }", + "example_response": "{ \"data\": { \"renameProjectFolder\": { \"id\": 4, \"name\": \"abc123\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": false, \"productionSettings\": ProductionSettings, \"processes\": [Process], \"accessControlList\": AccessControlList, \"children\": PagingResponse, \"project\": Project, \"parents\": [Container], \"path\": [ProjectFolder], \"color\": \"abc123\", \"icon\": 4 } } }" + }, + { + "name": "renameSmartCollection", + "type": "mutation", + "description": "To rename a SmartCollection", + "response_type": "a SmartCollection!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "newName", + "type": "String!", + "description": "", + "required": true + } + ], + "example_query": "mutation renameSmartCollection( $id: ID!, $newName: String! ) { renameSmartCollection( id: $id, newName: $newName ) { id name description color lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } icon lName translations children { ...PagingResponseFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly accessControlList { ...AccessControlListFragment } searchProperties { ...SmartCollectionSearchPropertiesFragment } } }", + "example_variables": "{\"id\": 4, \"newName\": \"xyz789\"}", + "example_response": "{ \"data\": { \"renameSmartCollection\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"abc123\", \"color\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"icon\": \"4\", \"lName\": \"xyz789\", \"translations\": {}, \"children\": PagingResponse, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"readOnly\": true, \"accessControlList\": AccessControlList, \"searchProperties\": SmartCollectionSearchProperties } } }" + }, + { + "name": "replyToNote", + "type": "mutation", + "description": "rank : The rank of the reply. This allows to insert a reply at a certain rank, provided a reply with this rank already exists. If not, the rank will be incremented.", + "response_type": "a Note!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "type", + "type": "NoteReplyType", + "description": "Default = Text", + "required": false + }, + { + "name": "comment", + "type": "String", + "description": "", + "required": false + }, + { + "name": "stylizedComment", + "type": "String", + "description": "", + "required": false + }, + { + "name": "rank", + "type": "Long", + "description": "", + "required": false + } + ], + "example_query": "mutation replyToNote( $id: ID!, $type: NoteReplyType, $comment: String, $stylizedComment: String, $rank: Long ) { replyToNote( id: $id, type: $type, comment: $comment, stylizedComment: $stylizedComment, rank: $rank ) { id type objectOwnerId pageNumber lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } attachments { ...AttachmentFragment } checkable status { ...AnnotationStatusFragment } collapsed seenBy { ...UserFragment } replies { ...NoteReplyFragment } content originalContent stylizedContent positionX positionY positionZ anchorX anchorY anchorZ tx ty proofReadingMark { ...ProofReadingMarkFragment } path selectable startTime endTime } }", + "example_variables": "{ \"id\": \"4\", \"type\": \"Text\", \"comment\": \"abc123\", \"stylizedComment\": \"abc123\", \"rank\": {} }", + "example_response": "{ \"data\": { \"replyToNote\": { \"id\": 4, \"type\": \"Note\", \"objectOwnerId\": 4, \"pageNumber\": {}, \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"attachments\": [Attachment], \"checkable\": true, \"status\": AnnotationStatus, \"collapsed\": true, \"seenBy\": [User], \"replies\": [NoteReply], \"content\": \"xyz789\", \"originalContent\": \"abc123\", \"stylizedContent\": \"xyz789\", \"positionX\": 123.45, \"positionY\": 987.65, \"positionZ\": 987.65, \"anchorX\": 987.65, \"anchorY\": 987.65, \"anchorZ\": 987.65, \"tx\": 987.65, \"ty\": 987.65, \"proofReadingMark\": ProofReadingMark, \"path\": \"xyz789\", \"selectable\": true, \"startTime\": 123.45, \"endTime\": 987.65 } } }" + }, + { + "name": "reprocessAsset", + "type": "mutation", + "description": "Reprocess an asset's workflow", + "response_type": "[Process!]!", + "arguments": [ + { + "name": "workflowName", + "type": "String", + "description": "", + "required": false + }, + { + "name": "on", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "fromTemplate", + "type": "Boolean", + "description": "Default = false", + "required": false + } + ], + "example_query": "mutation reprocessAsset( $workflowName: String, $on: [ID!]!, $fromTemplate: Boolean ) { reprocessAsset( workflowName: $workflowName, on: $on, fromTemplate: $fromTemplate ) { id priority status virtualStatus startTime steps { ...ActivityInstanceFragment } workflow { ...WorkflowFragment } stages { ...StageFragment } object { ...EntityFragment } } }", + "example_variables": "{ \"workflowName\": \"xyz789\", \"on\": [4], \"fromTemplate\": false }", + "example_response": "{ \"data\": { \"reprocessAsset\": [ { \"id\": 4, \"priority\": 123, \"status\": \"Created\", \"virtualStatus\": \"xyz789\", \"startTime\": \"2007-12-03T10:15:30Z\", \"steps\": [ActivityInstance], \"workflow\": Workflow, \"stages\": [Stage], \"object\": Entity } ] } }" + }, + { + "name": "resendMail", + "type": "mutation", + "description": "not yet implemented", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation resendMail($id: [ID!]!) { resendMail(id: $id) }", + "example_variables": "{\"id\": [4]}", + "example_response": "{\"data\": {\"resendMail\": true}}" + }, + { + "name": "reset2FAKey", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "id of the user", + "required": true + } + ], + "example_query": "mutation reset2FAKey($id: ID!) { reset2FAKey(id: $id) }", + "example_variables": "{\"id\": \"4\"}", + "example_response": "{\"data\": {\"reset2FAKey\": true}}" + }, + { + "name": "resetUserPassword", + "type": "mutation", + "description": "Generate temporary password for a user, if possible an email is sent to the user with that password. The password is valid during 10 mn", + "response_type": "a String!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation resetUserPassword($id: ID!) { resetUserPassword(id: $id) }", + "example_variables": "{\"id\": 4}", + "example_response": "{\"data\": {\"resetUserPassword\": \"xyz789\"}}" + }, + { + "name": "restartActivity", + "type": "mutation", + "description": "Restart a workflow on an object from an activity", + "response_type": "[Process!]!", + "arguments": [ + { + "name": "on", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "activityId", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation restartActivity( $on: [ID!]!, $activityId: ID! ) { restartActivity( on: $on, activityId: $activityId ) { id priority status virtualStatus startTime steps { ...ActivityInstanceFragment } workflow { ...WorkflowFragment } stages { ...StageFragment } object { ...EntityFragment } } }", + "example_variables": "{\"on\": [\"4\"], \"activityId\": 4}", + "example_response": "{ \"data\": { \"restartActivity\": [ { \"id\": \"4\", \"priority\": 987, \"status\": \"Created\", \"virtualStatus\": \"xyz789\", \"startTime\": \"2007-12-03T10:15:30Z\", \"steps\": [ActivityInstance], \"workflow\": Workflow, \"stages\": [Stage], \"object\": Entity } ] } }" + }, + { + "name": "restartProcess", + "type": "mutation", + "description": "Restart a workflow on an object from an activity", + "response_type": "[Process!]!", + "arguments": [ + { + "name": "on", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "activityId", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation restartProcess( $on: [ID!]!, $activityId: ID! ) { restartProcess( on: $on, activityId: $activityId ) { id priority status virtualStatus startTime steps { ...ActivityInstanceFragment } workflow { ...WorkflowFragment } stages { ...StageFragment } object { ...EntityFragment } } }", + "example_variables": "{\"on\": [4], \"activityId\": \"4\"}", + "example_response": "{ \"data\": { \"restartProcess\": [ { \"id\": 4, \"priority\": 987, \"status\": \"Created\", \"virtualStatus\": \"xyz789\", \"startTime\": \"2007-12-03T10:15:30Z\", \"steps\": [ActivityInstance], \"workflow\": Workflow, \"stages\": [Stage], \"object\": Entity } ] } }" + }, + { + "name": "retireSynSet", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "mode", + "type": "SynSetRetireMode", + "description": "Default = None", + "required": false + } + ], + "example_query": "mutation retireSynSet( $id: ID!, $mode: SynSetRetireMode ) { retireSynSet( id: $id, mode: $mode ) }", + "example_variables": "{\"id\": 4, \"mode\": \"None\"}", + "example_response": "{\"data\": {\"retireSynSet\": true}}" + }, + { + "name": "revokeUserConnection", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + } + ], + "example_query": "mutation revokeUserConnection($id: [ID!]) { revokeUserConnection(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"revokeUserConnection\": false}}" + }, + { + "name": "saveFile", + "type": "mutation", + "description": "-------- Deprecated ---------", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "in", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "parentPath", + "type": "String", + "description": "", + "required": false + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "content", + "type": "String", + "description": "", + "required": false + }, + { + "name": "overwrite", + "type": "Boolean", + "description": "Default = true", + "required": false + } + ], + "example_query": "mutation saveFile( $in: String!, $parentPath: String, $name: String!, $content: String, $overwrite: Boolean ) { saveFile( in: $in, parentPath: $parentPath, name: $name, content: $content, overwrite: $overwrite ) }", + "example_variables": "{ \"in\": \"abc123\", \"parentPath\": \"xyz789\", \"name\": \"abc123\", \"content\": \"abc123\", \"overwrite\": true }", + "example_response": "{\"data\": {\"saveFile\": false}}" + }, + { + "name": "saveUIFile", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "in", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "parentPath", + "type": "String", + "description": "Default = \"/\"", + "required": false + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "content", + "type": "String", + "description": "", + "required": false + } + ], + "example_query": "mutation saveUIFile( $in: String!, $parentPath: String, $name: String!, $content: String ) { saveUIFile( in: $in, parentPath: $parentPath, name: $name, content: $content ) }", + "example_variables": "{ \"in\": \"abc123\", \"parentPath\": \"/\", \"name\": \"abc123\", \"content\": \"xyz789\" }", + "example_response": "{\"data\": {\"saveUIFile\": false}}" + }, + { + "name": "setContent", + "type": "mutation", + "description": "replace the content of an asset the Asset must be checked out", + "response_type": "an Asset!", + "arguments": [ + { + "name": "file", + "type": "Upload", + "description": "", + "required": false + }, + { + "name": "on", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation setContent( $file: Upload, $on: ID! ) { setContent( file: $file, on: $on ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } }", + "example_variables": "{\"file\": Upload, \"on\": 4}", + "example_response": "{ \"data\": { \"setContent\": { \"id\": \"4\", \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"approvalSummary\": \"NONE\", \"approvalStatus\": [ApprovalActivityStatus], \"approvals\": [ApprovalCycle], \"workflowName\": \"xyz789\", \"isAlias\": false, \"processes\": [Process], \"uuid\": \"xyz789\", \"priority\": 987, \"isCheckedOut\": false, \"checkedOutBy\": User, \"privateWorkingRevision\": 987, \"isArchived\": false, \"archiveId\": 4, \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"project\": Project, \"parents\": [Container], \"numberOfRevisions\": 123, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"medias\": [Media], \"notes\": [Note], \"relationFrom\": [Relation], \"relationTo\": [Relation], \"accessControls\": {} } } }" + }, + { + "name": "setCorsSetting", + "type": "mutation", + "description": "", + "response_type": "a CorsSetting!", + "arguments": [ + { + "name": "setup", + "type": "iCorsSetup", + "description": "", + "required": false + } + ], + "example_query": "mutation setCorsSetting($setup: iCorsSetup) { setCorsSetting(setup: $setup) { enableCors allowedOrigins allowedMethods allowedHeaders exposedHeaders preflightMaxAge } }", + "example_variables": "{\"setup\": iCorsSetup}", + "example_response": "{ \"data\": { \"setCorsSetting\": { \"enableCors\": true, \"allowedOrigins\": [\"xyz789\"], \"allowedMethods\": [\"xyz789\"], \"allowedHeaders\": [\"xyz789\"], \"exposedHeaders\": [\"abc123\"], \"preflightMaxAge\": 987 } } }" + }, + { + "name": "setLogLevel", + "type": "mutation", + "description": "Set the server log level", + "response_type": "a LogLevel!", + "arguments": [ + { + "name": "level", + "type": "LogLevel", + "description": "The log level to set", + "required": false + } + ], + "example_query": "mutation setLogLevel($level: LogLevel) { setLogLevel(level: $level) }", + "example_variables": "{\"level\": \"ALL\"}", + "example_response": "{\"data\": {\"setLogLevel\": \"ALL\"}}" + }, + { + "name": "setLogQueries", + "type": "mutation", + "description": "To enable or disable the log of queries", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "logQueries", + "type": "Boolean!", + "description": "true = activate false = deactivate", + "required": true + } + ], + "example_query": "mutation setLogQueries($logQueries: Boolean!) { setLogQueries(logQueries: $logQueries) }", + "example_variables": "{\"logQueries\": false}", + "example_response": "{\"data\": {\"setLogQueries\": true}}" + }, + { + "name": "setMaxQueryComplexity", + "type": "mutation", + "description": "", + "response_type": "an Int!", + "arguments": [ + { + "name": "value", + "type": "Int!", + "description": "", + "required": true + } + ], + "example_query": "mutation setMaxQueryComplexity($value: Int!) { setMaxQueryComplexity(value: $value) }", + "example_variables": "{\"value\": 987}", + "example_response": "{\"data\": {\"setMaxQueryComplexity\": 987}}" + }, + { + "name": "setMaxQuerySize", + "type": "mutation", + "description": "", + "response_type": "an Int!", + "arguments": [ + { + "name": "value", + "type": "Int!", + "description": "", + "required": true + } + ], + "example_query": "mutation setMaxQuerySize($value: Int!) { setMaxQuerySize(value: $value) }", + "example_variables": "{\"value\": 987}", + "example_response": "{\"data\": {\"setMaxQuerySize\": 123}}" + }, + { + "name": "setMaxTopLevelFieldCount", + "type": "mutation", + "description": "", + "response_type": "an Int!", + "arguments": [ + { + "name": "value", + "type": "Int!", + "description": "", + "required": true + } + ], + "example_query": "mutation setMaxTopLevelFieldCount($value: Int!) { setMaxTopLevelFieldCount(value: $value) }", + "example_variables": "{\"value\": 987}", + "example_response": "{\"data\": {\"setMaxTopLevelFieldCount\": 987}}" + }, + { + "name": "setProperties", + "type": "mutation", + "description": "To set propert-y-ies", + "response_type": "[ConfigProperty!]", + "arguments": [ + { + "name": "properties", + "type": "[iConfigProperty!]!", + "description": "One or many definition of configuration properties", + "required": true + } + ], + "example_query": "mutation setProperties($properties: [iConfigProperty!]!) { setProperties(properties: $properties) { id category name value } }", + "example_variables": "{\"properties\": [iConfigProperty]}", + "example_response": "{ \"data\": { \"setProperties\": [ { \"id\": \"4\", \"category\": \"abc123\", \"name\": \"xyz789\", \"value\": \"abc123\" } ] } }" + }, + { + "name": "setSecurityRoles", + "type": "mutation", + "description": "replace security roles list to a user Security Profile", + "response_type": "[UserSecurityProfile!]!", + "arguments": [ + { + "name": "to", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "securityRoles", + "type": "[SecurityRole!]", + "description": "", + "required": true + } + ], + "example_query": "mutation setSecurityRoles( $to: [ID!]!, $securityRoles: [SecurityRole!] ) { setSecurityRoles( to: $to, securityRoles: $securityRoles ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } securityRoles } }", + "example_variables": "{\"to\": [4], \"securityRoles\": [\"ADMIN\"]}", + "example_response": "{ \"data\": { \"setSecurityRoles\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"properties\": [SecurityProperty], \"securityRoles\": [\"ADMIN\"] } ] } }" + }, + { + "name": "share", + "type": "mutation", + "description": "", + "response_type": "[Sharing!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "setup", + "type": "iCreateSharingSetup!", + "description": "", + "required": true + } + ], + "example_query": "mutation share( $id: [ID!]!, $setup: iCreateSharingSetup! ) { share( id: $id, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } key hasPinCode type startDate endDate isActive owner { ...UserFragment } entities { ...PagingResponseFragment } securityProfile { ...SecurityProfileFragment } } }", + "example_variables": "{ \"id\": [\"4\"], \"setup\": iCreateSharingSetup }", + "example_response": "{ \"data\": { \"share\": [ { \"id\": \"4\", \"name\": \"abc123\", \"description\": \"abc123\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"key\": \"xyz789\", \"hasPinCode\": false, \"type\": \"xyz789\", \"startDate\": \"2007-12-03T10:15:30Z\", \"endDate\": \"2007-12-03T10:15:30Z\", \"isActive\": true, \"owner\": User, \"entities\": PagingResponse, \"securityProfile\": SecurityProfile } ] } }" + }, + { + "name": "startFileProcess", + "type": "mutation", + "description": "", + "response_type": "a Process!", + "arguments": [ + { + "name": "workflowName", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "file", + "type": "Upload!", + "description": "", + "required": true + }, + { + "name": "parameters", + "type": "[iMetadataValue!]", + "description": "", + "required": true + }, + { + "name": "priority", + "type": "Int", + "description": "Default = 50", + "required": false + }, + { + "name": "callbackURL", + "type": "URL", + "description": "", + "required": false + } + ], + "example_query": "mutation startFileProcess( $workflowName: String!, $file: Upload!, $parameters: [iMetadataValue!], $priority: Int, $callbackURL: URL ) { startFileProcess( workflowName: $workflowName, file: $file, parameters: $parameters, priority: $priority, callbackURL: $callbackURL ) { id priority status virtualStatus startTime steps { ...ActivityInstanceFragment } workflow { ...WorkflowFragment } stages { ...StageFragment } object { ...EntityFragment } } }", + "example_variables": "{ \"workflowName\": \"xyz789\", \"file\": Upload, \"parameters\": [iMetadataValue], \"priority\": 50, \"callbackURL\": \"http://www.test.com/\" }", + "example_response": "{ \"data\": { \"startFileProcess\": { \"id\": 4, \"priority\": 123, \"status\": \"Created\", \"virtualStatus\": \"abc123\", \"startTime\": \"2007-12-03T10:15:30Z\", \"steps\": [ActivityInstance], \"workflow\": Workflow, \"stages\": [Stage], \"object\": Entity } } }" + }, + { + "name": "startProcess", + "type": "mutation", + "description": "Start a workflow on an object", + "response_type": "[Process!]!", + "arguments": [ + { + "name": "workflowName", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "on", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation startProcess( $workflowName: String!, $on: [ID!]! ) { startProcess( workflowName: $workflowName, on: $on ) { id priority status virtualStatus startTime steps { ...ActivityInstanceFragment } workflow { ...WorkflowFragment } stages { ...StageFragment } object { ...EntityFragment } } }", + "example_variables": "{ \"workflowName\": \"xyz789\", \"on\": [\"4\"] }", + "example_response": "{ \"data\": { \"startProcess\": [ { \"id\": \"4\", \"priority\": 123, \"status\": \"Created\", \"virtualStatus\": \"abc123\", \"startTime\": \"2007-12-03T10:15:30Z\", \"steps\": [ActivityInstance], \"workflow\": Workflow, \"stages\": [Stage], \"object\": Entity } ] } }" + }, + { + "name": "startURLProcess", + "type": "mutation", + "description": "To start a workflow without Object", + "response_type": "a Process!", + "arguments": [ + { + "name": "workflowName", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "url", + "type": "URL!", + "description": "", + "required": true + }, + { + "name": "parameters", + "type": "[iMetadataValue!]", + "description": "", + "required": true + }, + { + "name": "priority", + "type": "Int", + "description": "Default = 50", + "required": false + }, + { + "name": "callbackURL", + "type": "URL", + "description": "", + "required": false + } + ], + "example_query": "mutation startURLProcess( $workflowName: String!, $url: URL!, $parameters: [iMetadataValue!], $priority: Int, $callbackURL: URL ) { startURLProcess( workflowName: $workflowName, url: $url, parameters: $parameters, priority: $priority, callbackURL: $callbackURL ) { id priority status virtualStatus startTime steps { ...ActivityInstanceFragment } workflow { ...WorkflowFragment } stages { ...StageFragment } object { ...EntityFragment } } }", + "example_variables": "{ \"workflowName\": \"xyz789\", \"url\": \"http://www.test.com/\", \"parameters\": [iMetadataValue], \"priority\": 50, \"callbackURL\": \"http://www.test.com/\" }", + "example_response": "{ \"data\": { \"startURLProcess\": { \"id\": \"4\", \"priority\": 987, \"status\": \"Created\", \"virtualStatus\": \"xyz789\", \"startTime\": \"2007-12-03T10:15:30Z\", \"steps\": [ActivityInstance], \"workflow\": Workflow, \"stages\": [Stage], \"object\": Entity } } }" + }, + { + "name": "startUserAction", + "type": "mutation", + "description": "Start a user action on one or more objects", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "on", + "type": "[ID!]!", + "description": "", + "required": true + }, + { + "name": "parameters", + "type": "[iMetadataValue!]", + "description": "", + "required": true + } + ], + "example_query": "mutation startUserAction( $id: String!, $on: [ID!]!, $parameters: [iMetadataValue!] ) { startUserAction( id: $id, on: $on, parameters: $parameters ) }", + "example_variables": "{ \"id\": \"abc123\", \"on\": [4], \"parameters\": [iMetadataValue] }", + "example_response": "{\"data\": {\"startUserAction\": false}}" + }, + { + "name": "startWebAuthnRegistration", + "type": "mutation", + "description": "", + "response_type": "a WebAuthOptions!", + "arguments": [], + "example_query": "mutation startWebAuthnRegistration { startWebAuthnRegistration { sessionToken options } }", + "example_variables": "", + "example_response": "{ \"data\": { \"startWebAuthnRegistration\": { \"sessionToken\": 4, \"options\": \"xyz789\" } } }" + }, + { + "name": "stopStartNotificationSender", + "type": "mutation", + "description": "", + "response_type": "a Boolean", + "arguments": [], + "example_query": "mutation stopStartNotificationSender { stopStartNotificationSender }", + "example_variables": "", + "example_response": "{\"data\": {\"stopStartNotificationSender\": false}}" + }, + { + "name": "submitURLProcess", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "workflowName", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "url", + "type": "URL!", + "description": "", + "required": true + }, + { + "name": "parameters", + "type": "[iMetadataValue!]", + "description": "", + "required": true + }, + { + "name": "priority", + "type": "Int", + "description": "Default = 50", + "required": false + }, + { + "name": "scaleBy", + "type": "ScalingType", + "description": "Default = Activity", + "required": false + }, + { + "name": "callbackURL", + "type": "URL", + "description": "", + "required": false + } + ], + "example_query": "mutation submitURLProcess( $workflowName: String!, $url: URL!, $parameters: [iMetadataValue!], $priority: Int, $scaleBy: ScalingType, $callbackURL: URL ) { submitURLProcess( workflowName: $workflowName, url: $url, parameters: $parameters, priority: $priority, scaleBy: $scaleBy, callbackURL: $callbackURL ) }", + "example_variables": "{ \"workflowName\": \"xyz789\", \"url\": \"http://www.test.com/\", \"parameters\": [iMetadataValue], \"priority\": 50, \"scaleBy\": \"Activity\", \"callbackURL\": \"http://www.test.com/\" }", + "example_response": "{\"data\": {\"submitURLProcess\": false}}" + }, + { + "name": "trashObject", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation trashObject($id: [ID!]!) { trashObject(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"trashObject\": true}}" + }, + { + "name": "unTrashAllObjects", + "type": "mutation", + "description": "Untrash all objects that have been trashed with the current user", + "response_type": "a Boolean!", + "arguments": [], + "example_query": "mutation unTrashAllObjects { unTrashAllObjects }", + "example_variables": "", + "example_response": "{\"data\": {\"unTrashAllObjects\": true}}" + }, + { + "name": "unTrashObject", + "type": "mutation", + "description": "Untrash object(s)", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation unTrashObject($id: [ID!]!) { unTrashObject(id: $id) }", + "example_variables": "{\"id\": [\"4\"]}", + "example_response": "{\"data\": {\"unTrashObject\": true}}" + }, + { + "name": "updateFileSystemVolumeDiskId", + "type": "mutation", + "description": "Update a File System Volume Disk UUID", + "response_type": "[FileSystemVolume!]!", + "arguments": [ + { + "name": "id", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation updateFileSystemVolumeDiskId($id: [ID!]!) { updateFileSystemVolumeDiskId(id: $id) { id group access reference path nfsAlias smbAlias protocol server userName port host { ...HostFragment } diskId site folderRegExp folderExclRegExp fileRegExp fileExclRegExp projectTemplate { ...ProjectTemplateFragment } monitoringQueue monitoring versioning updateMetadata monitorOnBrowse accessControlList { ...AccessControlListFragment } } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"updateFileSystemVolumeDiskId\": [ { \"id\": 4, \"group\": \"ATTACHMENT\", \"access\": \"DISABLED\", \"reference\": \"xyz789\", \"path\": \"abc123\", \"nfsAlias\": \"abc123\", \"smbAlias\": \"xyz789\", \"protocol\": \"FILE\", \"server\": \"xyz789\", \"userName\": \"abc123\", \"port\": 123, \"host\": Host, \"diskId\": \"4\", \"site\": \"xyz789\", \"folderRegExp\": \"xyz789\", \"folderExclRegExp\": \"xyz789\", \"fileRegExp\": \"xyz789\", \"fileExclRegExp\": \"abc123\", \"projectTemplate\": ProjectTemplate, \"monitoringQueue\": \"abc123\", \"monitoring\": true, \"versioning\": true, \"updateMetadata\": false, \"monitorOnBrowse\": false, \"accessControlList\": AccessControlList } ] } }" + }, + { + "name": "uploadActivityIcon", + "type": "mutation", + "description": "upload an activity icon", + "response_type": "an UploadStatus!", + "arguments": [ + { + "name": "file", + "type": "Upload!", + "description": "", + "required": true + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "replace", + "type": "Boolean", + "description": "Default = false", + "required": false + } + ], + "example_query": "mutation uploadActivityIcon( $file: Upload!, $name: String!, $replace: Boolean ) { uploadActivityIcon( file: $file, name: $name, replace: $replace ) }", + "example_variables": "{ \"file\": Upload, \"name\": \"abc123\", \"replace\": false }", + "example_response": "{\"data\": {\"uploadActivityIcon\": \"ERROR\"}}" + }, + { + "name": "uploadAvatar", + "type": "mutation", + "description": "Returns an UploadStatus!", + "response_type": "an UploadStatus!", + "arguments": [ + { + "name": "file", + "type": "Upload!", + "description": "", + "required": true + }, + { + "name": "on", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation uploadAvatar( $file: Upload!, $on: ID! ) { uploadAvatar( file: $file, on: $on ) }", + "example_variables": "{ \"file\": Upload, \"on\": \"4\" }", + "example_response": "{\"data\": {\"uploadAvatar\": \"ERROR\"}}" + }, + { + "name": "uploadFile", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "in", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "parentPath", + "type": "String", + "description": "", + "required": false + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "content", + "type": "Upload!", + "description": "", + "required": true + }, + { + "name": "overwrite", + "type": "Boolean", + "description": "Default = true", + "required": false + } + ], + "example_query": "mutation uploadFile( $in: String!, $parentPath: String, $name: String!, $content: Upload!, $overwrite: Boolean ) { uploadFile( in: $in, parentPath: $parentPath, name: $name, content: $content, overwrite: $overwrite ) }", + "example_variables": "{ \"in\": \"abc123\", \"parentPath\": \"abc123\", \"name\": \"abc123\", \"content\": Upload, \"overwrite\": true }", + "example_response": "{\"data\": {\"uploadFile\": false}}" + }, + { + "name": "uploadIccProfile", + "type": "mutation", + "description": "", + "response_type": "an UploadStatus!", + "arguments": [ + { + "name": "file", + "type": "Upload!", + "description": "", + "required": true + } + ], + "example_query": "mutation uploadIccProfile($file: Upload!) { uploadIccProfile(file: $file) }", + "example_variables": "{\"file\": Upload}", + "example_response": "{\"data\": {\"uploadIccProfile\": \"ERROR\"}}" + }, + { + "name": "uploadImportFile", + "type": "mutation", + "description": "**Upload the given file in the imported files", + "response_type": "an UploadStatus!", + "arguments": [ + { + "name": "file", + "type": "Upload!", + "description": "", + "required": true + } + ], + "example_query": "mutation uploadImportFile($file: Upload!) { uploadImportFile(file: $file) }", + "example_variables": "{\"file\": Upload}", + "example_response": "{\"data\": {\"uploadImportFile\": \"ERROR\"}}" + }, + { + "name": "uploadOn", + "type": "mutation", + "description": "to upload on a specific Asset : temporary", + "response_type": "an Asset", + "arguments": [ + { + "name": "file", + "type": "Upload", + "description": "", + "required": false + }, + { + "name": "on", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation uploadOn( $file: Upload, $on: ID! ) { uploadOn( file: $file, on: $on ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } }", + "example_variables": "{\"file\": Upload, \"on\": 4}", + "example_response": "{ \"data\": { \"uploadOn\": { \"id\": 4, \"name\": \"xyz789\", \"description\": \"xyz789\", \"lastModificationDate\": \"2007-12-03T10:15:30Z\", \"lastModificationUser\": User, \"creationDate\": \"2007-12-03T10:15:30Z\", \"creationUser\": User, \"trashDate\": \"2007-12-03T10:15:30Z\", \"trashUser\": User, \"metadatas\": [MetadataValue], \"metadataProperties\": [MetadataValue], \"status\": [\"ACTIVE\"], \"approvalSummary\": \"NONE\", \"approvalStatus\": [ApprovalActivityStatus], \"approvals\": [ApprovalCycle], \"workflowName\": \"abc123\", \"isAlias\": true, \"processes\": [Process], \"uuid\": \"xyz789\", \"priority\": 123, \"isCheckedOut\": false, \"checkedOutBy\": User, \"privateWorkingRevision\": 123, \"isArchived\": true, \"archiveId\": \"4\", \"colorSpace\": ColorSpace, \"viewingCondition\": ViewingCondition, \"project\": Project, \"parents\": [Container], \"numberOfRevisions\": 987, \"expirationDate\": \"2007-12-03T10:15:30Z\", \"medias\": [Media], \"notes\": [Note], \"relationFrom\": [Relation], \"relationTo\": [Relation], \"accessControls\": {} } } }" + }, + { + "name": "uploadOnMilestone", + "type": "mutation", + "description": "To upload on a Milestone", + "response_type": "an UploadStatus", + "arguments": [ + { + "name": "file", + "type": "Upload!", + "description": "", + "required": true + }, + { + "name": "on", + "type": "ID!", + "description": "", + "required": true + }, + { + "name": "stepId", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation uploadOnMilestone( $file: Upload!, $on: ID!, $stepId: ID! ) { uploadOnMilestone( file: $file, on: $on, stepId: $stepId ) }", + "example_variables": "{ \"file\": Upload, \"on\": \"4\", \"stepId\": \"4\" }", + "example_response": "{\"data\": {\"uploadOnMilestone\": \"ERROR\"}}" + }, + { + "name": "uploadOrganizationLogo", + "type": "mutation", + "description": "Returns an UploadStatus!", + "response_type": "an UploadStatus!", + "arguments": [ + { + "name": "file", + "type": "Upload!", + "description": "", + "required": true + }, + { + "name": "on", + "type": "ID!", + "description": "", + "required": true + } + ], + "example_query": "mutation uploadOrganizationLogo( $file: Upload!, $on: ID! ) { uploadOrganizationLogo( file: $file, on: $on ) }", + "example_variables": "{\"file\": Upload, \"on\": 4}", + "example_response": "{\"data\": {\"uploadOrganizationLogo\": \"ERROR\"}}" + }, + { + "name": "uploadUIFile", + "type": "mutation", + "description": "", + "response_type": "a Boolean!", + "arguments": [ + { + "name": "in", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "parentPath", + "type": "String", + "description": "Default = \"/\"", + "required": false + }, + { + "name": "name", + "type": "String!", + "description": "", + "required": true + }, + { + "name": "content", + "type": "Upload!", + "description": "", + "required": true + } + ], + "example_query": "mutation uploadUIFile( $in: String!, $parentPath: String, $name: String!, $content: Upload! ) { uploadUIFile( in: $in, parentPath: $parentPath, name: $name, content: $content ) }", + "example_variables": "{ \"in\": \"abc123\", \"parentPath\": \"/\", \"name\": \"xyz789\", \"content\": Upload }", + "example_response": "{\"data\": {\"uploadUIFile\": false}}" + }, + { + "name": "uploadUserActionIcon", + "type": "mutation", + "description": "** Upload a user action icon**", + "response_type": "an UploadStatus!", + "arguments": [ + { + "name": "file", + "type": "Upload!", + "description": "", + "required": true + }, + { + "name": "on", + "type": "[ID!]!", + "description": "", + "required": true + } + ], + "example_query": "mutation uploadUserActionIcon( $file: Upload!, $on: [ID!]! ) { uploadUserActionIcon( file: $file, on: $on ) }", + "example_variables": "{ \"file\": Upload, \"on\": [\"4\"] }", + "example_response": "{\"data\": {\"uploadUserActionIcon\": \"ERROR\"}}" + }, + { + "name": "assetChange", + "type": "subscription", + "description": "", + "response_type": "an AssetEvent", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "types", + "type": "[EntityEventType!]", + "description": "", + "required": true + } + ], + "example_query": "subscription assetChange( $id: [ID!], $types: [EntityEventType!] ) { assetChange( id: $id, types: $types ) { id type object { ...AssetFragment } } }", + "example_variables": "{\"id\": [\"4\"], \"types\": [\"OBJECT_EDITED\"]}", + "example_response": "{ \"data\": { \"assetChange\": { \"id\": \"4\", \"type\": \"OBJECT_EDITED\", \"object\": Asset } } }" + }, + { + "name": "authenticationChanged", + "type": "subscription", + "description": "", + "response_type": "an AuthenticationEvent", + "arguments": [], + "example_query": "subscription authenticationChanged { authenticationChanged { id type object { ...AuthenticationFragment } } }", + "example_variables": "", + "example_response": "{ \"data\": { \"authenticationChanged\": { \"id\": \"4\", \"type\": \"OBJECT_EDITED\", \"object\": Authentication } } }" + }, + { + "name": "collectionChange", + "type": "subscription", + "description": "", + "response_type": "a CollectionEvent", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "types", + "type": "[EntityEventType!]", + "description": "", + "required": true + } + ], + "example_query": "subscription collectionChange( $id: [ID!], $types: [EntityEventType!] ) { collectionChange( id: $id, types: $types ) { id type object { ...CollectionFragment } } }", + "example_variables": "{\"id\": [\"4\"], \"types\": [\"OBJECT_EDITED\"]}", + "example_response": "{ \"data\": { \"collectionChange\": { \"id\": \"4\", \"type\": \"OBJECT_EDITED\", \"object\": Collection } } }" + }, + { + "name": "dummy", + "type": "subscription", + "description": "", + "response_type": "a Boolean", + "arguments": [], + "example_query": "subscription dummy { dummy }", + "example_variables": "", + "example_response": "{\"data\": {\"dummy\": true}}" + }, + { + "name": "folderChange", + "type": "subscription", + "description": "", + "response_type": "a FolderEvent", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "types", + "type": "[EntityEventType!]", + "description": "", + "required": true + } + ], + "example_query": "subscription folderChange( $id: [ID!], $types: [EntityEventType!] ) { folderChange( id: $id, types: $types ) { id type object { ...FolderFragment } } }", + "example_variables": "{\"id\": [\"4\"], \"types\": [\"OBJECT_EDITED\"]}", + "example_response": "{ \"data\": { \"folderChange\": { \"id\": 4, \"type\": \"OBJECT_EDITED\", \"object\": Folder } } }" + }, + { + "name": "mediaChange", + "type": "subscription", + "description": "", + "response_type": "a MediaEvent", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "types", + "type": "[EntityEventType!]", + "description": "", + "required": true + } + ], + "example_query": "subscription mediaChange( $id: [ID!], $types: [EntityEventType!] ) { mediaChange( id: $id, types: $types ) { id type object { ...MediaFragment } } }", + "example_variables": "{\"id\": [4], \"types\": [\"OBJECT_EDITED\"]}", + "example_response": "{ \"data\": { \"mediaChange\": { \"id\": \"4\", \"type\": \"OBJECT_EDITED\", \"object\": Media } } }" + }, + { + "name": "noteChange", + "type": "subscription", + "description": "", + "response_type": "an OldNoteEvent", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "types", + "type": "[NoteEventType!]", + "description": "", + "required": true + } + ], + "example_query": "subscription noteChange( $id: [ID!], $types: [NoteEventType!] ) { noteChange( id: $id, types: $types ) { id type note { ...NoteFragment } object { ...EntityFragment } } }", + "example_variables": "{\"id\": [\"4\"], \"types\": [\"NOTE_CREATED\"]}", + "example_response": "{ \"data\": { \"noteChange\": { \"id\": \"4\", \"type\": \"NOTE_CREATED\", \"note\": Note, \"object\": Entity } } }" + }, + { + "name": "notificationSender", + "type": "subscription", + "description": "", + "response_type": "a SenderEvent", + "arguments": [], + "example_query": "subscription notificationSender { notificationSender { id timeStamp type } }", + "example_variables": "", + "example_response": "{ \"data\": { \"notificationSender\": { \"id\": \"4\", \"timeStamp\": \"2007-12-03T10:15:30Z\", \"type\": \"NOTIFICATION_SENDER\" } } }" + }, + { + "name": "processChanged", + "type": "subscription", + "description": "", + "response_type": "a ProcessEvent!", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "omitSystemProcess", + "type": "Boolean", + "description": "Default = true", + "required": false + } + ], + "example_query": "subscription processChanged( $id: [ID!], $omitSystemProcess: Boolean ) { processChanged( id: $id, omitSystemProcess: $omitSystemProcess ) { type previousStatus newStatus processId stepId stepName workflowEngineId } }", + "example_variables": "{\"id\": [\"4\"], \"omitSystemProcess\": true}", + "example_response": "{ \"data\": { \"processChanged\": { \"type\": \"PROCESS_STATUS\", \"previousStatus\": \"Created\", \"newStatus\": \"Created\", \"processId\": \"4\", \"stepId\": \"4\", \"stepName\": \"xyz789\", \"workflowEngineId\": \"abc123\" } } }" + }, + { + "name": "projectChange", + "type": "subscription", + "description": "", + "response_type": "a ProjectEvent", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "types", + "type": "[EntityEventType!]", + "description": "", + "required": true + } + ], + "example_query": "subscription projectChange( $id: [ID!], $types: [EntityEventType!] ) { projectChange( id: $id, types: $types ) { id type object { ...ProjectFragment } } }", + "example_variables": "{\"id\": [4], \"types\": [\"OBJECT_EDITED\"]}", + "example_response": "{ \"data\": { \"projectChange\": { \"id\": 4, \"type\": \"OBJECT_EDITED\", \"object\": Project } } }" + }, + { + "name": "projectFolderChange", + "type": "subscription", + "description": "", + "response_type": "a ProjectFolderEvent", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "types", + "type": "[EntityEventType!]", + "description": "", + "required": true + } + ], + "example_query": "subscription projectFolderChange( $id: [ID!], $types: [EntityEventType!] ) { projectFolderChange( id: $id, types: $types ) { id type object { ...ProjectFolderFragment } } }", + "example_variables": "{\"id\": [4], \"types\": [\"OBJECT_EDITED\"]}", + "example_response": "{ \"data\": { \"projectFolderChange\": { \"id\": \"4\", \"type\": \"OBJECT_EDITED\", \"object\": ProjectFolder } } }" + }, + { + "name": "proofReadingMarkChange", + "type": "subscription", + "description": "", + "response_type": "a ProofReadingMarkEvent", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "types", + "type": "[EntityEventType!]", + "description": "", + "required": true + } + ], + "example_query": "subscription proofReadingMarkChange( $id: [ID!], $types: [EntityEventType!] ) { proofReadingMarkChange( id: $id, types: $types ) { id type object { ...ProofReadingMarkFragment } } }", + "example_variables": "{\"id\": [4], \"types\": [\"OBJECT_EDITED\"]}", + "example_response": "{ \"data\": { \"proofReadingMarkChange\": { \"id\": 4, \"type\": \"OBJECT_EDITED\", \"object\": ProofReadingMark } } }" + }, + { + "name": "reIndexAll", + "type": "subscription", + "description": "", + "response_type": "a ProgressEvent", + "arguments": [], + "example_query": "subscription reIndexAll { reIndexAll { total current percent } }", + "example_variables": "", + "example_response": "{\"data\": {\"reIndexAll\": {\"total\": {}, \"current\": {}, \"percent\": 987.65}}}" + }, + { + "name": "smartCollectionChange", + "type": "subscription", + "description": "", + "response_type": "a SmartCollectionEvent", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "types", + "type": "[EntityEventType!]", + "description": "", + "required": true + } + ], + "example_query": "subscription smartCollectionChange( $id: [ID!], $types: [EntityEventType!] ) { smartCollectionChange( id: $id, types: $types ) { id type object { ...SmartCollectionFragment } } }", + "example_variables": "{\"id\": [4], \"types\": [\"OBJECT_EDITED\"]}", + "example_response": "{ \"data\": { \"smartCollectionChange\": { \"id\": \"4\", \"type\": \"OBJECT_EDITED\", \"object\": SmartCollection } } }" + }, + { + "name": "userActionChange", + "type": "subscription", + "description": "", + "response_type": "an OldUserActionEvent", + "arguments": [], + "example_query": "subscription userActionChange { userActionChange { id type sources { ...EntityFragment } results { ...EntityFragment } } }", + "example_variables": "", + "example_response": "{ \"data\": { \"userActionChange\": { \"id\": \"4\", \"type\": \"USERACTION_STARTED\", \"sources\": [Entity], \"results\": [Entity] } } }" + }, + { + "name": "userChange", + "type": "subscription", + "description": "", + "response_type": "a UserEvent", + "arguments": [], + "example_query": "subscription userChange { userChange { id type object { ...UserFragment } } }", + "example_variables": "", + "example_response": "{ \"data\": { \"userChange\": { \"id\": \"4\", \"type\": \"OBJECT_EDITED\", \"object\": User } } }" + }, + { + "name": "whenNoteChange", + "type": "subscription", + "description": "", + "response_type": "a NoteEvent", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "types", + "type": "[NoteEventType!]", + "description": "", + "required": true + } + ], + "example_query": "subscription whenNoteChange( $id: [ID!], $types: [NoteEventType!] ) { whenNoteChange( id: $id, types: $types ) { id timeStamp type entityId entityType noteId params } }", + "example_variables": "{\"id\": [4], \"types\": [\"NOTE_CREATED\"]}", + "example_response": "{ \"data\": { \"whenNoteChange\": { \"id\": 4, \"timeStamp\": \"2007-12-03T10:15:30Z\", \"type\": \"NOTE_CREATED\", \"entityId\": \"4\", \"entityType\": \"Asset\", \"noteId\": \"4\", \"params\": {} } } }" + }, + { + "name": "whenObjectChange", + "type": "subscription", + "description": "ParentId only works with CREATE_OBJECT EntityEventType and not on Media and User EntityTypes", + "response_type": "an EntityEvent", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + }, + { + "name": "types", + "type": "[EntityEventType!]", + "description": "", + "required": true + }, + { + "name": "entityTypes", + "type": "[EntityType!]", + "description": "", + "required": true + }, + { + "name": "parentId", + "type": "ID", + "description": "", + "required": false + } + ], + "example_query": "subscription whenObjectChange( $id: [ID!], $types: [EntityEventType!], $entityTypes: [EntityType!], $parentId: ID ) { whenObjectChange( id: $id, types: $types, entityTypes: $entityTypes, parentId: $parentId ) { id type timeStamp entityId entityType } }", + "example_variables": "{ \"id\": [\"4\"], \"types\": [\"OBJECT_EDITED\"], \"entityTypes\": [\"Asset\"], \"parentId\": 4 }", + "example_response": "{ \"data\": { \"whenObjectChange\": { \"id\": 4, \"type\": \"OBJECT_EDITED\", \"timeStamp\": \"2007-12-03T10:15:30Z\", \"entityId\": 4, \"entityType\": \"Asset\" } } }" + }, + { + "name": "whenStepStatusChange", + "type": "subscription", + "description": "", + "response_type": "a StepEvent", + "arguments": [ + { + "name": "id", + "type": "[ID!]", + "description": "", + "required": true + } + ], + "example_query": "subscription whenStepStatusChange($id: [ID!]) { whenStepStatusChange(id: $id) { id entityId entityType timeStamp activityId activityName oldStatus status } }", + "example_variables": "{\"id\": [4]}", + "example_response": "{ \"data\": { \"whenStepStatusChange\": { \"id\": \"4\", \"entityId\": \"4\", \"entityType\": \"Asset\", \"timeStamp\": \"2007-12-03T10:15:30Z\", \"activityId\": \"4\", \"activityName\": \"abc123\", \"oldStatus\": \"abc123\", \"status\": \"abc123\" } } }" + }, + { + "name": "whenUserActionChange", + "type": "subscription", + "description": "Events for UserActions triggered by the current user", + "response_type": "a UserActionEvent", + "arguments": [], + "example_query": "subscription whenUserActionChange { whenUserActionChange { id type timeStamp sourceEntityIds sourceEntityTypes resultEntityIds resultEntityTypes } }", + "example_variables": "", + "example_response": "{ \"data\": { \"whenUserActionChange\": { \"id\": 4, \"type\": \"USERACTION_STARTED\", \"timeStamp\": \"2007-12-03T10:15:30Z\", \"sourceEntityIds\": [\"4\"], \"sourceEntityTypes\": [\"Asset\"], \"resultEntityIds\": [\"4\"], \"resultEntityTypes\": [\"Asset\"] } } }" + }, + { + "name": "whenUserChange", + "type": "subscription", + "description": "Subscribe to the changes of the current user.", + "response_type": "an EntityEvent", + "arguments": [], + "example_query": "subscription whenUserChange { whenUserChange { id type timeStamp entityId entityType } }", + "example_variables": "", + "example_response": "{ \"data\": { \"whenUserChange\": { \"id\": \"4\", \"type\": \"OBJECT_EDITED\", \"timeStamp\": \"2007-12-03T10:15:30Z\", \"entityId\": \"4\", \"entityType\": \"Asset\" } } }" + } + ] +} \ No newline at end of file diff --git a/docs/dalim-api-index.md b/docs/dalim-api-index.md new file mode 100644 index 0000000..d92ccc2 --- /dev/null +++ b/docs/dalim-api-index.md @@ -0,0 +1,675 @@ +# Dalim ES FUSiON API — Full Capability Index + +This file lists **all** GraphQL operations available in the Dalim ES FUSiON API. +For detailed docs (arguments, types, examples) on actively used endpoints, see `dalim-api-reference.md`. + +**Total: 466 operations** — 173 Queries, 272 Mutations, 21 Subscriptions + +## Authentication & System + +### Queries +- `whoami` — No description → `a Whoami!` +- `serverInformation` — No description → `a ServerInformation!` +- `authentications` — No description → `[Authentication!]!` +- `clientApplications` — No description → `[ClientApplication!]!` +- `getCorsSetting` — No description → `a CorsSetting!` +- `getLogLevel` — Return the current log level → `a LogLevel!` +- `getLogQueries` — Return if the server logs queries → `a Boolean!` +- `getMaxQueryComplexity` — No description → `an Int!` +- `getMaxQuerySize` — No description → `an Int!` +- `getMaxTopLevelFieldCount` — No description → `an Int!` +- `queryStatistics` — Return the current query' statistics → `[QueryStatistic!]!` +- `servlets` — List all registered servlet's name → `[String!]` +- `openDialogueConnection` — Open a Dialogue connection to a document → `a DialogueConnection!` +- `closeDialogueConnection` — Close a Dialogue connection → `an ID!` +- `dialogueConnections` — List open connections optionally to a single Asset with id/revision. → `[DialogueConnection!]` +- `get2FAQRCode` — Return the Authenticator QR code → `a Stream` +- `getSecret2FAKey` — Return the Authenticator secret key → `a String!` +- `send2FAQRCodeByEmail` — send the Authenticator QR code to the user per email → `a Boolean` +- `myWebAuthnRegistrations` — No description → `a WebAuthnPagingResponse!` +- `webAuthnRegistrations` — List all Webauthn registration of all users visible by the logged one. → `a WebAuthnPagingResponse!` +- `userConnectionById` — No description → `[UserConnection!]` +- `userConnectionByClientId` — No description → `[UserConnection!]` +- `userConnections` — No description → `a UserConnectionPagingResponse` + +### Mutations +- `connectAs` — Enable an Admin to connect to ES as another User. The response is identical to a standard login, a new AccessToken is... → `a JSON!` +- `disconnectAs` — When connected as another user, returns to the original login, the current token is revoked. The response is identica... → `a JSON!` +- `createAuthentication` — No description → `an Authentication!` +- `deleteAuthentication` — No description → `a Boolean!` +- `editAuthentication` — No description → `an Authentication!` +- `createClientApplication` — No description → `a ClientApplication!` +- `deleteClientApplication` — No description → `a Boolean!` +- `editClientApplication` — No description → `a ClientApplication!` +- `setCorsSetting` — No description → `a CorsSetting!` +- `setLogLevel` — Set the server log level → `a LogLevel!` +- `setLogQueries` — To enable or disable the log of queries → `a Boolean!` +- `setMaxQueryComplexity` — No description → `an Int!` +- `setMaxQuerySize` — No description → `an Int!` +- `setMaxTopLevelFieldCount` — No description → `an Int!` +- `reset2FAKey` — No description → `a Boolean!` +- `deleteMyWebAuthnRegistration` — No description → `a Boolean!` +- `deleteWebAuthnRegistration` — No description → `a Boolean!` +- `editMyWebAuthnRegistration` — No description → `a WebAuthnRegistration` +- `editWebAuthnRegistration` — No description → `a WebAuthnRegistration` +- `startWebAuthnRegistration` — No description → `a WebAuthOptions!` +- `finishWebAuthnRegistration` — No description → `a Boolean!` +- `revokeUserConnection` — No description → `a Boolean!` + +### Subscriptions +- `authenticationChanged` — No description → `an AuthenticationEvent` +- `reIndexAll` — No description → `a ProgressEvent` +- `dummy` — No description → `a Boolean` + +## Users & Profiles + +### Queries +- `users` — Retrieve visible users by the current logged user → `a UserPagingResponse!` +- `userById` — Retrieve user by id → `[User!]` +- `userPreference` — No description → `[UserPreference]` + +### Mutations +- `createUser` — Create an User in the specified Organization → `a User!` +- `changeUser` — No description → `a User!` +- `deleteUser` — Delete one or many Users → `a Boolean!` +- `editUser` — Edit an User → `a User!` +- `editMyUser` — No description → `a User!` +- `moveUser` — Move an existing User in the specified Organization → `a User!` +- `changeMyPassword` — No description → `a Boolean!` +- `changeMyProfile` — No description → `a JSON!` +- `resetUserPassword` — Generate temporary password for a user, if possible an email is sent to the user with that password. The password is ... → `a String!` +- `editUserPreference` — Edit user preferences → `[UserPreference!]!` +- `uploadAvatar` — Returns an UploadStatus! → `an UploadStatus!` + +### Subscriptions +- `userChange` — No description → `a UserEvent` +- `whenUserChange` — Subscribe to the changes of the current user. → `an EntityEvent` + +## Security Profiles + +### Queries +- `securityProfiles` — Retrieve SecurityProfile by filter → `a SecurityProfilePagingResponse!` +- `securityProfileById` — Retrieve SecurityProfile by id → `[SecurityProfile!]` +- `securityRoles` — List all SecurityRoles → `[SecurityRoleDefinition!]!` + +### Mutations +- `createAdminSecurityProfile` — No description → `a UserSecurityProfile` +- `createDefaultSecurityProfile` — No description → `a UserSecurityProfile` +- `createUserSecurityProfile` — No description → `a UserSecurityProfile` +- `createSecurityProfileMask` — No description → `a SecurityProfileMask` +- `deleteSecurityProfile` — No description → `a Boolean!` +- `editSecurityProfile` — to edit a profile → `a SecurityProfile` +- `duplicateSecurityProfile` — to duplicate a profile → `a SecurityProfile` +- `addProfileToUser` — Add one or many SecurityProfiles to one or many Users → `a Boolean!` +- `removeProfileFromUser` — Remove one or many SecurityProfiles from one or many Users → `a Boolean!` +- `putSecurityProperties` — Add security properties to a security profile (user or mask) → `[SecurityProfile!]!` +- `removeSecurityProperties` — Remove security properties from a security profile (user or mask) → `[SecurityProfile!]!` +- `putSecurityRoles` — Add a security roles to a user Security Profile → `[UserSecurityProfile!]!` +- `removeSecurityRoles` — Remove security roles from a user Security Profile → `[UserSecurityProfile!]!` +- `setSecurityRoles` — replace security roles list to a user Security Profile → `[UserSecurityProfile!]!` + +## Groups & Roles + +### Queries +- `groups` — Retrieve visible groups by the current logged user → `a GroupPagingResponse!` +- `groupById` — Retrieve group by id → `[Group!]` +- `roles` — Retrieve visible roles by the current logged user → `a RolePagingResponse!` +- `roleById` — Retrieve role by id → `[Role!]` + +### Mutations +- `createGroup` — Create a Group in the specified Organization → `a Group!` +- `deleteGroup` — Delete one or many Groups that are not System Groups → `a Boolean!` +- `editGroup` — Edit a Group that is not a System Group → `a Group!` +- `addUserToGroup` — Add one or many Users to one or many Groups that are not System Groups. All the Users provided will be added to each ... → `a Boolean!` +- `removeUserFromGroup` — Remove one or many Users from one or many Groups that are not System Groups. All the Users provided will be removed f... → `a Boolean!` +- `createRole` — Create a Role → `a Role!` +- `deleteRole` — Delete one or many Role(s) → `a Boolean!` +- `editRole` — Edit a Role → `a Role!` +- `addRoleToUser` — Add one or many Role(s) to one or many User(s) → `a Boolean!` +- `removeRoleFromUser` — Remove one or many Role(s) from one or many User(s) → `a Boolean!` + +## Organizations & Customers + +### Queries +- `organizations` — Retrieve visible organizations by the current logged user → `an OrganizationPagingResponse!` +- `organizationById` — No description → `[Organization!]` +- `organizationsByFilter` — No description → `an OrganizationPagingResponse!` +- `customers` — Retrieve Customers by filter → `a CustomerPagingResponse!` +- `customerById` — Retrieve Customers by ID or [ID] → `[Customer!]` + +### Mutations +- `createOrganization` — Create an Organization in the specified Organization → `an Organization!` +- `deleteOrganization` — Delete one or many Organizations → `a Boolean!` +- `editOrganization` — Edit an Organization → `an Organization!` +- `uploadOrganizationLogo` — Returns an UploadStatus! → `an UploadStatus!` +- `createCustomer` — Create a Customer → `a Customer!` +- `deleteCustomer` — Delete one or many Customer(s) → `a Boolean!` +- `editCustomer` — Edit a Customer → `a Customer!` +- `addCustomerToGroup` — **Add one or many Customers to one group. → `a Boolean!` +- `addCustomerToOrganization` — **Add one or many Customers to one Organization. → `a Boolean!` +- `removeCustomerFromGroup` — Remove one or many Customers from one Group. → `a Boolean!` +- `removeCustomerFromOrganization` — Remove one or many Customers from one Organization. → `a Boolean!` + +## Projects + +### Queries +- `projects` — Retrieve Projects by filter → `a ProjectPagingResponse!` +- `projectById` — Retrieve Projects by ID or [ID] → `[Project!]` +- `projectTemplates` — Retrieve Project Templates → `a ProjectTemplateResponse!` +- `projectTemplateById` — Retrieve Project Templates by ID or [ID] → `[ProjectTemplate!]` +- `projectFolderById` — Returns ProjectFolders by their IDs TODO Change security role → `[ProjectFolder!]` +- `participantsByRoleFilter` — Retrieve visible participants that can use the given role in production list → `[Participant!]` + +### Mutations +- `createProject` — security role handle by the mutationFetcher itself To create a Project for a Customer with a name → `a Project!` +- `deleteProject` — To delete a Project. By default the project is moved to the trash → `a Boolean!` +- `renameProject` — To rename a Project with Id and newName → `a Project!` +- `duplicateProject` — To duplicate a project → `a Project!` +- `editProject` — To edit a Project → `[Project!]` +- `moveProjectToCustomer` — To move one or several project(s) to a customer → `[Project!]!` +- `createProjectFolder` — To create a ProjectFolder - Note: reusing iFoldersetup for now as iProjectFolderSetup would be identical → `a ProjectFolder!` +- `deleteProjectFolder` — To delete a ProjectFolder. By default the ProjectFolder is moved to the trash → `a Boolean!` +- `renameProjectFolder` — To rename a ProjectFolder → `a ProjectFolder!` +- `editProjectFolder` — To edit a ProjectFolder → `[ProjectFolder!]` +- `moveProjectFolder` — To move a ProjectFolder - TODO using container as return for testing. Discuss long term return type. → `[Container!]!` +- `createProjectTemplate` — To create a ProjectTemplate → `a ProjectTemplate!` +- `deleteProjectTemplate` — To delete a ProjectTemplate → `a Boolean!` +- `editProjectTemplate` — To edit a ProjectTemplate → `[ProjectTemplate!]` +- `duplicateProjectTemplate` — To duplicate a ProjectTemplate → `a ProjectTemplate!` +- `createFolderFromProject` — To create a Folder from a Project in the selected Folder → `a Folder!` +- `createProjectFromFolder` — To create a project from an existing filesystem Folder → `a Project!` + +### Subscriptions +- `projectChange` — No description → `a ProjectEvent` +- `projectFolderChange` — No description → `a ProjectFolderEvent` + +## Folders + +### Queries +- `folders` — Returns the paginated list of top-level folders.Use triggerMonitoring to override volume monitorOnBrowse setting → `a FolderPagingResponse!` +- `folderById` — Retrieve Folders by ID or [ID]. Use triggerMonitoring to override volume monitorOnBrowse setting, determining whether... → `[Folder!]` + +### Mutations +- `createFolder` — To create a Folder → `a Folder!` +- `deleteFolder` — To delete a Folder. By default the Folder is moved to the trash → `a Boolean!` +- `renameFolder` — To rename a Folder → `a Folder!` +- `moveFolder` — To move a Folder - TODO Return type can't be folder anymore → `[Folder!]!` +- `editFolder` — To edit a Folder → `[Folder!]` + +### Subscriptions +- `folderChange` — No description → `a FolderEvent` + +## Assets + +### Queries +- `assets` — Retrieve Assets by filter → `an AssetPagingResponse!` +- `assetById` — Retrieve Assets by ID or [ID] → `[Asset!]` +- `downloadAsset` — Stream an Asset → `a Stream` +- `downloadAssetWithNotes` — Download one Asset or a .zip of several Assets with notes translated to PDF annotations → `a Stream` +- `streamAttachment` — No description → `a Stream` +- `streamFile` — Stream a subFile of an Asset → `a Stream` + +### Mutations +- `createAsset` — To create an Asset. → `an AssetCreationStatus!` +- `deleteAsset` — To delete an Asset. By default the Asset is moved to the trash → `a Boolean!` +- `renameAsset` — Not yet implemented : To rename an Asset with Id newName is used to rename the asset → `an Asset!` +- `moveAsset` — Move one or several Asset(s) into a Folder or a Project → `a Boolean!` +- `editAsset` — To edit an Asset → `[Asset!]` +- `checkOutAsset` — To checkOut the Asset(s) with Id or Ids → `[Asset!]` +- `checkInAsset` — To checkin a new version of an Asset → `an Asset!` +- `cancelCheckOutAsset` — To cancel the checkout of an Asset → `[Asset!]` +- `copyAssetToFolder` — Duplicate an asset. WARNING It is not currently possible to copy an asset between two ProjectFolders in the same Proj... → `[Asset!]!` +- `createAssetAlias` — To create an Asset alias where 'id' is the Asset ID and 'to' defines a project or a project subfolder ID → `a Boolean!` +- `removeAssetAlias` — To remove an Asset alias where 'id' is the Asset ID and 'from' defines a project or a project subfold... → `a Boolean!` +- `mergeAsset` — Merge Assets with their revisions → `an Asset!` +- `reprocessAsset` — Reprocess an asset's workflow → `[Process!]!` +- `editRevision` — Edit revision in an asset → `an Asset!` +- `editInk` — This is to edit the opacity of the inks of a Asset/Revision or Media → `a Media!` +- `uploadFile` — No description → `a Boolean!` +- `uploadOn` — to upload on a specific Asset : temporary → `an Asset` +- `uploadOnMilestone` — To upload on a Milestone → `an UploadStatus` + +### Subscriptions +- `assetChange` — No description → `an AssetEvent` +- `mediaChange` — No description → `a MediaEvent` + +## Collections + +### Queries +- `collections` — Returns the paginated list of top-level collections. → `a CollectionPagingResponse!` +- `collectionById` — Retrieve Collections by ID or [ID] → `[Collection!]` +- `anyCollections` — Returns the paginated list of any top-level collections (Smart Collections and Collections). → `an AnyCollectionPagingResponse!` +- `smartCollections` — Returns the paginated list of smart collections. → `a SmartCollectionPagingResponse!` +- `smartCollectionById` — Retrieve Smart Collection by ID or [ID] → `[SmartCollection!]` + +### Mutations +- `createCollection` — To create a Collection → `a Collection!` +- `deleteCollection` — To delete a Collection. By default the Collection is moved to the trash → `a Boolean!` +- `renameCollection` — To rename a Collection → `a Collection!` +- `editCollection` — To edit a Collection → `[Collection!]` +- `addObjectToCollection` — To add an object in a Collection → `a Boolean!` +- `removeObjectFromCollection` — To remove an object from a Collection → `a Boolean!` +- `moveCollection` — To move a Collection → `[Collection!]!` +- `moveObjectFromCollectionToCollection` — To move an object from one collection to another one → `a Boolean!` +- `createSmartCollection` — To create a SmartCollection → `a SmartCollection!` +- `deleteSmartCollection` — To delete a SmartCollection. By default the SmartCollection is moved to the trash → `a Boolean!` +- `editSmartCollection` — To edit a SmartCollection → `[SmartCollection!]` +- `renameSmartCollection` — To rename a SmartCollection → `a SmartCollection!` + +### Subscriptions +- `collectionChange` — No description → `a CollectionEvent` +- `smartCollectionChange` — No description → `a SmartCollectionEvent` + +## Search & Filters + +### Queries +- `search` — No description → `a SearchResponse` +- `searchBySmartCollection` — No description → `a SearchResponse` +- `entityByPath` — No description → `[EntityPath!]` +- `dumpText` — Dump the text contained in the document → `[TextPage!]` +- `namedSearchFilters` — No description → `[NamedSearchFilter!]!` +- `namedSearchFilterById` — No description → `[NamedSearchFilter!]!` +- `namedSearchFilterByName` — No description → `[NamedSearchFilter!]!` + +### Mutations +- `createNamedSearchFilter` — No description → `a NamedSearchFilter!` +- `editNamedSearchFilter` — No description → `a NamedSearchFilter!` + +## Approvals + +### Queries +- `approvals` — Retrieve objects to approve by the current logged user → `an ApprovalPagingResponse!` +- `approvalsByUser` — Retrieve objects to approve for a specific user → `an ApprovalPagingResponse!` + +### Mutations +- `approve` — No description → `a Boolean!` +- `approveObject` — No description → `a Boolean!` +- `reject` — No description → `a Boolean!` +- `rejectObject` — No description → `a Boolean!` + +## Workflows & Processes + +### Queries +- `workflows` — Retrieve Workflows by filter → `a WorkflowPagingResponse!` +- `workflowsById` — Retrieve Workflows by ID or [ID] → `[Workflow!]` +- `workflowsByName` — Retrieve Workflows by name or [name] When revision is not defined returns the current revision, when revision is 0 re... → `[Workflow!]` +- `workflowsByEntity` — No description → `[Workflow!]` +- `workflowEngine` — Retrieve Workflow Engine infos → `a WorkflowEngine!` +- `processes` — Retrieve Processes by filter → `a ProcessPagingResponse!` +- `processById` — Retrieve Processes by ID or [ID] → `[Process!]` +- `processMonitoring` — Workflow activity → `a MonitoringPagingResponse!` + +### Mutations +- `createWorkflow` — Worflow creation → `a Workflow!` +- `deleteWorkflow` — Workflow deletion : to delete a workflow with entityId 0 → `a Boolean!` +- `editWorkflow` — createWorkflowRevision(name:String!): Workflow! @security(role:ADMIN_WORKFLOW) To define the current revision of a Wo... → `a Workflow!` +- `duplicateWorkflow` — deleteWorkflowRevision(name:String! revision:Int!):Boolean! @security(role:ADMIN_WORKFLOW) Workflow duplication in ca... → `a Workflow!` +- `editWorkflowEngineCapacity` — Edit capacity of a Workflow Engine → `a Boolean!` +- `cancelProcess` — To cancel a workflow → `[Process!]!` +- `deleteProcess` — To delete a Process → `a Boolean!` +- `changeProcessPriority` — To change the priority of a workflow → `[Process!]!` +- `startProcess` — Start a workflow on an object → `[Process!]!` +- `startFileProcess` — No description → `a Process!` +- `startURLProcess` — To start a workflow without Object → `a Process!` +- `submitURLProcess` — No description → `a Boolean!` +- `restartProcess` — Restart a workflow on an object from an activity → `[Process!]!` +- `restartActivity` — Restart a workflow on an object from an activity → `[Process!]!` + +### Subscriptions +- `processChanged` — No description → `a ProcessEvent!` + +## Notes & Annotations + +### Queries +- `getNotes` — Returns [Note]! → `[Note]!` +- `noteReport` — **Generate a Report for one or several Asset(s) ** → `a Stream` +- `annotationStatuses` — No description → `[AnnotationStatus!]` +- `annotationStatusById` — No description → `[AnnotationStatus!]` +- `proofReadingMarks` — Returns a ProofReadingMarkPagingResponse! → `a ProofReadingMarkPagingResponse!` +- `proofReadingMarksById` — Returns [ProofReadingMark!] → `[ProofReadingMark!]` +- `myProofReadingMarks` — Returns a ProofReadingMarkPagingResponse! → `a ProofReadingMarkPagingResponse!` +- `myProofReadingMarksById` — Returns [ProofReadingMark!] → `[ProofReadingMark!]` + +### Mutations +- `createNote` — Returns [Note!]! → `[Note!]!` +- `deleteNote` — Returns a Boolean! → `a Boolean!` +- `editNote` — Returns a Note! → `a Note!` +- `replyToNote` — rank : The rank of the reply. This allows to insert a reply at a certain rank, provided a reply with this rank alread... → `a Note!` +- `editReplyOfNote` — Returns a Note! → `a Note!` +- `deleteReplyOfNote` — Returns a Note! → `a Note!` +- `addNoteAttachment` — If a rank is specified the attachment will be added to the reply of the given rank If an attachment ID is specified, ... → `a Note!` +- `removeNoteAttachment` — Returns a Boolean! → `a Boolean!` +- `createAnnotationStatus` — Returns an AnnotationStatus! → `an AnnotationStatus!` +- `deleteAnnotationStatus` — Returns a Boolean → `a Boolean` +- `editAnnotationStatus` — Returns an AnnotationStatus! → `an AnnotationStatus!` +- `createGlobalProofReadingMark` — Returns a Boolean! → `a Boolean!` +- `createPrivateProofReadingMark` — Returns a Boolean! → `a Boolean!` +- `deleteAnyProofReadingMark` — Returns a Boolean! → `a Boolean!` +- `deleteMyProofReadingMark` — Returns a Boolean! → `a Boolean!` +- `editGlobalProofReadingMark` — Returns a Boolean! → `a Boolean!` +- `editPrivateProofReadingmark` — Returns a Boolean! → `a Boolean!` + +### Subscriptions +- `noteChange` — No description → `an OldNoteEvent` +- `whenNoteChange` — No description → `a NoteEvent` +- `proofReadingMarkChange` — No description → `a ProofReadingMarkEvent` + +## Notifications + +### Queries +- `notifications` — Retrieve the notifications of a given type → `[Notification!]` +- `userNotifications` — Retrieve the notifications of the current user → `[Notification!]` +- `notificationTemplates` — No description → `a NotificationTemplatePagingResponse!` +- `notificationTemplateById` — No description → `[NotificationTemplate!]` + +### Mutations +- `createNotificationTemplate` — No description → `a NotificationTemplate!` +- `deleteNotificationTemplate` — The default ones cannot be deleted → `a Boolean!` +- `editNotificationTemplate` — No description → `a NotificationTemplate!` +- `editNotifications` — No description → `[Notification!]` +- `disableNotifications` — for the current user → `a Boolean!` +- `enableNotifications` — No description → `a Boolean!` +- `stopStartNotificationSender` — No description → `a Boolean` +- `markAsSeen` — Returns a Boolean! → `a Boolean!` +- `resendMail` — not yet implemented → `a Boolean!` + +### Subscriptions +- `notificationSender` — No description → `a SenderEvent` + +## Sharing + +### Queries +- `getSharing` — to retrieve the current sharing when logged in from a sharing key → `a Sharing` +- `sharingById` — No description → `[Sharing!]` +- `sharingByUser` — here Name or ID for the users? → `a SharingResponse!` +- `sharings` — No description → `a SharingResponse!` +- `mySharing` — No description → `a SharingResponse!` + +### Mutations +- `deleteSharing` — No description → `a Boolean!` +- `deleteMySharing` — No description → `a Boolean!` +- `editSharing` — No description → `a Sharing!` +- `editMySharing` — No description → `a Sharing!` +- `share` — No description → `[Sharing!]!` + +## Email & Output Channels + +### Queries +- `emailTemplates` — Returns an EmailTemplatePagingResponse! → `an EmailTemplatePagingResponse!` +- `emailTemplateById` — No description → `[EmailTemplate!]` +- `outputChannelGroups` — Get output channel groups → `an OutputChannelGroupPagingResponse!` +- `outputChannelGroupById` — Get output channel group(s) based on ID → `[OutputChannelGroup!]!` +- `outputChannelById` — Get output channel(s) based on ID → `[OutputChannel!]!` + +### Mutations +- `createEmailTemplate` — No description → `an EmailTemplate!` +- `deleteEmailTemplate` — No description → `a Boolean!` +- `editEmailTemplate` — No description → `an EmailTemplate!` +- `createOutputChannelGroup` — Create an output channel group Note that it is possible to create an empty channel group → `an OutputChannelGroup!` +- `deleteOutputChannelGroup` — Delete one or more output channel groups Will also delete any output channels in the group → `a Boolean!` +- `editOutputChannelGroup` — Edit output channel groups → `[OutputChannelGroup!]!` +- `createEmailOutputChannel` — Create an email output channel → `an EmailOutputChannel!` +- `deleteEmailOutputChannel` — Delete one or more email output channels → `a Boolean!` +- `editEmailOutputChannel` — Edit email output channels → `[EmailOutputChannel!]!` +- `createFileOutputChannel` — Create a file output channel → `a FileOutputChannel!` +- `deleteFileOutputChannel` — Delete one or more file output channels → `a Boolean!` +- `editFileOutputChannel` — Edit file output channels → `[FileOutputChannel!]!` + +## Input Channels & Rules + +### Queries +- `inputChannels` — No description → `an InputChannelPagingResponse!` +- `inputChannelById` — No description → `[InputChannel!]` +- `inputRuleSets` — No description → `an InputRuleSetPagingResponse!` +- `inputRuleSetById` — No description → `[InputRuleSet!]` + +### Mutations +- `createInputChannel` — No description → `an InputChannel!` +- `deleteInputChannel` — No description → `a Boolean!` +- `editInputChannel` — Edit an Input channelid Id of the Input channel to editpipes If pipes is given, the current pipes will be replaced by... → `an InputChannel!` +- `createInputRuleSet` — No description → `an InputRuleSet!` +- `deleteInputRuleSet` — No description → `a Boolean!` +- `editInputRuleSet` — No description → `an InputRuleSet!` + +## Metadata + +### Queries +- `metadataDefinitionById` — No description → `[MetadataDefinition!]` +- `metadataDefinitionByRef` — No description → `[MetadataDefinition!]` +- `nameSpaceDefinitions` — No description → `[MetadataNameSpace!]` +- `nameSpaceDefinitionById` — No description → `[MetadataNameSpace!]` +- `nameSpaceDefinitionByPrefix` — No description → `[MetadataNameSpace!]` +- `nameSpaceDefinitionByURI` — No description → `[MetadataNameSpace!]` +- `getProperties` — Read all configuration properties of a particular category → `[ConfigProperty!]!` +- `getProperty` — Read a configuration property → `a ConfigProperty` + +### Mutations +- `createMetadataDefinition` — To create a metadata definition → `a MetadataDefinition` +- `deleteMetadataDefinition` — To delete a metadata definition → `a Boolean!` +- `editMetadataDefinition` — To edit a metadata definition → `a MetadataDefinition` +- `renameMetadataDefinition` — To rename a metadata definition → `a MetadataDefinition` +- `createMetadataNameSpace` — To create a metadata nameSpace → `a MetadataNameSpace` +- `deleteMetadataNameSpace` — To delete a nameSpace definition → `a Boolean!` +- `editMetadataNameSpace` — To edit a metadata nameSpace → `a MetadataNameSpace` +- `setProperties` — To set propert-y-ies → `[ConfigProperty!]` +- `setContent` — replace the content of an asset the Asset must be checked out → `an Asset!` +- `deleteProperty` — To delete a property → `a ConfigProperty!` + +## Thesaurus & Taxonomy + +### Queries +- `thesaurus` — No description → `[Thesaurus!]!` +- `thesaurusById` — No description → `[Thesaurus!]` +- `thesaurusByLabel` — No description → `[Thesaurus!]` +- `thesaurusByURI` — No description → `[Thesaurus!]` +- `synSetById` — No description → `[SynSet!]` +- `synSetByLabel` — No description → `[SynSet!]` +- `synSetByURI` — No description → `[SynSet!]` + +### Mutations +- `createThesaurus` — No description → `a Thesaurus!` +- `deleteThesaurus` — No description → `a Boolean!` +- `createSynSet` — No description → `a SynSet!` +- `deleteSynSet` — No description → `a Boolean!` +- `editSynSet` — No description → `a SynSet` +- `reactivateSynSet` — No description → `a Boolean!` +- `retireSynSet` — No description → `a Boolean!` + +## Volumes & Hosts + +### Queries +- `volumes` — List all volumes → `[Volume!]!` +- `volumeById` — Get volume(s) based on ID → `[Volume!]!` +- `checkVolumeConnectivity` — check connectivity of a volume to it's storage location or server → `a Boolean!` +- `hosts` — List all hosts → `[Host!]!` +- `hostById` — Get host(s) based on ID → `[Host!]!` +- `hostFoldersByPath` — **List folders in a host ** → `[String!]!` + +### Mutations +- `createVolume` — Create a Volume → `a Volume!` +- `createFileSystemVolume` — Create a File System Volume → `a FileSystemVolume!` +- `deleteVolume` — Delete a Volume → `a Boolean!` +- `editVolume` — Edit a Volume → `[Volume!]!` +- `editFileSystemVolume` — Edit a File System Volume → `[FileSystemVolume!]!` +- `updateFileSystemVolumeDiskId` — Update a File System Volume Disk UUID → `[FileSystemVolume!]!` +- `deleteHost` — Delete a Host deprecated → `a Boolean!` +- `editHost` — Edit a Host deprecated → `a Host!` + +## Color Management + +### Queries +- `colorSpaces` — No description → `a ColorSpacePagingResponse!` +- `colorSpaceById` — No description → `[ColorSpace!]` +- `iccProfiles` — No description → `an IccProfilePagingResponse!` +- `iccProfileById` — No description → `[IccProfile!]` +- `iccProfileByName` — No description → `an IccProfile!` +- `inks` — No description → `an InkPagingResponse!` +- `inkById` — No description → `[Ink!]` +- `inkByName` — No description → `an Ink!` +- `inkCoverage` — Compute the ink coverage of a portion of a document defined by parameters of input iInkCoverageParams The response is... → `a Stream` +- `viewingConditions` — No description → `a ViewingConditionPagingResponse!` +- `viewingConditionById` — No description → `[ViewingCondition!]` +- `editIccContext` — Setup ICC context → `a Boolean!` +- `densitometer` — Read the color value at a certain position → `a DensitometerValues` +- `gamutCheck` — Compute the area where the color are out of gamut according to the monitor or to a simulation profile of a portion of... → `a Stream` +- `gamutWarning` — Return true if the document is viewed out of gamut → `a Boolean!` + +### Mutations +- `createColorSpace` — No description → `a ColorSpace!` +- `deleteColorSpace` — No description → `a Boolean!` +- `editColorSpace` — No description → `a ColorSpace!` +- `deleteIccProfile` — No description → `a Boolean` +- `uploadIccProfile` — No description → `an UploadStatus!` +- `createViewingCondition` — No description → `a ViewingCondition!` +- `deleteViewingCondition` — No description → `a Boolean!` +- `editViewingCondition` — No description → `a ViewingCondition!` + +## Layouts + +### Queries +- `layouts` — Retrieve Layouts → `a LayoutPagingResponse!` +- `layoutById` — Retrieve Layout by ID or [ID] → `[Layout!]` + +### Mutations +- `createLayout` — Create a layout → `a Layout!` +- `deleteLayout` — Delete a layout → `a Boolean!` +- `editLayout` — Edit a layout → `a Layout!` + +## User Actions + +### Queries +- `userActions` — List all user actions → `[UserAction!]!` +- `userActionById` — Get user action(s) based on ID → `[UserAction!]!` +- `userActionIconNames` — ** List the names of all uploaded user action icons ** → `[String!]!` +- `userActionInstancesById` — ** Get user action instance(s) by id ** → `[UserActionInstance!]!` +- `userActionInstancesByUser` — ** Get user action instance(s) executed by the specified user** → `[UserActionInstance!]!` + +### Mutations +- `createUserAction` — ** Create a user action** → `a UserAction!` +- `deleteUserAction` — ** Delete one or more user actions** → `a Boolean!` +- `editUserAction` — ** Edit one or more user actions** → `[UserAction!]!` +- `clearUserActionInstancesById` — ** Delete running or completed user action(s) specified by ID** → `a Boolean!` +- `clearUserActionInstancesByUser` — ** Delete running or completed user action(s) linked to the specified user** → `a Boolean!` +- `startUserAction` — Start a user action on one or more objects → `a Boolean!` +- `uploadUserActionIcon` — ** Upload a user action icon** → `an UploadStatus!` + +### Subscriptions +- `userActionChange` — No description → `an OldUserActionEvent` +- `whenUserActionChange` — Events for UserActions triggered by the current user → `a UserActionEvent` + +## UI & Files + +### Queries +- `getUIFiles` — No description → `[UIProjectFile!]` +- `getUIFileContent` — No description → `a String` +- `getUIFilesByFilter` — No description → `[UIProjectFile!]` +- `getUIProjects` — No description → `[UIProject!]` +- `getUIProjectFiles` — No description → `[UIProjectFile!]` +- `getUIProjectsByFilter` — No description → `[UIProject!]` +- `getUIProjectsByName` — No description → `an UIProject` +- `getUIProjectsByType` — No description → `[UIProject!]` +- `streamUIFileContent` — No description → `a Stream` +- `getFileContent` — -------- Deprecated --------- → `a String` + +### Mutations +- `createUIFile` — No description → `an UIProjectFile!` +- `createAndUploadUIFile` — No description → `a Boolean!` +- `deleteUIFile` — No description → `a Boolean` +- `editUIFile` — No description → `an UIProjectFile!` +- `saveUIFile` — No description → `a Boolean!` +- `uploadUIFile` — No description → `a Boolean!` +- `createUIFolder` — No description → `an UIProjectFile` +- `deleteUIFolder` — No description → `a Boolean` +- `createUIProject` — No description → `an UIProject` +- `createUIProjectWithType` — No description → `an UIProject` +- `deleteUIProject` — No description → `a Boolean` +- `editUIProject` — No description → `an UIProject` +- `saveFile` — -------- Deprecated --------- → `a Boolean!` + +## Preflighting & Rasterizing + +### Queries +- `preflightReport` — **Generate a Preflight report for one or several Asset(s) or Media(s) ** → `a Stream` +- `streamPreflightPreview` — Retrieve the preview of a given page of the preflight report → `a Stream` +- `rasterize` — Rendering of a portion of a document defined by parameters of input iRasterizeParams The response is a jpeg image (Wa... → `a Stream` +- `readBarCode` — Read a Barcode in the area defined by it's coordinates (in pt) → `[BarCode!]!` + +## Import / Export + +### Queries +- `importedFiles` — **Get the list of files that have been imported → `[ImportedFile!]!` +- `getImportConflicts` — ** Retrieve the objects to import that conflicts with existing one for a given ImportedFile → `[ImportedInfo!]` +- `getImportInfo` — ** Retrieve the objects to import for a given ImportedFile → `[ImportedInfo!]` +- `exportData` — **Export the given object(s) in an .es file → `a Stream` +- `getSchemaExtensions` — No description → `[SchemaExtension!]` + +### Mutations +- `importData` — **Import the given file → `a Boolean` +- `uploadImportFile` — **Upload the given file in the imported files → `an UploadStatus!` +- `createSchemaExtension` — No description → `a SchemaExtension!` +- `deleteSchemaExtension` — No description → `a Boolean!` +- `editSchemaExtension` — No description → `a SchemaExtension!` + +## Events & Logging + +### Queries +- `getEventLogs` — No description → `a LogResponse` + +### Subscriptions +- `whenObjectChange` — ParentId only works with CREATE_OBJECT EntityEventType and not on Media and User EntityTypes → `an EntityEvent` +- `whenStepStatusChange` — No description → `a StepEvent` + +## Relations + +### Mutations +- `createRelation` — To create Relations between 1 source Entity and one or more target Entities → `[Relation!]` +- `deleteRelation` — To delete Relations by there ID(s) → `a Boolean!` +- `deleteRelationFromObject` — To delete Relations from there target and/or sources one of source or target is mandatory → `a Boolean!` +- `editRelation` — To edit Relation → `[Relation!]` + +## Reports + +### Queries +- `reports` — No description → `[Report!]` +- `getReportURL` — No description → `a String` + +## Trash + +### Queries +- `trashedObjects` — No description → `a TrashablePagingResponse!` + +### Mutations +- `deleteAllTrashedObjects` — Delete all objects that have been trashed with the current user → `a Boolean!` +- `deleteObject` — Generic delete object → `a Boolean!` +- `trashObject` — No description → `a Boolean!` +- `unTrashObject` — Untrash object(s) → `a Boolean!` +- `unTrashAllObjects` — Untrash all objects that have been trashed with the current user → `a Boolean!` + +## Milestones + +### Mutations +- `createMilestone` — To create a Milestone → `an Activity!` + +## Activities + +### Queries +- `activities` — List of topLevel activities → `[Activity!]` +- `activityById` — Activity by Id → `[Activity!]` +- `activityIconById` — No description → `[ActivityIcon!]` +- `activityIcons` — Retrieve Activity Icon → `an ActivityIconPagingResponse!` +- `activityPresets` — List of activity presets → `[Activity!]` +- `activityVariables` — Retrieve variables names depending on WorkflowableTypeName → `[String]` + +### Mutations +- `deleteActivity` — To delete an activity → `a Boolean!` +- `deleteActivityIcon` — delete an activity icon → `a Boolean` +- `deleteActivityPreset` — To delete a preset → `a Boolean!` +- `duplicateActivity` — To duplicate Top Level Activity → `an Activity!` +- `createCustomActivity` — Custom activity creation → `an Activity!` +- `deleteCustomActivity` — Custom activity deletion → `a Boolean` +- `editActivity` — To edit Top Level Activity toRemove: true will throw an Exception → `an Activity!` +- `editActivityPreset` — To edit activity presets creates it if it doesn't exist → `an Activity!` +- `editCustomActivity` — Custom activity edition → `an Activity!` +- `editActivityEngineCapacity` — Edit capacity of an ActivityEngine in a specific Workflow Engine → `a Boolean!` +- `editActivityEngineTemplate` — Edit an ActivityEngineTemplate in a specific Workflow Engine → `a Boolean!` +- `uploadActivityIcon` — upload an activity icon → `an UploadStatus!` diff --git a/docs/dalim-api-reference.md b/docs/dalim-api-reference.md new file mode 100644 index 0000000..322a3ce --- /dev/null +++ b/docs/dalim-api-reference.md @@ -0,0 +1,955 @@ +# Dalim ES FUSiON API — Active Endpoint Reference + +Detailed documentation for the endpoints actively used in this project. +For a full list of all 466 available operations, see `dalim-api-index.md`. + +--- + +## Authentication + +The API uses OAuth2 with HMAC SHA256 signing. + +**Token endpoint:** `https://{HOST}/ES/api/oauth/token` +**GraphQL endpoint:** `https://{HOST}/ES/api/graphql` + +**Get a token:** +```python +token_data = { + "grant_type": "password", + "client_id": CLIENT_ID, + "client_secret": CLIENT_SECRET, + "username": USERNAME, + "password": PASSWORD +} +response = requests.post(TOKEN_URL, data=token_data) +access_token = response.json()["access_token"] +headers = {"Authorization": f"Bearer {access_token}", "Content-Type": "application/json"} +``` + +**Dependency chain** (must create in this order): +Security Profiles → Users → Projects → Assets + +--- + +## System & Auth + +### connectAs + +**Type:** Mutation +**Returns:** `a JSON!` + +Enable an Admin to connect to ES as another User. The response is identical to a standard login, a new AccessToken is received. + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `login` | `String!` | Yes | login of the user | +| `withSecurityProfile` | `String` | No | name of a securityProfile | +| `createIfNotExists` | `Boolean` | No | Auto-created user if not exists | + +**Example Query:** +```graphql +mutation connectAs( $login: String!, $withSecurityProfile: String, $createIfNotExists: Boolean ) { connectAs( login: $login, withSecurityProfile: $withSecurityProfile, createIfNotExists: $createIfNotExists ) } +``` + +**Example Variables:** +```json +{ "login": "abc123", "withSecurityProfile": "abc123", "createIfNotExists": true } +``` + +**Example Response:** +```json +{"data": {"connectAs": {}}} +``` + +--- + +### disconnectAs + +**Type:** Mutation +**Returns:** `a JSON!` + +When connected as another user, returns to the original login, the current token is revoked. The response is identical to a standard login, a new AccessToken is received. If the AccessToken does not correspond to a user connected as, then nothing append, the current token is still valid. + +**Example Query:** +```graphql +mutation disconnectAs { disconnectAs } +``` + +**Example Response:** +```json +{"data": {"disconnectAs": {}}} +``` + +--- + +### whoami + +**Type:** Query +**Returns:** `a Whoami!` + +**Example Query:** +```graphql +query whoami { whoami { id user { ...UserFragment } securityProfile { ...UserSecurityProfileFragment } } } +``` + +**Example Response:** +```json +{ "data": { "whoami": { "id": "4", "user": User, "securityProfile": UserSecurityProfile } } } +``` + +--- + +### serverInformation + +**Type:** Query +**Returns:** `a ServerInformation!` + +**Example Query:** +```graphql +query serverInformation { serverInformation { guiClientId authorizationURL accessTokenURL authenticationKeys } } +``` + +**Example Response:** +```json +{ "data": { "serverInformation": { "guiClientId": "abc123", "authorizationURL": "http://www.test.com/", "accessTokenURL": "http://www.test.com/", "authenticationKeys": ["4"] } } } +``` + +--- + +## Users + +### users + +**Type:** Query +**Returns:** `a UserPagingResponse!` + +Retrieve visible users by the current logged user + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `filter` | `iFilter` | No | — | +| `limit` | `Int` | No | — | +| `cursor` | `ID` | No | — | +| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} | + +**Example Query:** +```graphql +query users( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { users( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...UserFragment } } } +``` + +**Example Variables:** +```json +{ "filter": iFilter, "limit": 123, "cursor": 4, "orderBy": {"property": "id", "direction": "ASC"} } +``` + +**Example Response:** +```json +{ "data": { "users": { "lowerCursor": "4", "upperCursor": "4", "hasMoreItems": true, "objectList": [User] } } } +``` + +--- + +### userById + +**Type:** Query +**Returns:** `[User!]` + +Retrieve user by id + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `id` | `[ID!]!` | Yes | — | + +**Example Query:** +```graphql +query userById($id: [ID!]!) { userById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } login userCanLog lang dateFormat unitResolution unitLength color image use2FA channel2FA sessionTimeout workCapacity workCapacityUnit firstName lastName email title company phone phone2 homePhone fax mobilePhone department address { ...AddressFragment } organization { ...OrganizationFragment } groups { ...GroupFragment } roles { ...RoleFragment } defaultProfile { ...UserSecurityProfileFragment } availableProfiles { ...UserSecurityProfileFragment } notifications { ...NotificationFragment } } } +``` + +**Example Variables:** +```json +{"id": ["4"]} +``` + +**Example Response:** +```json +{ "data": { "userById": [ { "id": "4", "name": "abc123", "description": "xyz789", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "login": "abc123", "userCanLog": true, "lang": "ar", "dateFormat": "abc123", "unitResolution": "xyz789", "unitLength": "xyz789", "color": "xyz789", "image": "xyz789", "use2FA": true, "channel2FA": "AUTHENTICATOR", "sessionTimeout": 123, "workCapacity": "abc123", "workCapacityUnit": "xyz789", "firstName": "xyz789", "lastName": "abc123", "email": "abc123", "title": "abc123", "company": "xyz789", "phone": "abc123", "phone2": "xyz789", "homePhone": "xyz789", "fax": "abc123", "mobilePhone": "xyz789", "departm +... (truncated) +``` + +--- + +### createUser + +**Type:** Mutation +**Returns:** `a User!` + +Create an User in the specified Organization + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `name` | `String!` | Yes | — | +| `in` | `ID!` | Yes | — | +| `setup` | `iCreateUserSetup` | No | — | + +**Example Query:** +```graphql +mutation createUser( $name: String!, $in: ID!, $setup: iCreateUserSetup ) { createUser( name: $name, in: $in, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } login userCanLog lang dateFormat unitResolution unitLength color image use2FA channel2FA sessionTimeout workCapacity workCapacityUnit firstName lastName email title company phone phone2 homePhone fax mobilePhone department address { ...AddressFragment } organization { ...OrganizationFragment } groups { ...GroupFragment } roles { ...RoleFragment } defaultProfile { ...UserSecurityProfileFragment } availableProfiles { ...UserSecurityProfileFragment } notifications { ...NotificationFragment } } } +``` + +**Example Variables:** +```json +{ "name": "abc123", "in": 4, "setup": iCreateUserSetup } +``` + +**Example Response:** +```json +{ "data": { "createUser": { "id": 4, "name": "abc123", "description": "xyz789", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "login": "xyz789", "userCanLog": false, "lang": "ar", "dateFormat": "abc123", "unitResolution": "xyz789", "unitLength": "xyz789", "color": "xyz789", "image": "abc123", "use2FA": true, "channel2FA": "AUTHENTICATOR", "sessionTimeout": 123, "workCapacity": "xyz789", "workCapacityUnit": "xyz789", "firstName": "xyz789", "lastName": "xyz789", "email": "abc123", "title": "xyz789", "company": "xyz789", "phone": "xyz789", "phone2": "xyz789", "homePhone": "abc123", "fax": "xyz789", "mobilePhone": "abc123", "departme +... (truncated) +``` + +--- + +### changeUser + +**Type:** Mutation +**Returns:** `a User!` + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `name` | `String!` | Yes | — | + +**Example Query:** +```graphql +mutation changeUser($name: String!) { changeUser(name: $name) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } login userCanLog lang dateFormat unitResolution unitLength color image use2FA channel2FA sessionTimeout workCapacity workCapacityUnit firstName lastName email title company phone phone2 homePhone fax mobilePhone department address { ...AddressFragment } organization { ...OrganizationFragment } groups { ...GroupFragment } roles { ...RoleFragment } defaultProfile { ...UserSecurityProfileFragment } availableProfiles { ...UserSecurityProfileFragment } notifications { ...NotificationFragment } } } +``` + +**Example Variables:** +```json +{"name": "abc123"} +``` + +**Example Response:** +```json +{ "data": { "changeUser": { "id": "4", "name": "abc123", "description": "abc123", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "login": "xyz789", "userCanLog": true, "lang": "ar", "dateFormat": "xyz789", "unitResolution": "abc123", "unitLength": "abc123", "color": "xyz789", "image": "abc123", "use2FA": true, "channel2FA": "AUTHENTICATOR", "sessionTimeout": 123, "workCapacity": "xyz789", "workCapacityUnit": "xyz789", "firstName": "abc123", "lastName": "xyz789", "email": "xyz789", "title": "abc123", "company": "abc123", "phone": "xyz789", "phone2": "abc123", "homePhone": "abc123", "fax": "abc123", "mobilePhone": "abc123", "departm +... (truncated) +``` + +--- + +## Security Profiles + +### securityProfiles + +**Type:** Query +**Returns:** `a SecurityProfilePagingResponse!` + +Retrieve SecurityProfile by filter + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `filter` | `iFilter` | No | — | +| `limit` | `Int` | No | — | +| `cursor` | `ID` | No | — | +| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} | + +**Example Query:** +```graphql +query securityProfiles( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { securityProfiles( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...SecurityProfileFragment } } } +``` + +**Example Variables:** +```json +{ "filter": iFilter, "limit": 123, "cursor": "4", "orderBy": {"property": "id", "direction": "ASC"} } +``` + +**Example Response:** +```json +{ "data": { "securityProfiles": { "lowerCursor": 4, "upperCursor": "4", "hasMoreItems": true, "objectList": [SecurityProfile] } } } +``` + +--- + +### createUserSecurityProfile + +**Type:** Mutation +**Returns:** `a UserSecurityProfile` + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `name` | `String!` | Yes | — | +| `setup` | `iUserSecurityProfile` | No | — | + +**Example Query:** +```graphql +mutation createUserSecurityProfile( $name: String!, $setup: iUserSecurityProfile ) { createUserSecurityProfile( name: $name, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } properties { ...SecurityPropertyFragment } securityRoles } } +``` + +**Example Variables:** +```json +{ "name": "abc123", "setup": iUserSecurityProfile } +``` + +**Example Response:** +```json +{ "data": { "createUserSecurityProfile": { "id": "4", "name": "xyz789", "description": "xyz789", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "properties": [SecurityProperty], "securityRoles": ["ADMIN"] } } } +``` + +--- + +### addProfileToUser + +**Type:** Mutation +**Returns:** `a Boolean!` + +Add one or many SecurityProfiles to one or many Users + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `id` | `[ID!]!` | Yes | — | +| `to` | `[ID!]!` | Yes | — | + +**Example Query:** +```graphql +mutation addProfileToUser( $id: [ID!]!, $to: [ID!]! ) { addProfileToUser( id: $id, to: $to ) } +``` + +**Example Variables:** +```json +{"id": ["4"], "to": [4]} +``` + +**Example Response:** +```json +{"data": {"addProfileToUser": true}} +``` + +--- + +### addRoleToUser + +**Type:** Mutation +**Returns:** `a Boolean!` + +Add one or many Role(s) to one or many User(s) + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `id` | `[ID!]!` | Yes | — | +| `to` | `[ID!]!` | Yes | — | + +**Example Query:** +```graphql +mutation addRoleToUser( $id: [ID!]!, $to: [ID!]! ) { addRoleToUser( id: $id, to: $to ) } +``` + +**Example Variables:** +```json +{"id": ["4"], "to": [4]} +``` + +**Example Response:** +```json +{"data": {"addRoleToUser": true}} +``` + +--- + +## Projects + +### projects + +**Type:** Query +**Returns:** `a ProjectPagingResponse!` + +Retrieve Projects by filter + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `filter` | `iFilter` | No | — | +| `limit` | `Int` | No | — | +| `cursor` | `ID` | No | — | +| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} | + +**Example Query:** +```graphql +query projects( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { projects( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ProjectFragment } } } +``` + +**Example Variables:** +```json +{ "filter": iFilter, "limit": 123, "cursor": "4", "orderBy": {"property": "id", "direction": "ASC"} } +``` + +**Example Response:** +```json +{ "data": { "projects": { "lowerCursor": 4, "upperCursor": 4, "hasMoreItems": true, "objectList": [Project] } } } +``` + +--- + +### projectById + +**Type:** Query +**Returns:** `[Project!]` + +Retrieve Projects by ID or [ID] + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `id` | `[ID!]!` | Yes | — | + +**Example Query:** +```graphql +query projectById($id: [ID!]!) { projectById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } endDate metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status workflowName approvalStatus { ...ApprovalActivityStatusFragment } approvalSummary approvals { ...ApprovalCycleFragment } assetApprovals { ...ApprovalCycleFragment } children { ...PagingResponseFragment } assetWorkflow { ...WorkflowFragment } processes { ...ProcessFragment } projectTemplate { ...ProjectTemplateFragment } priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } reversedView customer { ...CustomerFragment } parents { ...ContainerFragment } mainAsset { ...AssetFragment } siteId productionParticipants { ...ProductionParticipantFragment } notes { ...NoteFragment } trimmedHeight trimmedWidth nbPages accessControls deadlines { ...ProjectDeadlineFragment } } } +``` + +**Example Variables:** +```json +{"id": [4]} +``` + +**Example Response:** +```json +{ "data": { "projectById": [ { "id": 4, "name": "abc123", "description": "xyz789", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "trashDate": "2007-12-03T10:15:30Z", "trashUser": User, "endDate": "2007-12-03T10:15:30Z", "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "status": ["ACTIVE"], "workflowName": "abc123", "approvalStatus": [ApprovalActivityStatus], "approvalSummary": "NONE", "approvals": [ApprovalCycle], "assetApprovals": [ApprovalCycle], "children": PagingResponse, "assetWorkflow": Workflow, "processes": [Process], "projectTemplate": ProjectTemplate, "priority": 123, "colorSpace": ColorSpace, "viewingCondition": ViewingCondition, "reversedView": true, "customer": Cus +... (truncated) +``` + +--- + +### projectTemplates + +**Type:** Query +**Returns:** `a ProjectTemplateResponse!` + +Retrieve Project Templates + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `filter` | `iFilter` | No | — | +| `limit` | `Int` | No | — | +| `cursor` | `ID` | No | — | +| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} | + +**Example Query:** +```graphql +query projectTemplates( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { projectTemplates( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...ProjectTemplateFragment } } } +``` + +**Example Variables:** +```json +{ "filter": iFilter, "limit": 123, "cursor": 4, "orderBy": {"property": "id", "direction": "ASC"} } +``` + +**Example Response:** +```json +{ "data": { "projectTemplates": { "lowerCursor": 4, "upperCursor": 4, "hasMoreItems": true, "objectList": [ProjectTemplate] } } } +``` + +--- + +### createProject + +**Type:** Mutation +**Returns:** `a Project!` + +security role handle by the mutationFetcher itself To create a Project for a Customer with a name + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `customerId` | `ID!` | Yes | — | +| `name` | `String!` | Yes | — | +| `setup` | `iProjectSetup` | No | — | +| `inputs` | `[iInputFile!]` | Yes | — | + +**Example Query:** +```graphql +mutation createProject( $customerId: ID!, $name: String!, $setup: iProjectSetup, $inputs: [iInputFile!] ) { createProject( customerId: $customerId, name: $name, setup: $setup, inputs: $inputs ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } endDate metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status workflowName approvalStatus { ...ApprovalActivityStatusFragment } approvalSummary approvals { ...ApprovalCycleFragment } assetApprovals { ...ApprovalCycleFragment } children { ...PagingResponseFragment } assetWorkflow { ...WorkflowFragment } processes { ...ProcessFragment } projectTemplate { ...ProjectTemplateFragment } priority colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } reversedView customer { ...CustomerFragment } parents { ...ContainerFragment } mainAsset { ...AssetFragment } siteId productionParticipants { ...ProductionParticipantFragment } notes { ...NoteFragment } trimmedHeight trimmedWidth nbPages accessControls deadlines { ...ProjectDeadlineFragment } } } +``` + +**Example Variables:** +```json +{ "customerId": "4", "name": "xyz789", "setup": iProjectSetup, "inputs": [iInputFile] } +``` + +**Example Response:** +```json +{ "data": { "createProject": { "id": "4", "name": "abc123", "description": "abc123", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "trashDate": "2007-12-03T10:15:30Z", "trashUser": User, "endDate": "2007-12-03T10:15:30Z", "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "status": ["ACTIVE"], "workflowName": "xyz789", "approvalStatus": [ApprovalActivityStatus], "approvalSummary": "NONE", "approvals": [ApprovalCycle], "assetApprovals": [ApprovalCycle], "children": PagingResponse, "assetWorkflow": Workflow, "processes": [Process], "projectTemplate": ProjectTemplate, "priority": 987, "colorSpace": ColorSpace, "viewingCondition": ViewingCondition, "reversedView": true, "customer": C +... (truncated) +``` + +--- + +### deleteProject + +**Type:** Mutation +**Returns:** `a Boolean!` + +To delete a Project. By default the project is moved to the trash + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `id` | `[ID!]!` | Yes | id of the Project | +| `now` | `Boolean` | No | flag to be able to immediately delete the Project otherwise it is moved to the trash. Default = false | + +**Example Query:** +```graphql +mutation deleteProject( $id: [ID!]!, $now: Boolean ) { deleteProject( id: $id, now: $now ) } +``` + +**Example Variables:** +```json +{"id": [4], "now": false} +``` + +**Example Response:** +```json +{"data": {"deleteProject": false}} +``` + +--- + +### createFolder + +**Type:** Mutation +**Returns:** `a Folder!` + +To create a Folder + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `name` | `String!` | Yes | — | +| `in` | `ID!` | Yes | — | +| `setup` | `iFolderSetup` | No | — | + +**Example Query:** +```graphql +mutation createFolder( $name: String!, $in: ID!, $setup: iFolderSetup ) { createFolder( name: $name, in: $in, setup: $setup ) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } readOnly productionSettings { ...ProductionSettingsFragment } processes { ...ProcessFragment } accessControlList { ...AccessControlListFragment } children { ...PagingResponseFragment } project { ...ProjectFragment } parents { ...ContainerFragment } path { ...FolderFragment } color icon } } +``` + +**Example Variables:** +```json +{ "name": "xyz789", "in": 4, "setup": iFolderSetup } +``` + +**Example Response:** +```json +{ "data": { "createFolder": { "id": 4, "name": "xyz789", "description": "abc123", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "trashDate": "2007-12-03T10:15:30Z", "trashUser": User, "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "readOnly": true, "productionSettings": ProductionSettings, "processes": [Process], "accessControlList": AccessControlList, "children": PagingResponse, "project": Project, "parents": [Container], "path": [Folder], "color": "xyz789", "icon": 4 } } } +``` + +--- + +## Assets + +### assets + +**Type:** Query +**Returns:** `an AssetPagingResponse!` + +Retrieve Assets by filter + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `filter` | `iFilter` | No | — | +| `limit` | `Int` | No | — | +| `cursor` | `ID` | No | — | +| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} | + +**Example Query:** +```graphql +query assets( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { assets( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...AssetFragment } } } +``` + +**Example Variables:** +```json +{ "filter": iFilter, "limit": 987, "cursor": 4, "orderBy": {"property": "id", "direction": "ASC"} } +``` + +**Example Response:** +```json +{ "data": { "assets": { "lowerCursor": "4", "upperCursor": "4", "hasMoreItems": false, "objectList": [Asset] } } } +``` + +--- + +### assetById + +**Type:** Query +**Returns:** `[Asset!]` + +Retrieve Assets by ID or [ID] + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `id` | `[ID!]!` | Yes | — | + +**Example Query:** +```graphql +query assetById($id: [ID!]!) { assetById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } trashDate trashUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } status approvalSummary approvalStatus { ...ApprovalActivityStatusFragment } approvals { ...ApprovalCycleFragment } workflowName isAlias processes { ...ProcessFragment } uuid priority isCheckedOut checkedOutBy { ...UserFragment } privateWorkingRevision isArchived archiveId colorSpace { ...ColorSpaceFragment } viewingCondition { ...ViewingConditionFragment } project { ...ProjectFragment } parents { ...ContainerFragment } numberOfRevisions expirationDate medias { ...MediaFragment } notes { ...NoteFragment } relationFrom { ...RelationFragment } relationTo { ...RelationFragment } accessControls } } +``` + +**Example Variables:** +```json +{"id": [4]} +``` + +**Example Response:** +```json +{ "data": { "assetById": [ { "id": 4, "name": "xyz789", "description": "abc123", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "trashDate": "2007-12-03T10:15:30Z", "trashUser": User, "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "status": ["ACTIVE"], "approvalSummary": "NONE", "approvalStatus": [ApprovalActivityStatus], "approvals": [ApprovalCycle], "workflowName": "abc123", "isAlias": false, "processes": [Process], "uuid": "abc123", "priority": 987, "isCheckedOut": false, "checkedOutBy": User, "privateWorkingRevision": 987, "isArchived": true, "archiveId": 4, "colorSpace": ColorSpace, "viewingCondition": ViewingCondition, "project": Project, "parents": [Container], "numberO +... (truncated) +``` + +--- + +### createAsset + +**Type:** Mutation +**Returns:** `an AssetCreationStatus!` + +To create an Asset. + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `in` | `[ID!]!` | Yes | — | +| `name` | `String` | No | — | +| `checkedOut` | `Boolean` | No | Default = false | +| `setup` | `iAssetSetup` | No | — | +| `input` | `iInputFile` | No | — | + +**Example Query:** +```graphql +mutation createAsset( $in: [ID!]!, $name: String, $checkedOut: Boolean, $setup: iAssetSetup, $input: iInputFile ) { createAsset( in: $in, name: $name, checkedOut: $checkedOut, setup: $setup, input: $input ) { created asset { ...AssetFragment } } } +``` + +**Example Variables:** +```json +{ "in": ["4"], "name": "xyz789", "checkedOut": false, "setup": iAssetSetup, "input": iInputFile } +``` + +**Example Response:** +```json +{ "data": { "createAsset": {"created": false, "asset": Asset} } } +``` + +--- + +### deleteAsset + +**Type:** Mutation +**Returns:** `a Boolean!` + +To delete an Asset. By default the Asset is moved to the trash + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `id` | `[ID!]!` | Yes | id of the Asset | +| `now` | `Boolean` | No | flag to be able to immediately delete the Asset otherwise it is moved to the trash. Default = false | + +**Example Query:** +```graphql +mutation deleteAsset( $id: [ID!]!, $now: Boolean ) { deleteAsset( id: $id, now: $now ) } +``` + +**Example Variables:** +```json +{"id": [4], "now": false} +``` + +**Example Response:** +```json +{"data": {"deleteAsset": false}} +``` + +--- + +### downloadAsset + +**Type:** Query +**Returns:** `a Stream` + +Stream an Asset + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `id` | `ID!` | Yes | — | +| `revision` | `Int` | No | Default = 0 | + +**Example Query:** +```graphql +query downloadAsset( $id: ID!, $revision: Int ) { downloadAsset( id: $id, revision: $revision ) } +``` + +**Example Variables:** +```json +{"id": "4", "revision": 0} +``` + +**Example Response:** +```json +{"data": {"downloadAsset": Stream}} +``` + +--- + +## Organizations & Customers + +### customers + +**Type:** Query +**Returns:** `a CustomerPagingResponse!` + +Retrieve Customers by filter + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `filter` | `iFilter` | No | — | +| `limit` | `Int` | No | — | +| `cursor` | `ID` | No | — | +| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} | + +**Example Query:** +```graphql +query customers( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { customers( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...CustomerFragment } } } +``` + +**Example Variables:** +```json +{ "filter": iFilter, "limit": 123, "cursor": 4, "orderBy": {"property": "id", "direction": "ASC"} } +``` + +**Example Response:** +```json +{ "data": { "customers": { "lowerCursor": "4", "upperCursor": 4, "hasMoreItems": false, "objectList": [Customer] } } } +``` + +--- + +### customerById + +**Type:** Query +**Returns:** `[Customer!]` + +Retrieve Customers by ID or [ID] + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `id` | `[ID!]!` | Yes | — | + +**Example Query:** +```graphql +query customerById($id: [ID!]!) { customerById(id: $id) { id name description lastModificationDate lastModificationUser { ...UserFragment } creationDate creationUser { ...UserFragment } metadatas { ...MetadataValueFragment } metadataProperties { ...MetadataValueFragment } sites defaultSite defaultProjectTemplate { ...ProjectTemplateFragment } projectTemplates { ...ProjectTemplateFragment } code phone phone2 www fax shippingAddress { ...AddressFragment } billingAddress { ...AddressFragment } organization { ...OrganizationFragment } children { ...PagingResponseFragment } emailTemplates { ...EmailTemplateFragment } notificationTemplates { ...NotificationTemplateFragment } securityConfiguration { ...SecurityConfigurationFragment } notifications { ...NotificationFragment } } } +``` + +**Example Variables:** +```json +{"id": [4]} +``` + +**Example Response:** +```json +{ "data": { "customerById": [ { "id": 4, "name": "abc123", "description": "abc123", "lastModificationDate": "2007-12-03T10:15:30Z", "lastModificationUser": User, "creationDate": "2007-12-03T10:15:30Z", "creationUser": User, "metadatas": [MetadataValue], "metadataProperties": [MetadataValue], "sites": ["abc123"], "defaultSite": "xyz789", "defaultProjectTemplate": ProjectTemplate, "projectTemplates": [ProjectTemplate], "code": "xyz789", "phone": "abc123", "phone2": "abc123", "www": "xyz789", "fax": "abc123", "shippingAddress": Address, "billingAddress": Address, "organization": Organization, "children": PagingResponse, "emailTemplates": [EmailTemplate], "notificationTemplates": [NotificationTemplate], "securityConfiguration": SecurityConfiguration, "notifications": [Notification] } ] } } +``` + +--- + +### groups + +**Type:** Query +**Returns:** `a GroupPagingResponse!` + +Retrieve visible groups by the current logged user + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `filter` | `iFilter` | No | — | +| `limit` | `Int` | No | — | +| `cursor` | `ID` | No | — | +| `orderBy` | `iOrderBy` | No | Default = {property : "id", direction : ASC} | + +**Example Query:** +```graphql +query groups( $filter: iFilter, $limit: Int, $cursor: ID, $orderBy: iOrderBy ) { groups( filter: $filter, limit: $limit, cursor: $cursor, orderBy: $orderBy ) { lowerCursor upperCursor hasMoreItems objectList { ...GroupFragment } } } +``` + +**Example Variables:** +```json +{ "filter": iFilter, "limit": 123, "cursor": 4, "orderBy": {"property": "id", "direction": "ASC"} } +``` + +**Example Response:** +```json +{ "data": { "groups": { "lowerCursor": "4", "upperCursor": 4, "hasMoreItems": false, "objectList": [Group] } } } +``` + +--- + +### addUserToGroup + +**Type:** Mutation +**Returns:** `a Boolean!` + +Add one or many Users to one or many Groups that are not System Groups. All the Users provided will be added to each Groups provided + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `id` | `[ID!]!` | Yes | — | +| `to` | `[ID!]!` | Yes | — | + +**Example Query:** +```graphql +mutation addUserToGroup( $id: [ID!]!, $to: [ID!]! ) { addUserToGroup( id: $id, to: $to ) } +``` + +**Example Variables:** +```json +{"id": ["4"], "to": [4]} +``` + +**Example Response:** +```json +{"data": {"addUserToGroup": false}} +``` + +--- + +## Search + +### search + +**Type:** Query +**Returns:** `a SearchResponse` + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `filter` | `iSearchFilter!` | Yes | — | +| `facets` | `[String!]` | Yes | — | +| `limit` | `Int` | No | — | +| `cursor` | `ID` | No | — | + +**Example Query:** +```graphql +query search( $filter: iSearchFilter!, $facets: [String!], $limit: Int, $cursor: ID ) { search( filter: $filter, facets: $facets, limit: $limit, cursor: $cursor ) { upperCursor hasMoreItems objectList { ...EntityFragment } scores facets { ...FacetFragment } } } +``` + +**Example Variables:** +```json +{ "filter": iSearchFilter, "facets": ["abc123"], "limit": 987, "cursor": 4 } +``` + +**Example Response:** +```json +{ "data": { "search": { "upperCursor": "4", "hasMoreItems": false, "objectList": [Entity], "scores": [987.65], "facets": [Facet] } } } +``` + +--- + +## Approvals + +### approve + +**Type:** Mutation +**Returns:** `a Boolean!` + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `id` | `[ID!]!` | Yes | The id(s) of the request approval(s) to approve | +| `comment` | `String` | No | The comment associated to the approve action | +| `checkViewingCondition` | `Boolean` | No | Specify if the viewing condition should be checked or not. Default = true | + +**Example Query:** +```graphql +mutation approve( $id: [ID!]!, $comment: String, $checkViewingCondition: Boolean ) { approve( id: $id, comment: $comment, checkViewingCondition: $checkViewingCondition ) } +``` + +**Example Variables:** +```json +{ "id": [4], "comment": "xyz789", "checkViewingCondition": true } +``` + +**Example Response:** +```json +{"data": {"approve": true}} +``` + +--- + +### approveObject + +**Type:** Mutation +**Returns:** `a Boolean!` + +**Arguments:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `id` | `[ID!]!` | Yes | The id(s) of the object(s) to approve | +| `comment` | `String` | No | The comment associated to the approve action | +| `checkViewingCondition` | `Boolean` | No | Specify if the viewing condition should be checked or not. Default = true | + +**Example Query:** +```graphql +mutation approveObject( $id: [ID!]!, $comment: String, $checkViewingCondition: Boolean ) { approveObject( id: $id, comment: $comment, checkViewingCondition: $checkViewingCondition ) } +``` + +**Example Variables:** +```json +{ "id": [4], "comment": "xyz789", "checkViewingCondition": true } +``` + +**Example Response:** +```json +{"data": {"approveObject": false}} +``` + +--- diff --git a/generate_docs.py b/generate_docs.py new file mode 100644 index 0000000..f2c5acd --- /dev/null +++ b/generate_docs.py @@ -0,0 +1,486 @@ +#!/usr/bin/env python3 +"""Generate Tier 1 index and Tier 2 reference from parsed API data.""" + +import json +import re + +DOCS_DIR = '/Users/daveporter/Desktop/CODING-2024/DALIM-API/docs' + +# Domain groupings based on operation name patterns +DOMAIN_PATTERNS = [ + ('Authentication & System', [ + 'connectAs', 'disconnectAs', 'whoami', 'serverInformation', 'authentications', + 'createAuthentication', 'deleteAuthentication', 'editAuthentication', + 'clientApplications', 'createClientApplication', 'deleteClientApplication', 'editClientApplication', + 'getCorsSetting', 'setCorsSetting', + 'getLogLevel', 'setLogLevel', 'getLogQueries', 'setLogQueries', + 'getMaxQueryComplexity', 'setMaxQueryComplexity', 'getMaxQuerySize', 'setMaxQuerySize', + 'getMaxTopLevelFieldCount', 'setMaxTopLevelFieldCount', 'queryStatistics', + 'servlets', 'openDialogueConnection', 'closeDialogueConnection', 'dialogueConnections', + 'get2FAQRCode', 'getSecret2FAKey', 'send2FAQRCodeByEmail', 'enable2FA', 'disable2FA', + 'verify2FACode', 'reset2FAKey', + 'myWebAuthnRegistrations', 'webAuthnRegistrations', + 'deleteMyWebAuthnRegistration', 'deleteWebAuthnRegistration', + 'editMyWebAuthnRegistration', 'editWebAuthnRegistration', + 'startWebAuthnRegistration', 'finishWebAuthnRegistration', + 'userConnectionById', 'userConnectionByClientId', 'userConnections', + 'revokeUserConnection', 'authenticationChanged', + 'reIndexAll', 'dummy', + ]), + ('Users & Profiles', [ + 'users', 'userById', 'createUser', 'changeUser', 'deleteUser', + 'editUser', 'editMyUser', 'moveUser', + 'changeMyPassword', 'changeMyProfile', 'resetUserPassword', + 'userPreference', 'setUserPreference', 'editUserPreference', + 'uploadAvatar', 'userChange', 'whenUserChange', + ]), + ('Security Profiles', [ + 'securityProfiles', 'securityProfileById', 'securityRoles', + 'createAdminSecurityProfile', 'createDefaultSecurityProfile', + 'createUserSecurityProfile', 'createSecurityProfileMask', + 'deleteSecurityProfile', 'editSecurityProfile', 'duplicateSecurityProfile', + 'addProfileToUser', 'removeProfileFromUser', + 'putSecurityProperties', 'removeSecurityProperties', + 'putSecurityRoles', 'removeSecurityRoles', 'setSecurityRoles', + ]), + ('Groups & Roles', [ + 'groups', 'groupById', 'createGroup', 'deleteGroup', 'editGroup', + 'addUserToGroup', 'removeUserFromGroup', + 'roles', 'roleById', 'createRole', 'deleteRole', 'editRole', + 'addRoleToUser', 'removeRoleFromUser', + ]), + ('Organizations & Customers', [ + 'organizations', 'organizationById', 'organizationsByFilter', + 'createOrganization', 'deleteOrganization', 'renameOrganization', 'editOrganization', + 'uploadOrganizationLogo', + 'customers', 'customerById', 'createCustomer', 'deleteCustomer', + 'renameCustomer', 'editCustomer', + 'addCustomerToGroup', 'addCustomerToOrganization', + 'removeCustomerFromGroup', 'removeCustomerFromOrganization', + ]), + ('Projects', [ + 'projects', 'projectById', 'projectTemplates', 'projectTemplateById', + 'projectFolderById', + 'createProject', 'deleteProject', 'renameProject', 'duplicateProject', + 'editProject', 'moveProject', 'moveProjectToCustomer', + 'createProjectFolder', 'deleteProjectFolder', + 'renameProjectFolder', 'editProjectFolder', 'moveProjectFolder', + 'createProjectTemplate', 'deleteProjectTemplate', + 'editProjectTemplate', 'duplicateProjectTemplate', + 'createFolderFromProject', 'createProjectFromFolder', + 'participantsByRoleFilter', + 'projectChange', 'projectFolderChange', + ]), + ('Folders', [ + 'folders', 'folderById', + 'createFolder', 'deleteFolder', 'renameFolder', 'moveFolder', 'editFolder', + 'folderChange', + ]), + ('Assets', [ + 'assets', 'assetById', 'downloadAsset', 'downloadAssetWithNotes', + 'createAsset', 'deleteAsset', 'renameAsset', 'moveAsset', 'editAsset', + 'checkOutAsset', 'checkInAsset', 'cancelCheckOutAsset', + 'copyAssetToFolder', 'createAssetAlias', 'removeAssetAlias', + 'mergeAsset', 'reprocessAsset', + 'editRevision', 'editInk', + 'streamAttachment', 'streamFile', + 'uploadFile', 'uploadOn', 'uploadOnMilestone', + 'assetChange', 'mediaChange', + ]), + ('Collections', [ + 'collections', 'collectionById', 'anyCollections', + 'createCollection', 'deleteCollection', 'renameCollection', 'editCollection', + 'addObjectToCollection', 'removeObjectFromCollection', + 'moveCollection', 'moveObjectFromCollectionToCollection', + 'smartCollections', 'smartCollectionById', + 'createSmartCollection', 'deleteSmartCollection', + 'editSmartCollection', 'renameSmartCollection', + 'collectionChange', 'smartCollectionChange', + ]), + ('Search & Filters', [ + 'search', 'searchBySmartCollection', 'entityByPath', 'dumpText', + 'namedSearchFilters', 'namedSearchFilterById', 'namedSearchFilterByName', + 'createNamedSearchFilter', 'deleteNamedSearchFilter', 'editNamedSearchFilter', + ]), + ('Approvals', [ + 'approvals', 'approvalsByUser', + 'approve', 'approveObject', 'reject', 'rejectObject', + 'resetApproval', 'resetObjectApproval', + ]), + ('Workflows & Processes', [ + 'workflows', 'workflowsById', 'workflowsByName', 'workflowsByEntity', + 'workflowEngine', + 'createWorkflow', 'deleteWorkflow', 'editWorkflow', 'duplicateWorkflow', + 'startWorkflow', 'cancelWorkflow', + 'editWorkflowEngineCapacity', + 'processes', 'processById', 'processMonitoring', + 'cancelProcess', 'deleteProcess', 'changeProcessPriority', + 'startProcess', 'startFileProcess', 'startURLProcess', 'submitURLProcess', + 'restartProcess', 'restartActivity', + 'processChanged', + ]), + ('Notes & Annotations', [ + 'getNotes', 'noteReport', + 'createNote', 'deleteNote', 'updateNote', 'editNote', + 'replyToNote', 'editReplyOfNote', 'deleteReplyOfNote', + 'addNoteAttachment', 'removeNoteAttachment', + 'annotationStatuses', 'annotationStatusById', + 'createAnnotationStatus', 'deleteAnnotationStatus', + 'updateAnnotationStatus', 'editAnnotationStatus', + 'proofReadingMarks', 'proofReadingMarksById', + 'myProofReadingMarks', 'myProofReadingMarksById', + 'createGlobalProofReadingMark', 'createPrivateProofReadingMark', + 'deleteAnyProofReadingMark', 'deleteMyProofReadingMark', + 'editGlobalProofReadingMark', 'editPrivateProofReadingmark', + 'noteChange', 'whenNoteChange', 'proofReadingMarkChange', + ]), + ('Notifications', [ + 'notifications', 'userNotifications', 'notificationSender', + 'notificationTemplates', 'notificationTemplateById', + 'createNotificationTemplate', 'deleteNotificationTemplate', + 'editNotificationTemplate', 'editNotifications', + 'disableNotifications', 'enableNotifications', + 'updateNotificationSender', 'stopStartNotificationSender', + 'markAsSeen', 'resendMail', + ]), + ('Sharing', [ + 'getSharing', 'sharingById', 'sharingByUser', 'sharings', 'mySharing', + 'createSharing', 'deleteSharing', 'deleteMySharing', + 'updateSharing', 'editSharing', 'editMySharing', 'share', + ]), + ('Email & Output Channels', [ + 'emailTemplates', 'emailTemplateById', + 'createEmailTemplate', 'deleteEmailTemplate', + 'updateEmailTemplate', 'editEmailTemplate', + 'outputChannelGroups', 'outputChannelGroupById', 'outputChannelById', + 'createOutputChannelGroup', 'deleteOutputChannelGroup', 'editOutputChannelGroup', + 'createEmailOutputChannel', 'deleteEmailOutputChannel', 'editEmailOutputChannel', + 'createFileOutputChannel', 'deleteFileOutputChannel', 'editFileOutputChannel', + ]), + ('Input Channels & Rules', [ + 'inputChannels', 'inputChannelById', + 'createInputChannel', 'deleteInputChannel', 'editInputChannel', + 'inputRuleSets', 'inputRuleSetById', + 'createInputRuleSet', 'deleteInputRuleSet', 'editInputRuleSet', + ]), + ('Metadata', [ + 'metadataDefinitionById', 'metadataDefinitionByRef', + 'createMetadataDefinition', 'deleteMetadataDefinition', + 'editMetadataDefinition', 'renameMetadataDefinition', + 'nameSpaceDefinitions', 'nameSpaceDefinitionById', + 'nameSpaceDefinitionByPrefix', 'nameSpaceDefinitionByURI', + 'createMetadataNameSpace', 'deleteMetadataNameSpace', 'editMetadataNameSpace', + 'getProperties', 'getProperty', 'setProperties', 'setContent', 'deleteProperty', + ]), + ('Thesaurus & Taxonomy', [ + 'thesaurus', 'thesaurusById', 'thesaurusByLabel', 'thesaurusByURI', + 'createThesaurus', 'deleteThesaurus', + 'synSetById', 'synSetByLabel', 'synSetByURI', + 'createSynSet', 'deleteSynSet', 'editSynSet', + 'reactivateSynSet', 'retireSynSet', + ]), + ('Volumes & Hosts', [ + 'volumes', 'volumeById', 'checkVolumeConnectivity', + 'createVolume', 'createFileSystemVolume', 'deleteVolume', + 'editVolume', 'editFileSystemVolume', 'updateFileSystemVolumeDiskId', + 'hosts', 'hostById', 'hostFoldersByPath', + 'deleteHost', 'editHost', + ]), + ('Color Management', [ + 'colorSpaces', 'colorSpaceById', + 'createColorSpace', 'deleteColorSpace', 'editColorSpace', + 'iccProfiles', 'iccProfileById', 'iccProfileByName', + 'deleteIccProfile', 'uploadIccProfile', + 'inks', 'inkById', 'inkByName', 'inkCoverage', + 'viewingConditions', 'viewingConditionById', + 'createViewingCondition', 'deleteViewingCondition', 'editViewingCondition', + 'editIccContext', 'densitometer', 'gamutCheck', 'gamutWarning', + ]), + ('Layouts', [ + 'layouts', 'layoutById', + 'createLayout', 'deleteLayout', 'editLayout', + ]), + ('User Actions', [ + 'userActions', 'userActionById', 'userActionIconNames', + 'userActionInstancesById', 'userActionInstancesByUser', + 'createUserAction', 'deleteUserAction', 'editUserAction', + 'clearUserActionInstancesById', 'clearUserActionInstancesByUser', + 'executeUserAction', 'startUserAction', + 'uploadUserActionIcon', + 'userActionChange', 'whenUserActionChange', + ]), + ('UI & Files', [ + 'getUIFiles', 'getUIFileContent', 'getUIFilesByFilter', + 'getUIProjects', 'getUIProjectFiles', 'getUIProjectsByFilter', + 'getUIProjectsByName', 'getUIProjectsByType', + 'createUIFile', 'createAndUploadUIFile', 'deleteUIFile', + 'editUIFile', 'saveUIFile', 'uploadUIFile', + 'createUIFolder', 'deleteUIFolder', + 'createUIProject', 'createUIProjectWithType', 'deleteUIProject', + 'editUIProject', + 'streamUIFileContent', 'getFileContent', 'saveFile', + ]), + ('Preflighting & Rasterizing', [ + 'preflightReport', 'streamPreflightPreview', 'rasterize', 'readBarCode', + ]), + ('Import / Export', [ + 'importedFiles', 'getImportConflicts', 'getImportInfo', + 'importData', 'exportData', 'uploadImportFile', + 'getSchemaExtensions', 'createSchemaExtension', 'deleteSchemaExtension', + 'editSchemaExtension', + ]), + ('Events & Logging', [ + 'getEventLogs', + 'whenObjectChange', 'whenStepStatusChange', + ]), + ('Relations', [ + 'createRelation', 'deleteRelation', 'deleteRelationFromObject', 'editRelation', + ]), + ('Reports', [ + 'reports', 'getReportURL', + ]), + ('Trash', [ + 'trashedObjects', 'deleteAllTrashedObjects', 'deleteObject', + 'restoreTrashedObject', 'trashObject', 'unTrashObject', 'unTrashAllObjects', + ]), + ('Milestones', [ + 'createMilestone', + ]), + ('Activities', [ + 'activities', 'activityById', 'activityIconById', 'activityIcons', + 'activityPresets', 'activityVariables', + 'deleteActivity', 'deleteActivityIcon', 'deleteActivityPreset', + 'duplicateActivity', 'createCustomActivity', 'deleteCustomActivity', + 'editActivity', 'editActivityPreset', 'editCustomActivity', + 'editActivityEngineCapacity', 'editActivityEngineTemplate', + 'uploadActivityIcon', + ]), +] + +# Seed endpoints for Tier 2 detailed docs +SEED_ENDPOINTS = [ + # Auth & System + 'connectAs', 'disconnectAs', 'whoami', 'serverInformation', + # Users + 'users', 'userById', 'createUser', 'changeUser', + # Security + 'securityProfiles', 'createUserSecurityProfile', 'addProfileToUser', 'addRoleToUser', + # Projects + 'projects', 'projectById', 'projectTemplates', 'createProject', 'deleteProject', 'createFolder', + # Assets + 'assets', 'assetById', 'createAsset', 'deleteAsset', 'downloadAsset', + # Org + 'customers', 'customerById', 'groups', 'addUserToGroup', + # Search + 'search', + # Approvals + 'approve', 'approveObject', +] + + +def generate_tier1_index(operations): + """Generate the full capability index.""" + lines = [] + lines.append("# Dalim ES FUSiON API — Full Capability Index") + lines.append("") + lines.append("This file lists **all** GraphQL operations available in the Dalim ES FUSiON API.") + lines.append("For detailed docs (arguments, types, examples) on actively used endpoints, see `dalim-api-reference.md`.") + lines.append("") + lines.append(f"**Total: {len(operations)} operations** — {sum(1 for o in operations if o['type']=='query')} Queries, {sum(1 for o in operations if o['type']=='mutation')} Mutations, {sum(1 for o in operations if o['type']=='subscription')} Subscriptions") + lines.append("") + + # Build a lookup + op_lookup = {op['name']: op for op in operations} + assigned = set() + + for domain, names in DOMAIN_PATTERNS: + domain_ops = [] + for name in names: + if name in op_lookup: + domain_ops.append(op_lookup[name]) + assigned.add(name) + + if not domain_ops: + continue + + lines.append(f"## {domain}") + lines.append("") + + # Group by type within domain + for op_type, label in [('query', 'Queries'), ('mutation', 'Mutations'), ('subscription', 'Subscriptions')]: + typed = [op for op in domain_ops if op['type'] == op_type] + if not typed: + continue + lines.append(f"### {label}") + for op in typed: + desc = op['description'] or 'No description' + # Clean up description + desc = desc.replace('\n', ' ').strip() + if len(desc) > 120: + desc = desc[:117] + '...' + ret = op['response_type'] + lines.append(f"- `{op['name']}` — {desc} → `{ret}`") + lines.append("") + + # Catch any unassigned operations + unassigned = [op for op in operations if op['name'] not in assigned] + if unassigned: + lines.append("## Other Operations") + lines.append("") + for op_type, label in [('query', 'Queries'), ('mutation', 'Mutations'), ('subscription', 'Subscriptions')]: + typed = [op for op in unassigned if op['type'] == op_type] + if not typed: + continue + lines.append(f"### {label}") + for op in typed: + desc = op['description'] or 'No description' + desc = desc.replace('\n', ' ').strip() + if len(desc) > 120: + desc = desc[:117] + '...' + ret = op['response_type'] + lines.append(f"- `{op['name']}` — {desc} → `{ret}`") + lines.append("") + + return '\n'.join(lines) + + +def generate_tier2_reference(operations): + """Generate detailed reference for seed endpoints.""" + op_lookup = {op['name']: op for op in operations} + + lines = [] + lines.append("# Dalim ES FUSiON API — Active Endpoint Reference") + lines.append("") + lines.append("Detailed documentation for the endpoints actively used in this project.") + lines.append("For a full list of all 466 available operations, see `dalim-api-index.md`.") + lines.append("") + lines.append("---") + lines.append("") + lines.append("## Authentication") + lines.append("") + lines.append("The API uses OAuth2 with HMAC SHA256 signing.") + lines.append("") + lines.append("**Token endpoint:** `https://{HOST}/ES/api/oauth/token`") + lines.append("**GraphQL endpoint:** `https://{HOST}/ES/api/graphql`") + lines.append("") + lines.append("**Get a token:**") + lines.append("```python") + lines.append('token_data = {') + lines.append(' "grant_type": "password",') + lines.append(' "client_id": CLIENT_ID,') + lines.append(' "client_secret": CLIENT_SECRET,') + lines.append(' "username": USERNAME,') + lines.append(' "password": PASSWORD') + lines.append('}') + lines.append('response = requests.post(TOKEN_URL, data=token_data)') + lines.append('access_token = response.json()["access_token"]') + lines.append('headers = {"Authorization": f"Bearer {access_token}", "Content-Type": "application/json"}') + lines.append("```") + lines.append("") + lines.append("**Dependency chain** (must create in this order):") + lines.append("Security Profiles → Users → Projects → Assets") + lines.append("") + lines.append("---") + lines.append("") + + # Group seed endpoints by category + categories = [ + ("System & Auth", ['connectAs', 'disconnectAs', 'whoami', 'serverInformation']), + ("Users", ['users', 'userById', 'createUser', 'changeUser']), + ("Security Profiles", ['securityProfiles', 'createUserSecurityProfile', 'addProfileToUser', 'addRoleToUser']), + ("Projects", ['projects', 'projectById', 'projectTemplates', 'createProject', 'deleteProject', 'createFolder']), + ("Assets", ['assets', 'assetById', 'createAsset', 'deleteAsset', 'downloadAsset']), + ("Organizations & Customers", ['customers', 'customerById', 'groups', 'addUserToGroup']), + ("Search", ['search']), + ("Approvals", ['approve', 'approveObject']), + ] + + for cat_name, cat_endpoints in categories: + lines.append(f"## {cat_name}") + lines.append("") + + for ep_name in cat_endpoints: + if ep_name not in op_lookup: + lines.append(f"### {ep_name}") + lines.append(f"*Not found in API — may have a different name*") + lines.append("") + continue + + op = op_lookup[ep_name] + + lines.append(f"### {op['name']}") + lines.append("") + lines.append(f"**Type:** {op['type'].capitalize()}") + lines.append(f"**Returns:** `{op['response_type']}`") + lines.append("") + + if op['description']: + lines.append(f"{op['description']}") + lines.append("") + + if op['arguments']: + lines.append("**Arguments:**") + lines.append("") + lines.append("| Name | Type | Required | Description |") + lines.append("|------|------|----------|-------------|") + for arg in op['arguments']: + req = "Yes" if arg['required'] else "No" + desc = arg['description'] or '—' + lines.append(f"| `{arg['name']}` | `{arg['type']}` | {req} | {desc} |") + lines.append("") + + if op['example_query']: + lines.append("**Example Query:**") + lines.append("```graphql") + lines.append(op['example_query']) + lines.append("```") + lines.append("") + + if op['example_variables']: + lines.append("**Example Variables:**") + lines.append("```json") + lines.append(op['example_variables']) + lines.append("```") + lines.append("") + + if op['example_response']: + # Truncate very long responses + resp = op['example_response'] + if len(resp) > 800: + resp = resp[:800] + '\n... (truncated)' + lines.append("**Example Response:**") + lines.append("```json") + lines.append(resp) + lines.append("```") + lines.append("") + + lines.append("---") + lines.append("") + + return '\n'.join(lines) + + +def main(): + with open(f'{DOCS_DIR}/api_parsed.json') as f: + data = json.load(f) + + operations = data['operations'] + print(f"Loaded {len(operations)} operations") + + # Generate Tier 1 + tier1 = generate_tier1_index(operations) + tier1_path = f'{DOCS_DIR}/dalim-api-index.md' + with open(tier1_path, 'w') as f: + f.write(tier1) + print(f"Tier 1 index: {len(tier1):,} bytes → {tier1_path}") + + # Generate Tier 2 + tier2 = generate_tier2_reference(operations) + tier2_path = f'{DOCS_DIR}/dalim-api-reference.md' + with open(tier2_path, 'w') as f: + f.write(tier2) + print(f"Tier 2 reference: {len(tier2):,} bytes → {tier2_path}") + + +if __name__ == '__main__': + main() diff --git a/javascripts/spectaql.min.js b/javascripts/spectaql.min.js new file mode 100644 index 0000000..6ef3202 --- /dev/null +++ b/javascripts/spectaql.min.js @@ -0,0 +1 @@ +function scrollSpy(){var l=5,e=document.querySelector("html"),c=(e&&(e=window.getComputedStyle(e).scrollPaddingTop)&&"string"==typeof e&&"auto"!==e&&e.endsWith("px")&&(l+=parseInt(e.split("px")[0])),"nav-scroll-active"),i=null,d=[];function t(){i=null;var e=document.querySelectorAll("[data-traverse-target]");Array.prototype.forEach.call(e,function(e){d.push({id:e.id,top:e.offsetTop})})}var n=debounce(function(){t(),o()},500),o=debounce(function(){var e,t,n,o,r=(e=>{for(var t=e+l,n=0;n=d[n].top&&(!o||t{toggleMenu(),scrollSpy()}); \ No newline at end of file diff --git a/parse_api.py b/parse_api.py new file mode 100644 index 0000000..3f67d9c --- /dev/null +++ b/parse_api.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python3 +"""Parse FUSION_API_index.html using regex to extract all GraphQL operations.""" + +import re +import json + +def strip_html(text): + """Remove HTML tags and clean whitespace.""" + text = re.sub(r'<[^>]+>', '', text) + text = re.sub(r'\s+', ' ', text).strip() + return text + +def extract_code_text(html): + """Extract text content from code blocks, stripping span tags.""" + return strip_html(html) + +def main(): + print("Reading HTML file...") + with open('/Users/daveporter/Desktop/CODING-2024/DALIM-API/FUSION_API_index.html', 'r', encoding='utf-8') as f: + html = f.read() + + print(f"HTML size: {len(html):,} bytes") + + # Extract all operation sections + # Each section starts with
]*class="operation[^"]*"[^>]*>(.*?)
' + sections = re.findall(section_pattern, html, re.DOTALL) + + print(f"Found {len(sections)} operation sections") + + operations = [] + for op_type, op_name, content in sections: + op = { + 'name': op_name, + 'type': op_type, + 'description': '', + 'response_type': '', + 'arguments': [], + 'example_query': '', + 'example_variables': '', + 'example_response': '' + } + + # Description + desc_match = re.search(r'class="operation-description[^"]*"[^>]*>.*?

(.*?)

', content, re.DOTALL) + if desc_match: + op['description'] = strip_html(desc_match.group(1)) + + # Response type + resp_match = re.search(r'class="operation-response[^"]*"[^>]*>.*?Returns\s+(.*?)

', content, re.DOTALL) + if resp_match: + op['response_type'] = strip_html(resp_match.group(1)) + + # Arguments from table + args_section = re.search(r'class="operation-arguments[^"]*"[^>]*>(.*?)
', content, re.DOTALL) + if args_section: + rows = re.findall(r'\s*(.*?)\s*(.*?)\s*', args_section.group(1), re.DOTALL) + for name_cell, desc_cell in rows: + arg_name = '' + arg_type = '' + name_match = re.search(r'class="property-name"[^>]*>(.*?)', name_cell, re.DOTALL) + if name_match: + arg_name = strip_html(name_match.group(1)) + type_match = re.search(r'class="property-type"[^>]*>(.*?)', name_cell, re.DOTALL) + if type_match: + arg_type = strip_html(type_match.group(1)) + required = 'required' in name_cell.lower() or '!' in arg_type + desc = strip_html(desc_cell) + + if arg_name: + op['arguments'].append({ + 'name': arg_name, + 'type': arg_type, + 'description': desc, + 'required': required + }) + + # Example query + query_example = re.search(r'class="[^"]*operation-query-example[^"]*"[^>]*>.*?
]*>(.*?)
', content, re.DOTALL) + if query_example: + op['example_query'] = strip_html(query_example.group(1)) + + # Example variables + vars_example = re.search(r'class="[^"]*operation-variables-example[^"]*"[^>]*>.*?
]*>(.*?)
', content, re.DOTALL) + if vars_example: + op['example_variables'] = strip_html(vars_example.group(1)) + + # Example response + resp_example = re.search(r'class="[^"]*operation-response-example[^"]*"[^>]*>.*?
]*>(.*?)
', content, re.DOTALL) + if resp_example: + op['example_response'] = strip_html(resp_example.group(1)) + + operations.append(op) + + # Count stats + queries = [op for op in operations if op['type'] == 'query'] + mutations = [op for op in operations if op['type'] == 'mutation'] + subscriptions = [op for op in operations if op['type'] == 'subscription'] + + print(f"\nResults:") + print(f" Queries: {len(queries)}") + print(f" Mutations: {len(mutations)}") + print(f" Subscriptions: {len(subscriptions)}") + + with_desc = sum(1 for op in operations if op['description']) + with_args = sum(1 for op in operations if op['arguments']) + with_resp = sum(1 for op in operations if op['response_type']) + with_example = sum(1 for op in operations if op['example_query']) + + print(f" With description: {with_desc}/{len(operations)}") + print(f" With arguments: {with_args}/{len(operations)}") + print(f" With response type: {with_resp}/{len(operations)}") + print(f" With example query: {with_example}/{len(operations)}") + + # Save + with open('/Users/daveporter/Desktop/CODING-2024/DALIM-API/docs/api_parsed.json', 'w') as f: + json.dump({'operations': operations}, f, indent=2) + print("\nSaved to docs/api_parsed.json") + + # Print a few samples + for name in ['activities', 'createProject', 'createUser', 'search', 'assets']: + matches = [op for op in operations if op['name'] == name] + if matches: + op = matches[0] + print(f"\n--- {op['type']} {op['name']} ---") + print(f" Desc: {op['description'][:100]}") + print(f" Response: {op['response_type']}") + print(f" Args ({len(op['arguments'])}):") + for a in op['arguments'][:3]: + print(f" {a['name']}: {a['type']} {'(required)' if a['required'] else ''} - {a['description'][:60]}") + if len(op['arguments']) > 3: + print(f" ... and {len(op['arguments'])-3} more") + +if __name__ == '__main__': + main() diff --git a/stylesheets/spectaql.min.css b/stylesheets/spectaql.min.css new file mode 100644 index 0000000..cd2229b --- /dev/null +++ b/stylesheets/spectaql.min.css @@ -0,0 +1 @@ +#spectaql{padding:0;margin:0}#spectaql pre{overflow:auto;margin-top:0;margin-bottom:20px}#spectaql pre code{display:block;background:#ccc}#spectaql table{width:100%;table-layout:fixed;text-align:left;border-collapse:collapse}#spectaql table td,#spectaql table th{margin:0;padding:0}#spectaql #introduction .example-section>*,#spectaql .definition-heading,#spectaql .doc-heading,#spectaql .introduction-item-title,#spectaql .operation-heading{overflow:hidden;text-overflow:ellipsis}#spectaql #page{display:flex}#spectaql #page *{box-sizing:border-box}#spectaql #page.drawer-open #sidebar{z-index:1000;transform:translateX(0)}#spectaql #page.drawer-open .drawer-overlay{display:block;background:rgba(0,0,0,.5);z-index:10}#spectaql #sidebar{position:fixed;min-width:250px;max-width:250px;flex-shrink:0;transition:transform .2s ease-out;transform:translateX(-100%);z-index:10;padding-top:20px;background:#fff}@media (min-width:48em){#spectaql #sidebar{position:relative;transform:none}}@media (min-width:64em){#spectaql #sidebar{min-width:300px;max-width:300px}}#spectaql .sidebar-top-container{display:flex;align-items:center;padding:0 20px}#spectaql #mobile-navbar{display:flex;align-items:center;position:sticky;top:0}@media (min-width:48em){#spectaql #mobile-navbar{display:none}}#spectaql .sidebar-open-button{display:flex;align-items:flex-start;margin:0;padding:0;border:none;background:0 0}#spectaql .sidebar-open-button .hamburger{width:16px;height:14px;cursor:pointer}#spectaql .sidebar-open-button .hamburger::after{display:block;content:"";height:2px;background:#2d3134;box-shadow:0 5px 0 #2d3134,0 10px 0 #2d3134}#spectaql .sidebar-open-button .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#spectaql .close-button{display:block}#spectaql .close-button .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (min-width:48em){#spectaql .close-button{display:none}}#spectaql .drawer-overlay{display:none;position:absolute;top:0;left:0;bottom:0;right:0;background:rgba(0,0,0,0)}@media (min-width:48em){#spectaql .drawer-overlay{display:none!important}}#spectaql #nav{display:flex;flex-direction:column;max-height:calc(100vh - 0px);padding:0 20px;padding-bottom:20px;position:sticky;top:0;overflow:auto}#spectaql #logo{margin-right:auto}#spectaql #logo img{display:block;width:100%;max-width:100%}#spectaql .nav-group-items,#spectaql .nav-group-section-items{padding:0;margin:0}#spectaql .nav-group-items>li,#spectaql .nav-group-section-items>li{list-style:none}#spectaql .nav-group-items .nav-group-section-title,#spectaql .nav-group-items>li,#spectaql .nav-group-section-items .nav-group-section-title,#spectaql .nav-group-section-items>li{overflow:hidden;text-overflow:ellipsis}#spectaql .nav-group-section-items{display:none}#spectaql .nav-scroll-expand .nav-group-section-items{display:block}#spectaql #docs{position:relative;margin:0 auto;min-width:100px;max-width:200em;flex-grow:1;flex-shrink:1;padding:20px}@media (min-width:48em){#spectaql .doc-row{display:flex;flex-wrap:wrap}}#spectaql .doc-row .doc-copy,#spectaql .doc-row .doc-examples{width:100%}@media (min-width:48em){#spectaql .doc-row .doc-copy,#spectaql .doc-row .doc-examples{width:50%}}@media (min-width:48em){#spectaql .doc-row .doc-copy{padding-right:20px}}@media (min-width:48em){#spectaql .doc-row .doc-examples{padding-left:20px}}.hljs{display:block;overflow-x:auto;padding:.5em;background:#23241f}.hljs,.hljs-subst,.hljs-tag{color:#f8f8f2}.hljs-emphasis,.hljs-strong{color:#a8a8a2}.hljs-bullet,.hljs-link,.hljs-literal,.hljs-number,.hljs-quote,.hljs-regexp{color:#ae81ff}.hljs-code,.hljs-section,.hljs-selector-class,.hljs-title{color:#a6e22e}.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic}.hljs-attr,.hljs-keyword,.hljs-name,.hljs-selector-tag{color:#f92672}.hljs-attribute,.hljs-symbol{color:#66d9ef}.hljs-class .hljs-title,.hljs-params{color:#f8f8f2}.hljs-addition,.hljs-built_in,.hljs-builtin-name,.hljs-selector-attr,.hljs-selector-id,.hljs-selector-pseudo,.hljs-string,.hljs-template-variable,.hljs-type,.hljs-variable{color:#e6db74}.hljs-comment,.hljs-deletion,.hljs-meta{color:#75715e}#spectaql{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,"Helvetica Neue",Ubuntu,sans-serif;font-size:14px;line-height:1.6;background:#fff;color:#2d3134}@media (min-width:32em){#spectaql{font-size:16px}}#spectaql a{color:#1779ba;text-decoration:none}#spectaql a:hover{color:#1468a0}#spectaql a:active,#spectaql a:focus{color:#1779ba}#spectaql code{font-size:.875em;font-family:Menlo,Consolas,monospace}#spectaql pre{color:#fff;border-radius:3px}#spectaql pre code{background:#222}#spectaql pre code,#spectaql pre code.hljs{font-size:.82em;line-height:1.4;padding:15px 20px}#spectaql .doc-heading{line-height:1.2;font-size:2.25em;margin-top:10px;padding-left:20px;padding-right:20px}@media (min-width:32em){#spectaql .doc-heading{padding-left:30px;padding-right:30px}}@media (min-width:48em){#spectaql .doc-heading{padding-left:40px;padding-right:40px}}@media (min-width:48em){#spectaql .doc-heading{margin-top:-10px}}@media (min-width:48em){#spectaql .definition-heading,#spectaql .doc-heading,#spectaql .introduction-item-title,#spectaql .operation-heading{width:50%}}#spectaql .close-button{background:0 0;border:none;padding:5px;font-size:16px;font-weight:700;color:#2d3134}#spectaql #introduction{margin-bottom:60px}#spectaql #introduction .introduction-item-title{padding-left:20px;padding-right:20px}@media (min-width:32em){#spectaql #introduction .introduction-item-title{padding-left:30px;padding-right:30px}}@media (min-width:48em){#spectaql #introduction .introduction-item-title{padding-left:40px;padding-right:40px}}#spectaql #introduction .example-section{margin-bottom:20px}#spectaql #introduction .example-section h5{font-weight:700}#spectaql #introduction .example-section h5,#spectaql #introduction .example-section p{margin:0;font-size:.875em}#spectaql #docs,#spectaql #mobile-navbar,#spectaql #sidebar{padding-top:20px;padding-bottom:20px}@media (min-width:32em){#spectaql #docs,#spectaql #mobile-navbar,#spectaql #sidebar{padding-top:30px;padding-bottom:30px}}@media (min-width:48em){#spectaql #docs,#spectaql #mobile-navbar,#spectaql #sidebar{padding-top:30px;padding-bottom:30px}}#spectaql #mobile-navbar,#spectaql #nav,#spectaql .sidebar-top-container{padding-left:20px;padding-right:20px}@media (min-width:32em){#spectaql #mobile-navbar,#spectaql #nav,#spectaql .sidebar-top-container{padding-left:30px;padding-right:30px}}@media (min-width:48em){#spectaql #mobile-navbar,#spectaql #nav,#spectaql .sidebar-top-container{padding-left:40px;padding-right:40px}}#spectaql #sidebar{padding-bottom:0;background:#fafafa}#spectaql #sidebar a{color:#2d3134}#spectaql #sidebar a.nav-scroll-active{color:#1779ba}#spectaql #sidebar a:hover{color:#1468a0}@media (min-width:48em){#spectaql #sidebar{border-right:1px solid #d8d8d8}}#spectaql #mobile-navbar{background:#fff;margin-top:-20px}@media (min-width:32em){#spectaql #mobile-navbar{margin-top:-30px}}#spectaql #mobile-navbar .sidebar-open-button::after{display:block;content:"All Topics";margin-left:10px}#spectaql #nav .nav-group{margin-top:20px}#spectaql #nav .nav-group li{margin-bottom:5px}#spectaql #nav .nav-group-title{font-size:.875em;font-weight:400;margin:0 0 6px 0;color:#999}#spectaql #nav .nav-group-section-title{font-size:inherit;margin:0;margin-bottom:5px;font-weight:400}#spectaql #nav .nav-group-section-items{margin-left:.75em}#spectaql #docs{padding-left:0;padding-right:0}@media (min-width:48em){#spectaql #docs::before{content:"";display:block;position:absolute;right:0;top:0;bottom:0;width:50%;background:#2d3134}}@media (min-width:48em){#spectaql #content{position:relative}}#spectaql .definition,#spectaql .operation{margin-bottom:60px}#spectaql .definition .definition-heading code,#spectaql .definition .operation-heading code,#spectaql .operation .definition-heading code,#spectaql .operation .operation-heading code{font-family:inherit;font-size:inherit;font-weight:inherit}#spectaql .group-heading{padding-top:10px;padding-bottom:10px;margin-bottom:40px;font-weight:400;background:#fafafa;border-top:1px solid #e0e0e0;border-bottom:1px solid #e0e0e0;padding-left:20px;padding-right:20px}@media (min-width:32em){#spectaql .group-heading{padding-left:30px;padding-right:30px}}@media (min-width:48em){#spectaql .group-heading{padding-left:40px;padding-right:40px}}@media (min-width:48em){#spectaql .group-heading{width:50%}}#spectaql .definition-group-name,#spectaql .operation-group-name{border-top:1px solid #d8d8d8;font-size:inherit;font-weight:inherit}#spectaql .definition-group-name a,#spectaql .operation-group-name a{font-size:.75em;display:inline-block;background:#1779ba;color:#fff;padding:5px 10px}#spectaql .definition-group-name a:hover,#spectaql .operation-group-name a:hover{background:#1468a0}@media (min-width:48em){#spectaql .definition-group-name,#spectaql .operation-group-name{width:50%}}#spectaql .definition-heading,#spectaql .doc-row .doc-copy,#spectaql .doc-row .doc-examples,#spectaql .operation-heading{padding-left:20px;padding-right:20px}@media (min-width:32em){#spectaql .definition-heading,#spectaql .doc-row .doc-copy,#spectaql .doc-row .doc-examples,#spectaql .operation-heading{padding-left:30px;padding-right:30px}}@media (min-width:48em){#spectaql .definition-heading,#spectaql .doc-row .doc-copy,#spectaql .doc-row .doc-examples,#spectaql .operation-heading{padding-left:40px;padding-right:40px}}#spectaql .doc-examples{margin-top:20px;color:#2d3134}#spectaql .doc-examples .example-section-is-code h5{text-transform:capitalize;font-size:.875em;margin:0 0 5px 0;font-weight:400}@media (min-width:48em){#spectaql .doc-examples{margin-top:0;color:#fff}#spectaql .doc-examples .example-section-is-code h5{color:#fefefe}}#spectaql .doc-copy p{margin:0 0 20px 0}#spectaql .doc-copy p:last-child{margin-bottom:0}#spectaql .doc-copy code{padding:1px 4px;border-radius:3px;background:#fafafa;border:1px solid #e0e0e0}#spectaql .doc-copy table tr th{font-weight:400;border-bottom:1px solid #d8d8d8}#spectaql .doc-copy table tr td{border-bottom:1px solid #e0e0e0}#spectaql .doc-copy table tr.row-has-field-arguments td,#spectaql .doc-copy table tr:last-child td{border-bottom:none}#spectaql .doc-copy table tr td,#spectaql .doc-copy table tr th{padding:5px}#spectaql .doc-copy table tr td:first-child,#spectaql .doc-copy table tr th:first-child{padding-left:0}#spectaql .doc-copy table tr td:last-child,#spectaql .doc-copy table tr th:last-child{padding-right:0}#spectaql .doc-copy .doc-copy-section{margin-bottom:30px}#spectaql .doc-copy .doc-copy-section>h5{margin:0 0 5px 0;font-size:inherit;font-weight:inherit;color:#999}#spectaql .doc-copy .definition-description>h5,#spectaql .doc-copy .definition-properties>h5,#spectaql .doc-copy .operation-description>h5{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#spectaql .field-arguments{font-size:.875em;background-color:#fafafa;border:1px solid #e0e0e0;padding:10px;margin-bottom:5px}#spectaql .field-arguments p{margin:10px 0 0 0}#spectaql .field-arguments h5.field-arguments-heading{margin:0;padding:0 0 10px 0;font-weight:inherit;color:#999}#spectaql .field-arguments .field-argument{border-top:1px #e0e0e0 solid;padding:10px 0}#spectaql .field-arguments .field-argument:last-child{padding-bottom:0}#spectaql .field-arguments .field-argument-name{margin:0;font-size:inherit;font-weight:inherit}#spectaql .deprecation-reason{word-break:break-word}#spectaql .deprecation-reason::before{display:inline;content:"Deprecated";padding:2px 5px;margin-right:5px;background:#fed7d8;color:#c60609;font-weight:700;font-size:.875em} \ No newline at end of file

2KOFi{Pt z=eZt_(yp&Pyzw2eSugSJ1X(oRfvHWLkYoP<4~Ax#<{U(T2st-BiH@sbTI_8Ar!`fd zZx3eppe!b;EA*_$^!PM9D{c@hS#ftG{?rNltl~ zB|L@$jzjs}%oCJzHjdrLXZsCI9es$PrjKZjg$(CtLSwJd^D`4Grr=!QB;hp{y%>q6w3l34$1h443qaup#Xow%Q=z_3Uwp#~ ztaV@AdotQOn;&>)aOi9H$E3#8o0q4_GRN`{Z{}k{^buk6`GngWr}jqS?;O41CH>Z( zBOe?IyrL&jWp+QwsxjYPxblt_daIc3Rpk8dD^|GRA>z5+dhJnLc1UKUgmzb_xUB-1E#89bI}6 z7PnW%5Ls4L);bX985^H`_=W>Pyy2++;F(zAo+W^u%hicrz6jlaV_9y~&s*Gfee}Br zj=roD_(iJm zE6G3QUQBH+UYG24etX3jCT)KHBW2}k<6lq{jn9>sKo4uN+fLC2-tfeDjRO>*AOWkU zu5D12q*q!J&jUXrl9^ zmX5H3lvFkh#WfO#Eo^>aI6MifZ@-AStDyV+uFS|3 z>@<7Ku7OOg9^Yy?0{1OXznMoHj+Z=xuT#Hl%QVqSg?zL>QEOA893j{3N|ehn^M7I% zuxY4$;f)v=#)Ws|&l0)~hD;Ul=@tcMh-B-JX>ekGf3lPW$5YSdIZl30ZX$Ve?|U!+ zCvhC(!E4n%Acq~@r*m%$m0lLHRc5!?`H7HcIB|Z+fFWqBMq*yp-QA_Tb5Zbo!=kzd zugoizTW|c9P(JmS?=r&`Tc_KITZXT1ybvbwyXw7T%3|H8!`328qf-I#>j3bhRfFN{ z8QE*ds`&Mlq&*sbzmV(C%sh`LIvrzoW~>hWIyc%D%XkTBXk-qbf5>5YFdY5;M4&6D z69zr`c7;H1Xv(Y9%TNec>J_IQzT$4TJ@W{2o6EvG^?Tw_<xh0mB?9W{SI4ARX==3odP;gZ)uZ>4Ev9}netlqri7&s*!D)S!cj6g$ zZUaBrsWo!s^ZAHs+z)72HQ)==`$AAeHTc0(ca=uJZWEjP1!ch`um zS~Y{%bjFf^WZ=1oz#8yMd4c8t0GMNh%&wcf%ODsuj)1e(_=qaG-8~5Lpe<6Dwsjsq zll)SyxjOUO1rCPKd4r!Vj%61DnB*o=KA0i}6uYs6=8Uux(d*>&5I1!@4PI~PCadB+ z2CTi;0RYmbRS#3ItxJtSy!1SQ6;XN?#^UhboS~dS>OozzE3U-hU%q;XZ*;b3_dR3% zk7=YU%=3SE?(O}N+FsDL8>_fk`+%2w-9Y*=4Z{Zk&v-evD9k>2_R?(IJ3f%Bsbo_o9!`HXDT?xETYTV~ zTpgLMqxVT>u}rQjzuwVQRd;DlYpVOva?Xy0H0Yk+h%HtbcOO0VAQU^cZP%xGl+1?u zKVODY4bgzx-Kyp6B#4Zg3U*tI4-2BD0F}sXNc@`_;4Xf(x ze0snjcMhLbhn-H0<@hD|3_L;?1=*&krv~j4WPouWvlUW$Za_-!*i{Ed%~b51%2-|3&PZQ znJmtU?vQ|h1O@>{*_-Vn6r(^Z7bW(K3>aw4xPuzQnzd=Xs@PgEN#`m@SAcs(0@l>p zaS-kEkaK~yk(TN=+{5V$9hWo1U^>4VW-!-|v9LO7dBwjFJ>&3RzkAE38e~Uh0}BA< z(0@7*S*Q?G>>8EB3^=6+cAuung}K|TE3tIPZOG z%3b5D2%_ADZrmFIc7E!Eh9bSE!hKlJ~XBaQVe-_IyDW4YPV9e-vY&R_-KQ_RkQ>_G}%U0-R3Goy~PKREu=Jb8N~Zr|jvh7ZB>Go?X+?;b<& zhjiy{lX*tL(8H4B(|9zx#yT6Y7PJMu31R@rZGXaEDT4ZjpPhW-pf;>}9`Njfg6K59 zx1;44o(*iIO-HTDFxNxxd3rK2`#(qSV{amBjMtl~*VZ5s@o>|sk2l0i1WN4IK7tKe zJ2;ID?eh}7;eFeZ^7Z$FNzNFnrV!M%Cl~UuG=IT3da))V=sA2HW$Z6P>A}(~2bnGh zIG%UcN%%|om;${AK+#@<`PvRfwd%BcbRt&xY1OkYVwHFXk25{STn_<#7zVoV@%=!J zU}oDpk&E3zThCLMZu$e(z@oPxTEo9_;t5)lTwA}qP_WI`j!$wZ>f`X4L~ZEakKdTC z#a_*mn2MG*UAjUZN~c8o`R@;s95vgm!P7a@O_X7MAGnO0^gn+L7-?aIb%uh6AsS$T zK(q$Ey7c@-SSp~;`gD#8EMVkMbN3Nv4yCTobN2(Z^fXV1i&idyyFLA7Xll@Y=d=JF z?0){C;a*-oA}t!I>Ua5p%Y?d~vvL5Y0krsH8iV`(%!(M=E6CaRXg2}inEpijkhl4r zfhZN`f3XzBuiOyLzF#qW73&KKHM#q&wXBZ%N4&MQT`oQhB`#eJVB2{&gYK+ZUB6lQ zirjr`@d1OE>i!{{&X_&=bce0B{yn1I&}!PX>*z}rtDYq$v@vLDra!-*Nl0?h-23@} ziIM1W_w@onCUyzMI-Nf;QL)7>yFzYhUPqV^=R3HS!L|82!~+BTp$ybnNaMTx;xS!- z8a2OSQjVJWc$a0MjJP|7xJ+eS;jwM}xctgs zQCD0W5xT3%%hlKMEJlF8W8Ie2-%+5NUtY0xlm%%?THL+HnSOd7ii37{W-pd%I@~+; zI{Lz)lMXidu2YaYHY3*MqfTR}?fZtOZ)mXZF%x$5oVdSPsCD;>zGST-`FH#vf=K>J zmu<5JhzV)>I!i3%o@=(;K126BJy~C z)*hWns_mq__c(c#gtN}-OoyOX-_)q1vix`bz-)T6FY3nEdgx@*Xiu$uVy2tjZ9en) zh1s`(tsTnt{7UkH&rgp@q6#*K5~<_wq{$>Kt(DdH)>l(DQu1~F!f$6&RqXYYtc!0> z{5@rxsE*%xnF@78`+eqat;3)6i|GMvx*a|vrlEDB-oz0T6-JQ?HVyvkC{PoV?jqf* zKK^5C4SIhgrr*=^Fy|*bLe_s9O~(YGVeYZIYQJ=p1-~dSS{xG#K<2#&WS>>p=J|x# zFq*n>fEwD$;~vB^Ci&^?b(oa$8Xdl1y9e?ezF;=m{Qc`Z><1qn^A0qu;v2xq{$PVq zwL1Cx%)$jqr%vY`H-;VN*FRqn-P1wlM*u5ezqq0S2Q4dm`_fYE333@-e=Pq1i&|xi zvuFAEi-L5ItJCiA&egARUw`s`6&w+mWrxh>S!&p`0^^Xg*N2oFwnDbIc$y;$TS$H>*Q+*m|IrX zn@7@3M&c5kGNWF!^c8Vt*AF%(+N#;LO$c0zc(ex32fVpiW20g^+n=&2!!b2!hSeu25*5T$0&e=QlfClGw20I<&JG~1HPr+iN}RJ?h_Wi*s*tGDi8ok6`v z{Ec1HK4!nEK@PaSx{tI#dN0Y>@h@A0Zp|MuHaMVc7(Y6GCGc0+$lsuD`49#f1sp51 z6*+dc=FA>M1vk0R-*}^0QA`vmc(<}~D9nQ2bR<$b<8krU4K=v>F^23ww%7pOcIQb% ztc)uxE54lVr&tOatxYTM>I4}-M@CwOgX_=MSQ0Vq{ry0w+MIH}e@ws{7(;HK8%@Ps zYxmY%WY6EjF%jV7?+|cY>NI}wD=@nHtKwd%z+>_8F9D}Y(0)5dI;7fz;rp3t+ieZ4 zk;DZ+7*Gb@X6kdy{9I`(z_EE#8-^l6;BZhSQ_?is0uOuryTU1@;116zkpIDe4nfzr-^|=x^WR zBW~T-@A3nHqUGus+ppeXo#O{T&smflDASAfA!`kq+fTf~wtB-~yAi?$9%p%hS^Zys zQxXn2pGK37%M^~ATS#EE;C}CC=jh_Bef&;)%Ri_Upv@Rz$-Q5o&QVlfnHJ2-g z-S{SnzxYP#KB7Nfu(-;Un|FM`0Oe^n9UFkA)dm^D9adG!E+TQ6*{{U{EMgm&sN1N0ls){sp4p`5Y#;Z8G z@5()2#6`9DPm)+ETy-?KWQ0jO1U1xg7FanxSka{Lzo;6r`!#9c~E-}W$3XfE$60svN=U1qA;j;9d9uo-@P#tHTn5~j%nLRzsztB3g3Y@fSu*kR?7A55Ku9*3WYrce$>K_ z-B)hpA&i@He8g5`^!!Ut%NrU!zmP7b{U8k;z95#ZZ{|=hCy3~}aRV9$I}(-#cVBsB z#jigS$6MhGR<`xp0W$iqTpZ6i@igT0&u;Y>Q%1?Bm&^?HzCFHR-UA+;qNB}tmN9E* zeizu9<*EAb`X*Z~YxU~~a2(P1$b>-I(7k%UGMN^%D^I*Z$uZ^j`>ZhRa&GH1OKo_V z0OlI1KK#JQS{5F(IL=SRI?JW8>k%5IqjwUkQB|%EA!W1(I|oH8pyo8m#dI67l(Z*r z%QN`rxZw8kjhh0nj@8yGCT_^LdLgO!j8xM@v*m*Tx!=35>Kew0UB28vS)TK!>Y~Z! zSyw==kAIjOCs68li!-3UMfia*4HL8MOphwc$3gU$yRV@?aqTQU{pHA22Yg}XQEeE8Lh0##gF`+6{C)(Djxxl6>@xs@2WtIbagiyH>1qXL+k}e!l+i%naBQD(mGk{S467Ee$#*866#h-f=vsxN!?_#` zLVzvCA;ZjQ)Et~8KI;Df>Zhbk{AijEE8O#qA+QahsME{lpo1=v_wo3GR5Drb_w^`t zR(2Zm_s(O^txd=0)&vVqm)}XikKgy!C9u<4YIftK0ibt|pUxeiZZACW_3JUR!0$S> z+xZc>9jkx5O0hwJ7jI9AX>OND9N#?{QBGVY&&<^VzWGAMUc_d(Z)MV2FdjC0aTG6^ zk6BBiKXhg|&y;t!(&9Tj)*wtib0zA!KM)H3KQULqw=ZdTz<$58d2Xu9nAg|h2q@1E zA|*Mz?jI~xwHmkY5Kn>i_=GNYU+_9ZAR(3Ndl8xn8ozxZVy^f#r>`t^f}M4*m#jBd zyPtnDng|_VzlhsG3xjorN4KJ}_~U{lwXJugeW|Hhs9~b(pdWuTlgm2WpSrUM3dS6D z`@98B48FWTimf-4-KY7peRY7PEHT2}mUlF>mxx+kj(QD<*cw@$k;R;Qe^Ut>J^h~X zYQJFEjRLPw<#Z7QNLDD;TGXV#{4bAF^F%=MTMzOKl<;=N!{@qehtpuVu~=8xrw z%<2mAx9+7O=bH<${z1>J*>`!G-z70n?rRrkZSx6GTodMfU=_I-d>&7skicB9~r%^A*z(%ZJQ>a?~qgVu4o8Z5OVq2M;kuN?>wx-UkJGo{rhq zj?l+<@|=!?wwCX#DTfD>`@CRP>^pKldd!er-Duo;{{XQZzM|*nq*fP;Bk-4i7%Ok@ zq}59H-u``HK*QyE^z?vZVf+62#a7BS179y`U5+b|4|CEcrv+y<(dpI!8V7hNTBf4o zqt+@_fspHU>lrFEXkUMsaEA^X_xYBtqjAnX=jcZMQ7w&c$@pawICsBzsM0oWYCuY= zzY|v>`%Dz|lclvp4ApuNxX$0k}B&4q{rGwYn~hXW_vR zu?}5zpR(}`R@Yt+-ery_8GWH)Hd(>Mq1LgZ`63lJiHN(uHuNCnV4!h+zD^B_RnI#=Fw`OTkFpTH~YuthVQhDuC7voI!m- zWo)Vw6}^*FtuA-jnWsTArcTdqFLPg=o#yus@er zB0;D7iG|tt5mDB9rHZP~!>QI7gL1S@k{ShU=!Z_;kz2}7ul6Zec;oxC3skjgTq12e!D^8S>zmYI>klWteVm8Km;qpR{V${ z7iwo6IU`j>a#r0)Ta0H@N8yWthWu+0(m4E|B-j>gkrN^(KQTr>9}%X?7hV}n0kdn* zlx$-MKM=P81nd0?m1sTmJHs_E_WVUtZi&f&+0gIHD%mf&glwlZrTh?ZE|z){^qG8Z z(2u!Wru`3?(220EyGofc3@gVCZ@hchu}RaUb3?kHSJ;380rOv%T>KC{E4Ek=K+rOM{ouoFj%US?IF_S0?fE5v{0JO<=@6)$famV= z`GTaN>a63{yc>ArZ_t}F1zhNVL`#{?-;b26+?YQ7s3FR~%$NhOF6{`E6HoOCO`G;5 zBhC)6ou^T{?&}INYg%f|7o0&7<5$*QW~=_|)R-7l4?@-XW@CB}=#)Rp$`$=v%eC$5 zmw90fjb&G+Hj4PzAKTUov&W*M9*Bfh#vhpUm$|xontDt4(TQv#pmm2}Qq|fkbj-2H zUYF}NCZEv-yy$l$9YK|Hr7Sjnotbjlzt6J@l;5BC-dU#1F0SXdlrdcBb=mvYApt18 zcN+(+%SH*)h&C3{!~oStxB5M%beHurS75N*)&ROUXx5J;wapxq7aHtc`}BWM*=Ufo zNCO{}IPdEfi2ysl$zp?qtw-hqqiY~tb@?TfKm}|)J9UILf!~+rR0XUIcX29#%TTj` z*y%9^4C7O&@he(8R*A{+0m(Kt?GlDu@#b}ztFf+^@XOtoqkfDoC1sS4 z;rN5U>~)kI?yrfe^m+LuTo1h=oVrIE6n)k;Gp_r+x=sT4;!?Ahh$7EFiMQ#DX1-Xc z4C`&WyuBs32Aucr(qLBY`HuJO`l3{`wMu#&A#Ro4`d{*3E`2{x%rpg^9(|)==~oV} zULY_70C(W`mG#k!O6Rc|+lS4){Uw&i=n+h_x{{SOV4UR{c z8p506AY9FW?(-KbYQKUgy|f?MF2PBMUnzwkFGbS2Io4h^scmnd!gacJkKbtE(0(Ih z?-MSXJgtbA>K)x6(zo(D#0O#IYaej@Mpy$UVc>xomKUzwU3@2+GOF6Ao+U1gBf9?p zBO|Al-5!xBx<9rpB;|gpUcM{zPudrSMbw5yWcu#3{*?yRN>xgfhv)z>* z$Cdv8W&B4Gw+j&>pc%F>1YG!DqtKK$pc5-?JsV9`9{*j7s2NI!Yh*thR%nsWg`Pj$*MfKHif6`hY!7CF`@j2x8fzGZUeKKkQgt* z`@F|owEKOy>QUd@i72CWzh9Y3+t9XrpRyXVVJ+Y<6L99eNZ5_wCkNe_2B$oCAD(5p z#`I`^IU@Ji3m9Ho^oo|^48A&al-L!jw7=|Z8tdQtHf~6IkhCsc6Mu$Tc83mr7?eYK zQymOei0gTJ9!|2Qfc&2%Q%dc#+lDQjcVE0QlOK{fYDC)*X8Uv>FuVW{>%2>N4PWeVQ#k9^|UhB zb?f|{#j5Z8i_f8|@BEBz@NXz9jY_C~%jal872vV_>lba%R-JwbnLMq-@Art<1vO3j zMj_fQr%#p_fW11}AXEXLVk#=eoU)g;T&L!xGz=IYSwWJr9@9!~JSIvXyyYncy-z<_ zmxdW;o0sT2N`0}DRm1lo23#L1BDbmKjfkUlKbvUsPj(5HU-cgnoyRY8H()PfDu?#s>_**?jlvue=(5p?1^u<{Y+D%)&R9jAC~9f-?&h# zVSeSdUex!Wv*Ixh0IOUFq|x@@Gake{Z71~O8>d5;)HlqrW*Zv&)lmkv6#aDgl+|y| z33~w0%q}dx>L3qan7I4A7`H1N$1`0TybN3%Xn8sLfGKUS1|`Fu_%3@p@e=^eX7K7m zZIk%^zcS62sW%^zBgh9#9s0c`5VX^1uPeFf3^WFdzkisnjA^&}fIM_!{{XN?UVeYF z(GEtJ@X7<_^6LZ|8ZVxVX}7hzbeX_bQ0dg^(h)1SZJyjcCOW=;%x?vix5Pt=w{4i5 zsQi$|nn&>fS?BRI0Y{|NA`j*MMT!di5asRG>D8Q(b$5OUHP9c3mWBw5(v4~LVtDsF z%T+Yjzw%+#*XwAjx>tYXPDUACWx1$xxArGx35z=Je?fQ8WwvI$V1)gip8M_1x( z`?clQ?|G)erpISP9#t#`w^q{jahaiTc>$!NrWXATrI&R(?Exc?-K!gWUvZ1(s{G4l zr41O-z2(9sZ42~%V)X$`VTwLX~6w4G<##rhpP;ZeHgfS zezDij`ygB8BJ3N;LsBsQ%>2VNSa;qEI@QMV_4JmLocYCtHi#C>uO>HPx3jnI1&0gv z{==T(?J?h6y%R}yC23v<-$<|c63z|QXzg*CF3}e9uUq}fK(BRK-9H|Yn+B7S`{@|J z$amMg(A!7p^p*l}JT(46ki4$<{>B-d;kVwf$~T=iaLW#rvh4YfB5{V#5GzBavoLG2 z^xHhWxrO+F+JBGg7X-*Z7R*vr%9^jcmw2E98%c<-K{1`R@tHtFByVV6c|)a^Xe zL8I`>IL5c)C0SY9W?Pfx{Fc@2p|RdLrC0L9aY4SvZds`37q3f8=N9U#%i*&OFN|A(H)KQm&9- zV@YDOe`c(uo>X=wP4k%QryKl6TzA@8K($`){ALd-+7^L+(|3YZK6*roTNVcGa~Bgt zz}V6kno`p}VE24uP1rG2tTp|xO*A;jFfz;(8PaJ`0hALXY{J{xVRD#zKs`4C{}tQgbPfzu)FrjbD#*$`H+x zS6<)4EH#+HevCw}uMe{tEvH9I{>RRvrr+u`Y3Taq3h7gzyYyu-cxTaw+rGX30EyJi zO53zX)g!611X_kZEUhRTaoeP~iHDOojUSWdV5ci?drd*^{6Z9Gi}jX8w)?%hLM0-8 zAhN!8=e%0Cd;z~`tB9^N?CUKy4q#Ra)DNpJ_&0g}OZiRj){qUIW#%#$Vb54Kq;kCV zg5to*^D~w{pO~rHHg=C_!0-ibG$@71<>XI3t9f$N?3;C z4uN-*arZD*znnb##HT8C{iVUP9mm(KGMT$vzEDI^{rlE5^e;URzL2^L%0B+%A`R^A zzuvN>=oJV#IlfxtCRo{*|^U!p#m^POXWIH>HK9?{x(Jz~?V1nx^rS(xd65Drpl zMKwkK<-n$O4mFP&)Gdu~wAGxn&X9JCrRDnHh*tB+Z2+@%X7Y&bsMU3MdhG)|gk;9L zQq^>VqftDr&}P;Lt$Er}+T$KZ(T%AQpf$qv_tWjCC;+|&F-0+9!$rF z2lTfagKlcRuk5V62~Cb2-@WoO^jo6OgCJ z-eQ*3lWrc+y@mHNHL1h*ebxgG4o~;iU>&lKc!6i~?nbpP3$*9Vnr^o4KgK)Y(CBgG zdc^yw10Tb@w6}0><{9L(XOak*x^ezMyPXraN7^;p+1^##>Tta~#8BXFV*dcK7Ld`> zpEC!sFNVytcyKR9V$)3?I!7BBqxL#Y17B7mt1$1g-c!^j+x9}Kq;%up&28toDY`Y( zH|;geT=DY9Vlk+ldazy&%j`f6HwPVKZA&^F{{SYfjAi(W-p}d<7@?4TSwz@%UH<@* z@6bIW1M|czU)%8lws(1g_|CiMuV|XqhVQJkZJI;(Sb_<`?{*+kH<42-%y1n#wdwN} zReFs&oK$d5D-*W@<1lPn!gM+IB>)^V!2+y(7tAmj&bocf3r5j*e&!Shxi~)N0_cK= z1PV%=&1?Gt=UntY=gJFuRuhB##0m`$_KT3{cl+r)l}C6sMOZSC<}QSwjRCnbol?uQ zGd@bGsmn32>4{Gusee0PkCsp>$M?1Pi_#oLM?b0-4${paWhOQ4^^|1R1p`l4To)exakOKXTPX#n>O%&vmuw;LJUku+FEX1Ukba`urvK5%^(?U1qL8^ z82$Uj0$c6_U+;JjC5{mcoP)Uj$6JgYM?W!;+c|uYj{vA0FGH51>H=s2syKcKYN zqZiWPT-Qbg>FC~(668Aa>U>HvHa&Iz${Ka~ARw<)bb64=Udn0FAr6K|+EOW|hTqh& ziwE+|3McJ}CEo=OmhJ*DO6rrK9->hwq%fIp?`iG=I^449`ui4rL@w$3U zjawHl9ivC?>->o9$5)r)Ia|;JRf-FwZNP&bpU`|jJP7*tg3-{`%tJPwW9AjNfK0DU z^x=y_#pV9>ft`j9=ww{_58u=>Etlo}j}7I%gYW7hZ6#kDnRKce{A=;&C>4|S$KJD6 z*#7``*Yz${Fr&ZUNU6ZO>ggyr7VorJwW9m10b1Df4PXwDXg+2yk~Kdr?9dK`)Ta?T zPxgY*zz@y)N|!dCMMi1ReqveH{t0J8_b_X!5OQu+Wr`y z%lDl-A2CmPh814wWwSuR%N4u`#_kf1`+gzb0e45V5Gu;L+nGUHth+~$YVtqNNGLTb zx{tT|j#zDJ)cflYBh~fxe3_u23Qd9c_DeCOzuVerKxVfc&v*#Io{xez4_^mqCM(IG9~c*RMziFE?Jk%mX|&_Jpa+)c2H$dC9j& zyepyQ$saEr7k}w1OLWbcUZ+@?EoQTGlj0)2roBi^>?Y1)t(Y0dv{R-I)cKScHVSLe zilDF>K90~UW2Vtk7P^~%P_9Swubd=x8BNEe8K7qavl-;3Q+P@hjceVO8q{kRqc2BR zS{C2tEy;uKCCMm1U)TtF4tw;BuCsnn4)*M7i>?&kp*XxY+o3Y$bsKahG^a&2=tf*! zN1+_rfs|7k8eNZbGKGTzpj74S#A96Z+pKDyzg0CHXne#YT1zE$h>HTY_j_*&sS52y zL)sf3aS9KSH-6#>xGTPg+(qq@hlm56OI<$ZUsL!K{Qa;?nhHDp^qx@jKI6_|a)lFe z(&W!nN|=q4BppbBK{LLP z33%3MdY+vj9=}idEPM<3KeHxsmhMGSY_;-f_pGQ3L!W(^>YQ4Rn|>c$fw)YCg&ijS z&Yn@FQGq_}{n7!mn$7P)(U<$u|M*a~aWh~sUSzwticJ4~15-)@E=*@WA3 zr)Wi>z5UQMyRDtcK-hJ8fTLqqXgv3ww_dW$nERwg+*Y4k#Gp|1Mrt(b^Ar~6caD*^ z!&KX$)?v_7@Ih|QrOiHIpfOJM->hSHf2YjQ2Q6MBQ-$*E{t0$`ZsmaN4L)FNkm=T4 z>bisO#0ILnuAkT;S`A!%BC%IhLDTyeTa&lkM%OOFY1iQ|wcZ{&d3(kOQ2NF|o7@Rv zfU4z_t`@}^A!1Flt{KTT1t6rb)q#U;@@{e#)+GR{;yrb?~yRc$X zixVS19t3oLWyCL_wc%bk~3oXE1}QIl{YX>CgLekL}zDlMJJ z_`&j-m0Ol~nV`^o&%Tq)0pE{U0Xi37w8RB6={kRx5P{BrPqfQG(Shmyr4P8c`r>gd zDZrL%alDbRs(`hAHegxEDXbHZm>@6|IR5}8G?udAc#unLdx)p_cO5>n^kA z^oxl}@^pwdbiPcw6GY{0@$oBSy}5V!mzt^?oIN8(Xs41(Iv)Q3 z2mq|?d&NsQao?dD&7WRz4Fz!LuV|@UUvf~~(M_W19J<%`0RXze$5trDuQ~N$169<$ z`mlG4OW&(0WGgxKj4-OtW95hp6s&AcggN+?ZgTR<-fMH-D+8yXL5mA*dh-S@jQbCG zIagCY^Dxzc#G!{8u!!2(Z3~`^&l$^nCr`|E3tu6$1~GKKzUF;H_jpAYO}$^ZnQ_Xu z-?~hfa*hd2nh)(RLt?z;7rXEv5#7=jC&-3ZR-hU*j-wkzdp}!B3Si{iJtz5ZE8-0C z6&*Qg>YHZ7FH3TMAz{@&snz>2RoUw-Z?zDPU7toP!*%a7TXyt~7p?l3E{yy5j1Kiq z=3@)`{{XW;k4{*wt4>(XjC6GG);S%bpquB;YJBBYvd-kQwbk!31m9;;YmAll{6rdX z(CfJ^wd?sg^kX9yx^i*t91cd_aq;OC0{;Nn`phLqo#SH)-66i6SZaW+zoUXDaj#$Y z1wBFGfG-9<^p~=m-GA6z8uK5>cBdnU`wOyZ^gz%9HLKUW4$#g0m!9R1(-D_h*t@~A zGSug!HmprL^zRcH`08;Enr;)?0(z}nbb3b4;iTjF9CQrh)>P21kbthHg5RSuqIPlG zAk&fCm?Y9^!=o)|m8m)H4jN>@M)`Apxci5vNtI}E^U_+itH|CUQm>vS`!`?)GpH`F zEMB=S4rRk4U(4cJJ^Q>tDwgf>DM_F@IeI`KwWc+Bl)K)(I>KhB>zBL=uKxh16F>zT zxnM2OABOLoWxC4Hef-QAD!cl#Jy2#S7O)f`N;zF+E!bdvWA=dufrLh`Qzt(WuGVc1 zKH?tR3h(uZxD%CR9nHEv^!1btQLgXz(kVk@`}4~e_`uK$HaAqh!qRe5VGaIlGA5b>Qh_n#9y=2pIN~kH=6Z}tHtXU zu6;k`UeX^(^<93C%rH9>*ZCgEzYp?UBO_HE)odYWIT}SM@WrybVVH}mg#L?9Ify%D zFXuPO)%A^#<t{}|s@_&!r!h5}I)=}ga1DlfpD+v7`I`%h|pwTZuqM(74NYO6d}mDA;9-+VdE-s(T=$XS=sn3|n~R zM6+K*(1CBw_>_x)8R&5ov;$5EO!P2vlwW$?IuR@#0qF|9*0sM#Zc72T_)SpWlK$Vl zC0}E!_2&Y@;L9mxpuq9{jE_@-E(P3scrZ&1ECVYG2c4#WsdoORh=f|j=<+O3nTuU` zPMWb^Tp3wtySfgaaVl`=q)`o*_WRadWvaGyi!!3$RQxg1-l3NH%)GChTedaL)j^x7 zHF`f0Yu)HuTGvV3!mGA&@zL3qFk=h;0fp%{%3@uI%?q`|^S-gG2{PdM* z<(laIA2=$E2E&JsQd_L!)P3}bkgB)La#FiQA+1$yT%GS&okxMsU%X9N*ndClqm9wU zZkanm!0VtPiB1Fg24z#D)QMtH-+qi1io!Pk03bvKAJd6ZcV(B}Uv(Qe=5AN&>j97! zZ|NA5tWCNh64_;O92TvIh7P6%^}Ca#a&dZrw^(dBdY%{0?AVv_9MzIyP`|5pWcsIs5MkuWL8& zGiq!297>QhYVZ7pi%E{rDP2mwCIB(a#9xaKnp?w2BB zIm7!j{9E|{046{Sa{c^Eu8Mlaud%FM{S?qE?SxU$?Fdk_Q^p9#OGElh8*T0)-$@>m zL)RzY%yyj-`{y$qKKjZ5XlZ$##NsDEnR@YvvM^}Ab6LZ2>g>hjvarS$cOxVH2qT90 zN}-Hv$@PwiS(Cf(>MZJHA77ZRH41s;9WQ>eneV_6$zKci5W=9okMWqxe=C?R;m@A( z)E|;wyT_S-y>)-GIfrq6j9^llg~35$R!Y?QA)2@M8Dv_VJU-THKRmaA=K z`ZAvNUEDCr_Ac`%xN3Lk#b9|Z9wLsk^*$#(di3iVb*cD#!7J?kF#yD$shOE#jU#L# zMx6dD|LgR3mNsc+3h+M+tOS5qHkcX|FscC=QULeSM4J=tPWlaEs^*wy9b zm)hI>M6AnatB%kI>UvGT4SKvxN9%}HO$YMDkaxQC32%b6Y=30}_1N?!mcyj==dm!E zw_ejH4NqA`eE|zW&aj(sVC%GNS!-Z23-sDPpkR*jWm~uVHZXG zytnoxqi{n*u>Hrz7)!9*Sh#%HXm!k5K5TX6xUo{~;34V~-|9M#_ZaLOd%xJYSKI#0 z9sdBo_GX>UX+%Bl8oM zqvaKJtuYNHR|dW23Ts2=5S@U*(hVM!)BKA8&Fe31iGq9S?J+fF z>ScGYf1L6zg_4kg2&+AA9}WhjE$F>1pw{{U~8Y8C~tT-D5~!>SGb zv1Yc?X5BF}R@zNbmPLD;hSj+GzR@)*Z}Bh&p-11upg02l_KL5t`}m5Ffb@$s()5}S zrXsG(+B)(*rNiABzAft=*QtM4*Uoy!=CAerimy9&{{UiF)T`!KyzS?!GZt`)>m9$$ zR=+ax?_?TYaHjc7=#=>rIeICMm0F&^NXr;hna=D51qGGo6s6_;Z5XFQ&ih0Z*Th8) z9Cz9QCJR3Imk&KXU}XOQNanYO{UXzOsS2a4`^&S@$$K%pEp5jU21QL@crI(pJR}50wVuZjgK9e<~ISrmj+Qb&K*Q}v~k#FCu zMLiY$BTYZstVUKx_DVwcm8z7DA?OeYp|CiBRrY%EeNE%c&cxn5hr z>~r20<*S%#-HIR*sVgKkZ0if3;uGr@{G|lWPSWgOcquHh#C@9O>aityjq%RGVml^qB~ekA=5WU~gN+Al}6Wq)`guF5U->GXqrV0|U!)IO4+ zeSN6RHy?ximqRoR{TfkW%*k6#ReIuS=^at#i?i)1JMg$?)I%N`drE^F zkV_ST``$J|g|!K6Iq3fYu)=SX-cS>Ay6!)V%7H1->f&s^!$Wh36*&y{oc(KDb1l6?=1`$^`JBybR=+S_aA%?t8G(`{vtRF| zwA$H?9wk3mR@MNRhMNdOY8?#x%4{bij;Bvan=+5@`wSBGiL^4U@|li1eP$I?hCBZN zJ!We>2mxqtI3tQK!3RH2IZ#T6X3I+7>=$ zcZ5tFMRxF3kx=S3>%?mZgWZmk3+WS2Ls@3KCArKo+W!D!E=xlL({^8biXu_aKM)?^ zA6Wdx*o%(D425pXrMexR!xKj^D25AJ``EUlu`egcig^P8ChI5ORm(+?!o)o zSQm>W$olIAFMsI~A6NMd!Qk(-Wo%Y<+>S2?QVML<^qLxHXttiGqZN9SZ&Dovv}d$a zaJBi4nsi^>(P;SkeatNazaEmC*z|OTVadDFXr(4PxR~}f=@0vRpJW*Tl7GsR_r^n z#`Jw+tA{-fA}Cc@y&^G84TWfP4JHjqkrv;V5Gb~}Ueh&Aeu#j;zg72X-OK8DnKLjJvn;xyRJdP_VNhr1NRuigVpRe3`)@O;O zHXZOvG0>JSaPpo&BW_jumnOL}_ifH$2MtakfWGkn{Kd!aDxCU=SGYH|?LsSH8Pt0AV9k2T;cvP1y_k+KbSZAbic??tz<|Zb797>99>cj=JPi9n$rk59P zs>r~Gg^|rUex*xUncw`1(bfCBnEJ6R^3Q~+$N2>kRWYD^&<^)B5ra^ zXwHJOb2dX)ZjfGu-3*X9oOSIJlOy}<-de8Bxc>kk8&i{Ui>n0kPl-WhnmVpNAhTz7 z{{ZYDaeWRaB~5RZUE65iqy&=zq3;R6(63ocU}_tsE8V%VH00H%NF4(PU$~-^BaXdc z=4oE+wnzwCb{c(u$_Ta0*@tUXlDi@ykA-F02&f?k@MMdVex zlKNfBV`&XlkgPfiWzel$La5RG#gnc_Yx#`r8ujKC)#FEfp<5WNJxQuFzM@wLM9*ky zjxSE}Rj)6Ib;Ed?z}fFG7(;$?;P=t}lGF=*P9aw)Hr(P|2F?x6A|o)Lk_As&qol@p zzE@^6#vOVvR4veVHiLyRH{64QAnN0!1ddwt>)K_E`i=m06@(g3!*5G+!+ ze(e+$fctRL7(bRe-IlCnaC6{N(OmugVF^jS1(y` z>}m=HyUPV>fflQ~EL&fKA)O2o>{hI^FO=Jrq$X4OoGGOIK9T5ww7tY^_PP3iU`ry zv@EsMmv(vjJjxSzIx|ys_=JT6N#TQmZEW0dLu1vfDEUw8Q|ckS&Q2Ic@0$|tFlGOrTznw19dzoWom zJjK-^4}K=XaPu-8Ok2#MHKpHJGPiJ{yt);sQBX#UQ! z$7$^s+14u`H|{(}==GTsZ-iO4l#_f#?_9;=u=d^>p^+?>WTd0E(5OsqddJHS{a^^( zPjVq%u4D;&`EM?qxOIu+=rO?M%WcOcLa5`kn;OHe#cVb(Z zFh_xXVx--+QijA^^NX~=DjE~!6GX&o7iTcwH)G&F#Z5riKK`QHb7$VM72SWhWpev} zXXY#S2N#R}q8{hD7tzB$i==-?SwwrK9rXROr_()r({L4S%g6_tN6umQ{V;*}aJUXUvA65DhzcAA9jdP=Cy zhs=2+tJ)|k=wgvtsh!)^1OvCSH~@{6cfm7l3==DPW#_cjBHI=Pq{f{lT}A|@u!Y^A zS~M_PcSGb&QdO)Om3=Aq{fJ+k!z~F4G}cwqvYFhTTewX=aI9 z%+hA8IF}2g%eTRJitOZy7`~CEA?$;YikB?HnQolThM7yVmL(?!qF64!F^1Xc?+_!V z{i3D%KYbw`NFJm_UC4E&rjQuaOZg!OIHjV=HC&BQv3}>_9=hZP4Z_G|hOqg3>>1SPr|&pf6LaDg%|z z!X1>>S1fk!;ma!-V{Wp=#)gu%tv2lzpAt>^}48)cXm;#+f5yu*s=7NJ_RaF=Y==P*Md#$mAVxnZ#SKiKGPukPcd^7}z_b*hv# zz3=xDqpJaL*!YhmX`DvFmvwd06vfnG(kBr+fz~B6BbwEJ3iU2`?C!W zA9!wa?3)G~^_9(WUegDtkyUtMWjUM0`eTGm?h1*h!C9r}v>XYVi&LeO0ld2V#If8@qOGeId zw0mo=k0i}*nlM~^0k3{0E0cb`BF1+(>pSE1 zD|YMzD@mOQcQfiswKkk}e*UJj&dc42lU1Vb^8rcNd5Y-H#YYhTwcZ#8i<%S{6$8AiT${Xwm z)uQux<~OTqex;s5!M`ik;--#0kb!6Gd6(6^{l3ZikkDFbpE#`EA?eaTPu?GxuUTcB zd_`yF9lUD4a=1+^z9&H?ewb)GF!M;XOcHM{7X}%DA2Lw4C2;GbFc7Mn2--Hpaz6~Q z+mYTSzDG_XgQ=<4c)$%bUW{3J9sc@3DrJYfxN)Z)WudFqD)$XphQ__-9%aVo+`}Gf zZO7cp2x~K3e>IFI&Q7M}v@$6|W!#RZo&Nx^sUEza(q|k5HzsuTxt0`U)o}3{)2m+m z%~GM2?FVJ4&v+(ktgq8MLCLP{Tv{4T^;mS}nB%>E@`V^(I!%TjxGJeHJkFDK(qp&w zI~jqF-`Qn-s^6E|AXh+Sa31jF@^*|y&@l+bUVB7E%gZZGR|5bczC5Fd=w8K^%exP7tQ{$@)ki8_ zpG%6DtLYYcU!=TUedEd3-aI;cSbpcE)7vyWy<`1;kre%DKQ((y1+!nj>~qFz_ffai z84eg|bhs}1KGKBdlM|^F8IH2_XQD6MAJZOY&Sy%wBdT*RUgnULO(N9UAb}s*u(TKw#5G3cV*M-`q5oFDFQ?Jxr;M($#VI z(quRsx_Ws@Q Jku^A<|Jh!Qc}M^N literal 0 HcmV?d00001 diff --git a/dalim-app/public/placeholders/placeholder-4.jpg b/dalim-app/public/placeholders/placeholder-4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd1f3901caf96f6ba9b7d18d1453ecb908dda859 GIT binary patch literal 76881 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 SZ1Vz6r^vG!{{UotKmXZIqX#Mg literal 0 HcmV?d00001 diff --git a/dalim-app/public/placeholders/placeholder-5.jpg b/dalim-app/public/placeholders/placeholder-5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fc9d228adea6af45bce3a4e26aada38820ff4c28 GIT binary patch literal 25713 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 literal 0 HcmV?d00001 diff --git a/dalim-app/public/placeholders/placeholder-7.jpg b/dalim-app/public/placeholders/placeholder-7.jpg new file mode 100644 index 0000000000000000000000000000000000000000..288a9153ce8cc577ae3cad3536309c5c8141ba40 GIT binary patch literal 12448 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