diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..e7761e9 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,107 @@ +name: .NET CI + +on: + push: + branches: [ "main", "master" ] + paths-ignore: + - '**.md' + - 'docs/**' + - '.gitignore' + - 'LICENSE' + pull_request: + branches: [ "main", "master" ] + paths-ignore: + - '**.md' + - 'docs/**' + - '.gitignore' + - 'LICENSE' + +env: + DOTNET_VERSION: '9.0.x' + +jobs: + build-and-test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Cache NuGet packages + uses: actions/cache@v4 + with: + path: ~/.nuget/packages + key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }} + restore-keys: | + ${{ runner.os }}-nuget- + + - name: Restore dependencies + run: dotnet restore + + - name: Build (Debug) + run: dotnet build --no-restore --configuration Debug + + - name: Build (Release) + run: dotnet build --no-restore --configuration Release + + - name: Verify API Credentials + env: + STREAM_API_KEY: ${{ secrets.STREAM_API_KEY }} + STREAM_API_SECRET: ${{ secrets.STREAM_API_SECRET }} + run: | + echo "🔍 Checking API credentials..." + + if [ -z "$STREAM_API_KEY" ]; then + echo "❌ STREAM_API_KEY is missing or empty" + echo " Please check that the secret 'STREAM_API_KEY' is set in repository settings" + else + echo "✅ STREAM_API_KEY is available (${#STREAM_API_KEY} characters)" + fi + + if [ -z "$STREAM_API_SECRET" ]; then + echo "❌ STREAM_API_SECRET is missing or empty" + echo " Please check that the secret 'STREAM_API_SECRET' is set in repository settings" + else + echo "✅ STREAM_API_SECRET is available (${#STREAM_API_SECRET} characters)" + fi + + if [ -n "$STREAM_API_KEY" ] && [ -n "$STREAM_API_SECRET" ]; then + echo "✅ API credentials are available from repository secrets" + echo "API Key length: ${#STREAM_API_KEY} characters" + echo "API Secret length: ${#STREAM_API_SECRET} characters" + else + echo "❌ API credentials are missing" + exit 1 + fi + + - name: Run Tests + env: + STREAM_API_KEY: ${{ secrets.STREAM_API_KEY }} + STREAM_API_SECRET: ${{ secrets.STREAM_API_SECRET }} + CONFIGURATION: Debug + run: | + echo "Running all tests with API credentials from repository secrets" + make test + + - name: Check for warnings + run: | + echo "Checking for build warnings..." + dotnet build --no-restore --configuration Release --verbosity normal 2>&1 | tee build.log + if grep -q "warning" build.log; then + echo "❌ Build warnings found:" + grep "warning" build.log + exit 1 + else + echo "✅ No build warnings found" + fi + + - name: Test NuGet package creation + run: | + echo "Testing NuGet package creation..." + dotnet pack src/stream-feed-net.csproj --configuration Release --no-build --output ./test-packages + ls -la ./test-packages/ + echo "✅ NuGet package created successfully" \ No newline at end of file diff --git a/.github/workflows/create-release-pr.yml b/.github/workflows/create-release-pr.yml new file mode 100644 index 0000000..3251a8f --- /dev/null +++ b/.github/workflows/create-release-pr.yml @@ -0,0 +1,223 @@ +name: Create Release PR + +on: + workflow_dispatch: + inputs: + version_bump: + description: 'Version bump type' + required: true + default: 'patch' + type: choice + options: + - patch + - minor + - major + prerelease: + description: 'Is this a prerelease?' + required: false + default: false + type: boolean + release_notes: + description: 'Release notes (optional)' + required: false + type: string + +env: + DOTNET_VERSION: '9.0.x' + +jobs: + create-release-pr: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Get current version + id: current_version + run: | + CURRENT_VERSION=$(grep -oP '\K[^<]+' src/stream-feed-net.csproj) + echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT + echo "Current version: $CURRENT_VERSION" + + - name: Calculate new version + id: new_version + run: | + CURRENT_VERSION="${{ steps.current_version.outputs.current_version }}" + VERSION_BUMP="${{ github.event.inputs.version_bump }}" + IS_PRERELEASE="${{ github.event.inputs.prerelease }}" + + # Parse current version + IFS='.' read -ra VERSION_PARTS <<< "$CURRENT_VERSION" + MAJOR=${VERSION_PARTS[0]} + MINOR=${VERSION_PARTS[1]} + PATCH=${VERSION_PARTS[2]%%-*} # Remove any prerelease suffix + + # Bump version based on type + case $VERSION_BUMP in + major) + MAJOR=$((MAJOR + 1)) + MINOR=0 + PATCH=0 + ;; + minor) + MINOR=$((MINOR + 1)) + PATCH=0 + ;; + patch) + PATCH=$((PATCH + 1)) + ;; + esac + + NEW_VERSION="$MAJOR.$MINOR.$PATCH" + + # Add prerelease suffix if needed + if [ "$IS_PRERELEASE" = "true" ]; then + TIMESTAMP=$(date +%Y%m%d%H%M%S) + NEW_VERSION="$NEW_VERSION-alpha.$TIMESTAMP" + fi + + echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT + echo "New version: $NEW_VERSION" + + - name: Create release branch + run: | + NEW_VERSION="${{ steps.new_version.outputs.new_version }}" + BRANCH_NAME="release/v$NEW_VERSION" + + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git checkout -b "$BRANCH_NAME" + + echo "branch_name=$BRANCH_NAME" >> $GITHUB_ENV + + - name: Update version in project file + run: | + NEW_VERSION="${{ steps.new_version.outputs.new_version }}" + sed -i "s/.*<\/Version>/$NEW_VERSION<\/Version>/" src/stream-feed-net.csproj + echo "Updated version to $NEW_VERSION" + + - name: Run tests to ensure everything works + env: + STREAM_API_KEY: ${{ vars.STREAM_API_KEY }} + STREAM_API_SECRET: ${{ secrets.STREAM_API_SECRET }} + CONFIGURATION: Release + run: | + dotnet restore + dotnet build --no-restore --configuration Release + make test + + - name: Generate changelog + id: changelog + run: | + NEW_VERSION="${{ steps.new_version.outputs.new_version }}" + + # Get the latest tag + PREVIOUS_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") + + if [ -n "$PREVIOUS_TAG" ]; then + echo "## Changes since $PREVIOUS_TAG" > CHANGELOG_TEMP.md + echo "" >> CHANGELOG_TEMP.md + + # Get commits since last tag + git log $PREVIOUS_TAG..HEAD --pretty=format:"- %s (%h)" --no-merges >> CHANGELOG_TEMP.md + else + echo "## Initial Release" > CHANGELOG_TEMP.md + echo "" >> CHANGELOG_TEMP.md + echo "- Initial release of GetStream Feed .NET SDK" >> CHANGELOG_TEMP.md + fi + + echo "" >> CHANGELOG_TEMP.md + + # Add custom release notes if provided + if [ -n "${{ github.event.inputs.release_notes }}" ]; then + echo "## Additional Notes" >> CHANGELOG_TEMP.md + echo "" >> CHANGELOG_TEMP.md + echo "${{ github.event.inputs.release_notes }}" >> CHANGELOG_TEMP.md + fi + + # Read the changelog content + CHANGELOG_CONTENT=$(cat CHANGELOG_TEMP.md) + echo "changelog<> $GITHUB_OUTPUT + echo "$CHANGELOG_CONTENT" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + + - name: Commit changes + run: | + NEW_VERSION="${{ steps.new_version.outputs.new_version }}" + + git add src/stream-feed-net.csproj + git commit -m "chore: prepare release v$NEW_VERSION" + git push origin "${{ env.branch_name }}" + + - name: Create Pull Request + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + NEW_VERSION="${{ steps.new_version.outputs.new_version }}" + VERSION_BUMP="${{ github.event.inputs.version_bump }}" + IS_PRERELEASE="${{ github.event.inputs.prerelease }}" + + # Determine PR title and labels + if [ "$IS_PRERELEASE" = "true" ]; then + PR_TITLE="🚀 Release v$NEW_VERSION (Prerelease)" + LABELS="release,prerelease" + else + PR_TITLE="🚀 Release v$NEW_VERSION" + LABELS="release" + fi + + # Add version bump label + case $VERSION_BUMP in + major) + LABELS="$LABELS,major" + ;; + minor) + LABELS="$LABELS,minor" + ;; + patch) + LABELS="$LABELS,patch" + ;; + esac + + # Create PR body + PR_BODY="## Release v$NEW_VERSION + +### Version Bump: $VERSION_BUMP +### Prerelease: $IS_PRERELEASE + +${{ steps.changelog.outputs.changelog }} + +--- + +### Checklist +- [x] Version updated in project file +- [x] Tests passing +- [ ] Release notes reviewed +- [ ] Ready to merge and release + +### Instructions +1. Review the changes and release notes +2. Merge this PR to trigger the automated release process +3. The release will be automatically published to NuGet and GitHub Releases + +**Note:** Merging this PR will automatically: +- Create a GitHub release with tag v$NEW_VERSION +- Publish the NuGet package to nuget.org +- Generate release notes from recent commits" + + gh pr create \ + --title "$PR_TITLE" \ + --body "$PR_BODY" \ + --base master \ + --head "${{ env.branch_name }}" \ + --label "$LABELS" + + echo "✅ Created release PR for v$NEW_VERSION" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..84449e7 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,232 @@ +name: Release + +on: + push: + branches: [ "main", "master" ] + paths: + - 'src/**' + - 'tests/**' + - '.github/workflows/**' + workflow_dispatch: + inputs: + version_bump: + description: 'Version bump type' + required: true + default: 'patch' + type: choice + options: + - patch + - minor + - major + prerelease: + description: 'Is this a prerelease?' + required: false + default: false + type: boolean + +env: + DOTNET_VERSION: '9.0.x' + +jobs: + # Determine if we should create a release + check-release: + runs-on: ubuntu-latest + outputs: + should_release: ${{ steps.check.outputs.should_release }} + version_bump: ${{ steps.check.outputs.version_bump }} + is_prerelease: ${{ steps.check.outputs.is_prerelease }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Check for release triggers + id: check + run: | + # Check commit message for version bump keywords + COMMIT_MSG=$(git log -1 --pretty=%B) + echo "Commit message: $COMMIT_MSG" + + # Manual workflow dispatch + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + echo "should_release=true" >> $GITHUB_OUTPUT + echo "version_bump=${{ github.event.inputs.version_bump }}" >> $GITHUB_OUTPUT + echo "is_prerelease=${{ github.event.inputs.prerelease }}" >> $GITHUB_OUTPUT + exit 0 + fi + + # Check commit message for version bump keywords + if echo "$COMMIT_MSG" | grep -iE "\[major\]|\[breaking\]|BREAKING CHANGE"; then + echo "should_release=true" >> $GITHUB_OUTPUT + echo "version_bump=major" >> $GITHUB_OUTPUT + echo "is_prerelease=false" >> $GITHUB_OUTPUT + elif echo "$COMMIT_MSG" | grep -iE "\[minor\]|\[feature\]|feat:"; then + echo "should_release=true" >> $GITHUB_OUTPUT + echo "version_bump=minor" >> $GITHUB_OUTPUT + echo "is_prerelease=false" >> $GITHUB_OUTPUT + elif echo "$COMMIT_MSG" | grep -iE "\[patch\]|\[fix\]|fix:"; then + echo "should_release=true" >> $GITHUB_OUTPUT + echo "version_bump=patch" >> $GITHUB_OUTPUT + echo "is_prerelease=false" >> $GITHUB_OUTPUT + elif echo "$COMMIT_MSG" | grep -iE "\[prerelease\]|\[alpha\]|\[beta\]|\[rc\]"; then + echo "should_release=true" >> $GITHUB_OUTPUT + echo "version_bump=patch" >> $GITHUB_OUTPUT + echo "is_prerelease=true" >> $GITHUB_OUTPUT + else + echo "should_release=false" >> $GITHUB_OUTPUT + fi + + # Build, test, and release + release: + needs: check-release + if: needs.check-release.outputs.should_release == 'true' + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Restore dependencies + run: dotnet restore + + - name: Build + run: dotnet build --no-restore --configuration Release + + - name: Test + env: + STREAM_API_KEY: ${{ vars.STREAM_API_KEY }} + STREAM_API_SECRET: ${{ secrets.STREAM_API_SECRET }} + CONFIGURATION: Release + run: make test + + - name: Get current version + id: current_version + run: | + CURRENT_VERSION=$(grep -oP '\K[^<]+' src/stream-feed-net.csproj) + echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT + echo "Current version: $CURRENT_VERSION" + + - name: Calculate new version + id: new_version + run: | + CURRENT_VERSION="${{ steps.current_version.outputs.current_version }}" + VERSION_BUMP="${{ needs.check-release.outputs.version_bump }}" + IS_PRERELEASE="${{ needs.check-release.outputs.is_prerelease }}" + + # Parse current version + IFS='.' read -ra VERSION_PARTS <<< "$CURRENT_VERSION" + MAJOR=${VERSION_PARTS[0]} + MINOR=${VERSION_PARTS[1]} + PATCH=${VERSION_PARTS[2]%%-*} # Remove any prerelease suffix + + # Bump version based on type + case $VERSION_BUMP in + major) + MAJOR=$((MAJOR + 1)) + MINOR=0 + PATCH=0 + ;; + minor) + MINOR=$((MINOR + 1)) + PATCH=0 + ;; + patch) + PATCH=$((PATCH + 1)) + ;; + esac + + NEW_VERSION="$MAJOR.$MINOR.$PATCH" + + # Add prerelease suffix if needed + if [ "$IS_PRERELEASE" = "true" ]; then + TIMESTAMP=$(date +%Y%m%d%H%M%S) + NEW_VERSION="$NEW_VERSION-alpha.$TIMESTAMP" + fi + + echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT + echo "New version: $NEW_VERSION" + + - name: Update version in project file + run: | + NEW_VERSION="${{ steps.new_version.outputs.new_version }}" + sed -i "s/.*<\/Version>/$NEW_VERSION<\/Version>/" src/stream-feed-net.csproj + echo "Updated version to $NEW_VERSION" + + - name: Create NuGet package + run: | + dotnet pack src/stream-feed-net.csproj --configuration Release --no-build --output ./packages + ls -la ./packages/ + + - name: Publish to NuGet + env: + NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} + run: | + if [ -z "$NUGET_API_KEY" ]; then + echo "⚠️ NUGET_API_KEY secret not set. Skipping NuGet publish." + echo "To enable NuGet publishing, add your NuGet API key as a repository secret named 'NUGET_API_KEY'" + else + echo "🚀 Publishing to NuGet.org using v3 API..." + + # Clear all existing sources to prevent fallback + dotnet nuget remove source nuget.org || true + dotnet nuget list source + + # Add nuget.org v3 source explicitly + dotnet nuget add source https://api.nuget.org/v3/index.json --name nuget.org + dotnet nuget list source + + # Push with explicit v3 source URL (not just name) + echo "Pushing package with explicit v3 endpoint..." + dotnet nuget push ./packages/*.nupkg \ + --api-key "$NUGET_API_KEY" \ + --source https://api.nuget.org/v3/index.json \ + --skip-duplicate \ + --no-symbols \ + --timeout 300 + echo "✅ Published to NuGet as getstream-net package" + fi + + - name: Commit version bump + run: | + NEW_VERSION="${{ steps.new_version.outputs.new_version }}" + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add src/stream-feed-net.csproj + git commit -m "chore: bump version to $NEW_VERSION [skip ci]" || exit 0 + git push + + - name: Create GitHub Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + NEW_VERSION="${{ steps.new_version.outputs.new_version }}" + IS_PRERELEASE="${{ needs.check-release.outputs.is_prerelease }}" + + # Generate release notes + PREVIOUS_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") + if [ -n "$PREVIOUS_TAG" ]; then + RELEASE_NOTES=$(git log $PREVIOUS_TAG..HEAD --pretty=format:"- %s" --no-merges) + else + RELEASE_NOTES=$(git log --pretty=format:"- %s" --no-merges -10) + fi + + # Create release + PRERELEASE_FLAG="" + if [ "$IS_PRERELEASE" = "true" ]; then + PRERELEASE_FLAG="--prerelease" + fi + + gh release create "v$NEW_VERSION" \ + --title "Release v$NEW_VERSION" \ + --notes "$RELEASE_NOTES" \ + $PRERELEASE_FLAG \ + ./packages/*.nupkg + + echo "✅ Created GitHub release v$NEW_VERSION" diff --git a/Makefile b/Makefile index f4e9af1..fad2e2c 100644 --- a/Makefile +++ b/Makefile @@ -5,14 +5,16 @@ TEST_PROJECT = tests/stream-feed-net-test.csproj SAMPLE_PROJECT = samples/ConsoleApp/ConsoleApp.csproj CONFIGURATION ?= Debug +# Setup development environment +setup-env: ## Copy .env.example to .env (you'll need to fill in your credentials) + cp .env.example .env + @echo "Don't forget to update .env with your actual GetStream credentials!" + # Required environment variables check check-env: - @if [ -z "$(STREAM_API_KEY)" ]; then \ - echo "Error: STREAM_API_KEY is not set"; \ - exit 1; \ - fi - @if [ -z "$(STREAM_API_SECRET)" ]; then \ - echo "Error: STREAM_API_SECRET is not set"; \ + @if [ ! -f .env ] && [ -z "$(STREAM_API_KEY)" ]; then \ + echo "Error: Neither .env file nor STREAM_API_KEY environment variable is set"; \ + echo "Run 'make setup-env' to create .env file or set environment variables"; \ exit 1; \ fi @@ -43,7 +45,7 @@ test-endpoints: check-env build # Run integration tests only test-integration: check-env build - $(DOTNET) test $(TEST_PROJECT) --configuration $(CONFIGURATION) --filter "FullyQualifiedName~FeedClientTests" + $(DOTNET) test $(TEST_PROJECT) --configuration $(CONFIGURATION) --filter "FullyQualifiedName~FeedIntegrationTests" # Run sample app sample: check-env build @@ -63,6 +65,7 @@ watch-sample: check-env # Help help: @echo "Available targets:" + @echo " setup-env - Copy .env.example to .env (you'll need to fill in your credentials)" @echo " clean - Clean build artifacts" @echo " restore - Restore NuGet packages" @echo " build - Build solution" @@ -74,9 +77,11 @@ help: @echo " watch-test - Watch tests (rerun on file changes)" @echo " watch-sample - Watch sample app (rerun on file changes)" @echo "" - @echo "Environment variables:" - @echo " STREAM_API_KEY - Stream API key (required)" - @echo " STREAM_API_SECRET - Stream API secret (required)" + @echo "Configuration options:" + @echo " 1. Create .env file: make setup-env, then edit .env with your credentials" + @echo " 2. Set environment variables: STREAM_API_KEY and STREAM_API_SECRET" + @echo "" + @echo "Other environment variables:" @echo " CONFIGURATION - Build configuration (default: Debug)" -.PHONY: check-env clean restore build test test-one test-endpoints test-integration sample watch-test watch-sample help \ No newline at end of file +.PHONY: setup-env check-env clean restore build test test-one test-endpoints test-integration sample watch-test watch-sample help \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..9693254 --- /dev/null +++ b/README.md @@ -0,0 +1,74 @@ +# GetStream .NET SDK + +This is the official .NET SDK for GetStream's Feeds API. + +For detailed setup instructions, see [Example](samples/ConsoleApp/Program.cs). + +## Environment Setup + +### For Development +```bash +export STREAM_API_KEY=your-api-key-here +export STREAM_API_SECRET=your-api-secret-here +``` + +### For CI/CD +This repository uses the API key `zta48ppyvwet` for continuous integration testing. + +## Makefile Commands + +The project includes a Makefile for common development tasks: + +```bash +# Run the sample application +make sample + +# Run tests +make test + +# Additional commands available in Makefile +make build # Build the project +make clean # Clean build artifacts +``` + +## Structure + +The SDK is organized into several key components: + +- `src/` - Core SDK implementation + - `Client.cs` - Main HTTP client with authentication and request handling + - `CommonClient.cs` - Shared client functionality and utilities + - `CustomCode.cs` - Custom implementations and extensions + - `Feed.cs` - Feed entity and core functionality + - Several OpenAPI-generated files: + - `FeedsV3Client.cs` - Generated client with all feeds API methods + - `models.cs` - Generated response models + - `requests.cs` - Generated request models +- `tests/` - Comprehensive test suite + - `FeedClientTests.cs` - Unit tests for feed client + - `FeedIntegrationTests.cs` - Integration tests + - `FeedTests.cs` - General feed functionality tests +- `samples/` - Example applications and usage demos + - `ConsoleApp/` - Console application demonstrating basic usage + +## Development + +The SDK development workflow: + +1. **Core Components** + - Manual implementation of core client functionality + - Custom extensions and utilities for .NET-specific features + - Comprehensive test coverage for all components + - OpenAPI-generated code for complete API coverage + +2. **Testing** + - Unit tests for individual components + - Integration tests for end-to-end functionality + - Sample applications for usage demonstration + +3. **Build and Run** + - Use Makefile commands for common tasks + - Regular testing and validation + - Continuous integration checks + +The SDK follows .NET best practices and conventions while providing a clean, maintainable codebase for GetStream's Feeds API integration. diff --git a/generate.sh b/generate.sh index 91af8cc..cbc22ba 100755 --- a/generate.sh +++ b/generate.sh @@ -12,9 +12,9 @@ fi set -ex # cd in API repo, generate new spec and then generate code from it -( cd $SOURCE_PATH ; make openapi ; go run ./cmd/chat-manager openapi generate-client --language dotnet --spec ./releases/v2/feeds-serverside-api.yaml --output $DST_PATH ) +( cd $SOURCE_PATH ; make openapi; go run ./cmd/chat-manager openapi generate-client --language dotnet --spec ./releases/v2/feeds-serverside-api.yaml --output $DST_PATH ) -# Comment out problematic lines in requests.cs +# Comment out problematic lines from openapi generation sed -i '' 's/\[JsonPropertyName("delete_activity")\]/\/\/ [JsonPropertyName("delete_activity")]/' $DST_PATH/src/requests.cs sed -i '' 's/public DeleteActivityRequest? DeleteActivity { get; set; }/\/\/ public DeleteActivityRequest? DeleteActivity { get; set; }/' $DST_PATH/src/requests.cs sed -i '' 's/\[JsonPropertyName("delete_message")\]/\/\/ [JsonPropertyName("delete_message")]/' $DST_PATH/src/requests.cs @@ -22,4 +22,10 @@ sed -i '' 's/public DeleteMessageRequest? DeleteMessage { get; set; }/\/\/ publi sed -i '' 's/\[JsonPropertyName("delete_reaction")\]/\/\/ [JsonPropertyName("delete_reaction")]/' $DST_PATH/src/requests.cs sed -i '' 's/public DeleteReactionRequest? DeleteReaction { get; set; }/\/\/ public DeleteReactionRequest? DeleteReaction { get; set; }/' $DST_PATH/src/requests.cs +sed -i '' -e '/\[JsonPropertyName("Role")\]/,+1d' src/models.cs + +# Rename Upload methods to match new naming convention +sed -i '' 's/UploadFile/FileUpload/g' $DST_PATH/src/feed.cs $DST_PATH/tests/FeedIntegrationTests.cs $DST_PATH/src/CommonClient.cs +sed -i '' 's/UploadImage/ImageUpload/g' $DST_PATH/src/feed.cs $DST_PATH/tests/FeedIntegrationTests.cs $DST_PATH/src/CommonClient.cs + echo "Generated .NET SDK for feeds in $DST_PATH" diff --git a/samples/ConsoleApp/Program.cs b/samples/ConsoleApp/Program.cs index 23e65d2..cf22b15 100644 --- a/samples/ConsoleApp/Program.cs +++ b/samples/ConsoleApp/Program.cs @@ -13,47 +13,59 @@ static async Task Main(string[] args) { Console.WriteLine("=== GetStream .NET SDK Complete Example ===\n"); - // Read API credentials from environment variables - var apiKey = Environment.GetEnvironmentVariable("STREAM_API_KEY"); - var apiSecret = Environment.GetEnvironmentVariable("STREAM_API_SECRET"); - - // Validate that required environment variables are set - if (string.IsNullOrEmpty(apiKey)) - { - throw new Exception("STREAM_API_KEY environment variable is required"); - } - if (string.IsNullOrEmpty(apiSecret)) - { - throw new Exception("STREAM_API_SECRET environment variable is required"); - } - - // Initialize the client - var client = new Client(apiKey, apiSecret); - var feeds = new FeedClient(client); + Console.WriteLine("🔧 Initializing clients..."); + // Clients automatically load credentials from .env file or environment variables + var feedsClient = new FeedsV3Client(); + var client = new StreamClient(); + + Console.WriteLine("✅ Successfully initialized clients with automatic credential loading!"); + var feed = feedsClient.Feed("user", "example-feed-2"); try { + // 0. Create a user + Console.WriteLine("0. Creating user..."); + var userRes = await client.UpdateUsersAsync( + new UpdateUsersRequest + { + Users = new Dictionary + { + { + "okabe", // Changed from "sara" to match the user ID + new UserRequest + { + ID = "okabe", + Name = "Okabe", + Custom = new Dictionary + { + { "occupation", "Scientist" } + } + } + } + } + } + ); + + // 1. Create a feed Console.WriteLine("1. Creating feed..."); - var createResponse = await feeds.GetOrCreateFeedAsync( - FeedGroupID: "user", - FeedID: "example-feed-1", + var feedRes = await feed.GetOrCreateFeedAsync( request: new GetOrCreateFeedRequest { - UserID = "sara" + UserID = userRes.Data?.Users.FirstOrDefault().Value.ID } ); - Console.WriteLine($"✅ Feed created successfully: {createResponse.Data}\n"); + Console.WriteLine($"✅ Feed created successfully: {feedRes.Data.Feed.Feed}\n"); // 2. Add an activity to the feed Console.WriteLine("2. Adding activity to feed..."); - var addActivityResponse = await feeds.AddActivityAsync( + var addActivityResponse = await feedsClient.AddActivityAsync( new AddActivityRequest { Type = "post", - Fids = new List { "user:example-feed-1" }, + Feeds = new List { feedRes.Data.Feed.Feed }, Text = "Hello from .NET SDK! This is my first activity.", - UserID = "sara" + UserID = "okabe" } ); Console.WriteLine("✅ Activity added successfully!"); @@ -63,13 +75,13 @@ static async Task Main(string[] args) // 3. Add a comment to the activity Console.WriteLine("3. Adding comment to activity..."); - var addCommentResponse = await feeds.AddActivityAsync( + var addCommentResponse = await feedsClient.AddActivityAsync( new AddActivityRequest { Type = "comment", - Fids = new List { "user:example-feed-1" }, + Feeds = new List { feedRes.Data.Feed.Feed }, Text = "This is a great post!", - UserID = "sara" + UserID = "okabe" } ); Console.WriteLine("✅ Comment added successfully!"); @@ -78,7 +90,7 @@ static async Task Main(string[] args) // 4. Fetch feed activities Console.WriteLine("4. Fetching feed activities..."); - var queryResponse = await feeds.QueryActivitiesAsync( + var queryResponse = await feedsClient.QueryActivitiesAsync( new QueryActivitiesRequest { Limit = 10 @@ -94,12 +106,10 @@ static async Task Main(string[] args) // 5. Get the feed we created Console.WriteLine("5. Getting the feed we created..."); - var getResponse = await feeds.GetOrCreateFeedAsync( - FeedGroupID: "user", - FeedID: "example-feed-1", + var getResponse = await feed.GetOrCreateFeedAsync( request: new GetOrCreateFeedRequest { - UserID = "sara" + UserID = "okabe" } ); Console.WriteLine("✅ Feed retrieved successfully!"); diff --git a/src/Client.cs b/src/Client.cs index c31fb61..ed8589e 100644 --- a/src/Client.cs +++ b/src/Client.cs @@ -1,30 +1,30 @@ -using System; -using System.Collections.Generic; -using System.Net.Http; using System.Text; using System.Text.Json; -using System.Threading; -using System.Threading.Tasks; using System.IdentityModel.Tokens.Jwt; using Microsoft.IdentityModel.Tokens; -using System.Text.Json.Serialization; -using GetStream.Models; namespace GetStream { - public class Client : IClient + public class BaseClient :IClient { private readonly HttpClient _httpClient; - private readonly string _apiKey; - private readonly string _apiSecret; - private readonly string _baseUrl; + protected string ApiKey; + protected string ApiSecret; + protected string BaseUrl; private readonly JsonSerializerOptions _jsonOptions; - public Client(string apiKey, string apiSecret, string baseUrl = "https://chat-edge-ohio-ce1.stream-io-api.com") + //getters + // public string ApiKey => _apiKey; + // public string ApiSecret => _apiSecret; + // public string BaseUrl => _baseUrl; + + + + public BaseClient(string apiKey, string apiSecret, string baseUrl = "https://chat-edge-ohio-ce1.stream-io-api.com") { - _apiKey = apiKey ?? throw new ArgumentNullException(nameof(apiKey)); - _apiSecret = apiSecret ?? throw new ArgumentNullException(nameof(apiSecret)); - _baseUrl = baseUrl ?? throw new ArgumentNullException(nameof(baseUrl)); + ApiKey = apiKey ?? throw new ArgumentNullException(nameof(apiKey)); + ApiSecret = apiSecret ?? throw new ArgumentNullException(nameof(apiSecret)); + BaseUrl = baseUrl ?? throw new ArgumentNullException(nameof(baseUrl)); _httpClient = new HttpClient(); // Configure JSON options once @@ -146,7 +146,7 @@ public async Task> MakeRequestAsyncDebug? queryParams, Dictionary? pathParams) { - var url = _baseUrl + path; + var url = BaseUrl + path; // Replace path parameters if (pathParams != null) @@ -168,7 +168,7 @@ private string BuildUrl(string path, Dictionary? queryParams, Di } // Add API key to query parameters - allQueryParams["api_key"] = _apiKey; + allQueryParams["api_key"] = ApiKey; // Add query parameters if (allQueryParams.Count > 0) @@ -187,7 +187,7 @@ private string BuildUrl(string path, Dictionary? queryParams, Di private string GenerateServerSideToken() { var tokenHandler = new JwtSecurityTokenHandler(); - var key = Encoding.ASCII.GetBytes(_apiSecret); + var key = Encoding.ASCII.GetBytes(ApiSecret); var claims = new List { // new System.Security.Claims.Claim("user_id", "*"), diff --git a/src/ClientBuilder.cs b/src/ClientBuilder.cs new file mode 100644 index 0000000..899fbae --- /dev/null +++ b/src/ClientBuilder.cs @@ -0,0 +1,235 @@ +using System; +using System.IO; +using DotNetEnv; + +namespace GetStream +{ + /// + /// Builder class for creating GetStream clients with environment variable support + /// + public class ClientBuilder + { + private string? _apiKey; + private string? _apiSecret; + private string _baseUrl = "https://chat.stream-io-api.com"; + + /// + /// Get the loaded API key (after calling LoadCredentials) + /// + public string? ApiKeyValue => _apiKey; + + /// + /// Get the loaded API secret (after calling LoadCredentials) + /// + public string? ApiSecretValue => _apiSecret; + + /// + /// Get the loaded base URL (after calling LoadCredentials) + /// + public string BaseUrlValue => _baseUrl; + private bool _loadEnv = true; + private string? _envPath; + private string? _envFilePath; + + /// + /// Set the API key + /// + public ClientBuilder ApiKey(string apiKey) + { + _apiKey = apiKey; + return this; + } + + /// + /// Set the API secret + /// + public ClientBuilder ApiSecret(string apiSecret) + { + _apiSecret = apiSecret; + return this; + } + + /// + /// Set the base URL + /// + public ClientBuilder BaseUrl(string baseUrl) + { + _baseUrl = baseUrl; + return this; + } + + /// + /// Disable loading from environment variables and .env file + /// + public ClientBuilder SkipEnvLoad() + { + _loadEnv = false; + return this; + } + + /// + /// Set custom path for .env file (default is current directory) + /// + public ClientBuilder EnvPath(string path) + { + _envPath = path; + return this; + } + + /// + /// Create a client builder that loads configuration from environment variables + /// + public static ClientBuilder FromEnv(string? envPath = null) + { + var builder = new ClientBuilder(); + if (envPath != null) + { + builder.EnvPath(envPath); + } + return builder; + } + + /// + /// Create a client builder that loads from a specific .env file + /// + /// Full path to the .env file + /// ClientBuilder instance + public static ClientBuilder FromEnvFile(string envFilePath) + { + return new ClientBuilder + { + _loadEnv = true, + _envFilePath = envFilePath + }; + } + + /// + /// Build the StreamClient + /// + /// Thrown when required credentials are missing + public StreamClient Build() + { + LoadCredentials(); + return new StreamClient(_apiKey!, _apiSecret!); + } + + /// + /// Build the FeedsV3Client + /// + /// Thrown when required credentials are missing + public FeedsV3Client BuildFeedsClient() + { + LoadCredentials(); + return new FeedsV3Client(_apiKey!, _apiSecret!); + } + + public void LoadCredentials() + { + // Load environment variables if enabled + if (_loadEnv) + { + LoadEnvironmentVariables(); + } + + // Get credentials from environment if not set + var apiKey = _apiKey ?? GetEnvVar("STREAM_API_KEY"); + var apiSecret = _apiSecret ?? GetEnvVar("STREAM_API_SECRET"); + var baseUrl = _baseUrl; + + // Override baseUrl with environment variable if not explicitly set and env var exists + if (_baseUrl == "https://chat.stream-io-api.com") + { + var envBaseUrl = GetEnvVar("STREAM_BASE_URL"); + if (!string.IsNullOrEmpty(envBaseUrl)) + { + baseUrl = envBaseUrl; + } + } + + if (string.IsNullOrEmpty(apiKey)) + { + throw new InvalidOperationException( + "API key not provided. Set STREAM_API_KEY environment variable or call ApiKey() method." + ); + } + + if (string.IsNullOrEmpty(apiSecret)) + { + throw new InvalidOperationException( + "API secret not provided. Set STREAM_API_SECRET environment variable or call ApiSecret() method." + ); + } + + _apiKey = apiKey; + _apiSecret = apiSecret; + _baseUrl = baseUrl; + } + + /// + /// Load environment variables from .env file + /// + private void LoadEnvironmentVariables() + { + try + { + string envFilePath; + + if (_envFilePath != null) + { + // Use explicit file path if provided + envFilePath = _envFilePath; + } + else if (_envPath != null) + { + // Use explicit directory path if provided + envFilePath = Path.Combine(_envPath, ".env"); + } + else + { + // Search for .env file starting from current directory and going up + envFilePath = FindEnvFile(); + } + + if (!string.IsNullOrEmpty(envFilePath) && File.Exists(envFilePath)) + { + Env.Load(envFilePath); + } + } + catch (Exception) + { + // Silently ignore if .env file doesn't exist or can't be loaded + // Environment variables might be set through other means + } + } + + /// + /// Find .env file by searching up the directory tree + /// + private string FindEnvFile() + { + var currentDir = Directory.GetCurrentDirectory(); + + while (currentDir != null) + { + var envPath = Path.Combine(currentDir, ".env"); + if (File.Exists(envPath)) + { + return envPath; + } + + var parent = Directory.GetParent(currentDir); + currentDir = parent?.FullName; + } + + return string.Empty; + } + + /// + /// Get environment variable value + /// + private static string? GetEnvVar(string name) + { + return Environment.GetEnvironmentVariable(name); + } + } +} diff --git a/src/CommonClient.cs b/src/CommonClient.cs new file mode 100644 index 0000000..6766f7a --- /dev/null +++ b/src/CommonClient.cs @@ -0,0 +1,880 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. +using GetStream.Requests; +using GetStream.Models; + +namespace GetStream +{ + public class StreamClient : BaseClient + { + /// + /// Create StreamClient using credentials from environment variables or .env file + /// + public StreamClient() : this(GetEnvironmentCredentials()) + { + } + + private StreamClient((string apiKey, string apiSecret, string baseUrl) credentials) + : this(credentials.apiKey, credentials.apiSecret, credentials.baseUrl) + { + } + + private static (string apiKey, string apiSecret, string baseUrl) GetEnvironmentCredentials() + { + var builder = ClientBuilder.FromEnv(); + builder.LoadCredentials(); + return (builder.ApiKeyValue!, builder.ApiSecretValue!, builder.BaseUrlValue); + } + public StreamClient(string apiKey, string apiSecret, + string baseUrl = "https://chat.stream-io-api.com") : base(apiKey, apiSecret, baseUrl) + { + this.ApiKey = apiKey; + this.ApiSecret = apiSecret; + this.BaseUrl = baseUrl; + } + + private Dictionary ExtractQueryParams(object request) + { + if (request == null) + return new Dictionary(); + + var queryParams = new Dictionary(); + var properties = request.GetType().GetProperties(); + + foreach (var prop in properties) + { + var value = prop.GetValue(request); + if (value != null) + { + queryParams[prop.Name.ToLower()] = value.ToString(); + } + } + + return queryParams; + } + public async Task> GetAppAsync(object request = null, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "GET", + "/api/v2/app",null,null,null, + cancellationToken); + + return result; + } + public async Task> UpdateAppAsync(UpdateAppRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "PATCH", + "/api/v2/app",null,request,null, + cancellationToken); + + return result; + } + public async Task> ListBlockListsAsync(object request = null, + CancellationToken cancellationToken = default) + { + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "GET", + "/api/v2/blocklists",queryParams,null,null, + cancellationToken); + + return result; + } + public async Task> CreateBlockListAsync(CreateBlockListRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/blocklists",null,request,null, + cancellationToken); + + return result; + } + public async Task> DeleteBlockListAsync(string Name,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["name"] = Name, + }; + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "DELETE", + "/api/v2/blocklists/{name}",queryParams,null,pathParams, + cancellationToken); + + return result; + } + public async Task> GetBlockListAsync(string Name,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["name"] = Name, + }; + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "GET", + "/api/v2/blocklists/{name}",queryParams,null,pathParams, + cancellationToken); + + return result; + } + public async Task> UpdateBlockListAsync(string Name,UpdateBlockListRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["name"] = Name, + }; + + var result = await MakeRequestAsync( + "PUT", + "/api/v2/blocklists/{name}",null,request,pathParams, + cancellationToken); + + return result; + } + public async Task> CheckPushAsync(CheckPushRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/check_push",null,request,null, + cancellationToken); + + return result; + } + public async Task> CheckSNSAsync(CheckSNSRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/check_sns",null,request,null, + cancellationToken); + + return result; + } + public async Task> CheckSQSAsync(CheckSQSRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/check_sqs",null,request,null, + cancellationToken); + + return result; + } + public async Task> DeleteDeviceAsync(object request = null, + CancellationToken cancellationToken = default) + { + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "DELETE", + "/api/v2/devices",queryParams,null,null, + cancellationToken); + + return result; + } + public async Task> ListDevicesAsync(object request = null, + CancellationToken cancellationToken = default) + { + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "GET", + "/api/v2/devices",queryParams,null,null, + cancellationToken); + + return result; + } + public async Task> CreateDeviceAsync(CreateDeviceRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/devices",null,request,null, + cancellationToken); + + return result; + } + public async Task> ExportUsersAsync(ExportUsersRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/export/users",null,request,null, + cancellationToken); + + return result; + } + public async Task> ListExternalStorageAsync(object request = null, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "GET", + "/api/v2/external_storage",null,null,null, + cancellationToken); + + return result; + } + public async Task> CreateExternalStorageAsync(CreateExternalStorageRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/external_storage",null,request,null, + cancellationToken); + + return result; + } + public async Task> DeleteExternalStorageAsync(string Name,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["name"] = Name, + }; + + var result = await MakeRequestAsync( + "DELETE", + "/api/v2/external_storage/{name}",null,null,pathParams, + cancellationToken); + + return result; + } + public async Task> UpdateExternalStorageAsync(string Name,UpdateExternalStorageRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["name"] = Name, + }; + + var result = await MakeRequestAsync( + "PUT", + "/api/v2/external_storage/{name}",null,request,pathParams, + cancellationToken); + + return result; + } + public async Task> CheckExternalStorageAsync(string Name,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["name"] = Name, + }; + + var result = await MakeRequestAsync( + "GET", + "/api/v2/external_storage/{name}/check",null,null,pathParams, + cancellationToken); + + return result; + } + public async Task> CreateGuestAsync(CreateGuestRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/guest",null,request,null, + cancellationToken); + + return result; + } + public async Task> CreateImportURLAsync(CreateImportURLRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/import_urls",null,request,null, + cancellationToken); + + return result; + } + public async Task> ListImportsAsync(object request = null, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "GET", + "/api/v2/imports",null,null,null, + cancellationToken); + + return result; + } + public async Task> CreateImportAsync(CreateImportRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/imports",null,request,null, + cancellationToken); + + return result; + } + public async Task> GetImportAsync(string ID,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = ID, + }; + + var result = await MakeRequestAsync( + "GET", + "/api/v2/imports/{id}",null,null,pathParams, + cancellationToken); + + return result; + } + public async Task> GetOGAsync(object request = null, + CancellationToken cancellationToken = default) + { + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "GET", + "/api/v2/og",queryParams,null,null, + cancellationToken); + + return result; + } + public async Task> ListPermissionsAsync(object request = null, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "GET", + "/api/v2/permissions",null,null,null, + cancellationToken); + + return result; + } + public async Task> GetPermissionAsync(string ID,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = ID, + }; + + var result = await MakeRequestAsync( + "GET", + "/api/v2/permissions/{id}",null,null,pathParams, + cancellationToken); + + return result; + } + public async Task> CreatePollAsync(CreatePollRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/polls",null,request,null, + cancellationToken); + + return result; + } + public async Task> UpdatePollAsync(UpdatePollRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "PUT", + "/api/v2/polls",null,request,null, + cancellationToken); + + return result; + } + public async Task> QueryPollsAsync(QueryPollsRequest request, + CancellationToken cancellationToken = default) + { + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "POST", + "/api/v2/polls/query",queryParams,request,null, + cancellationToken); + + return result; + } + public async Task> DeletePollAsync(string PollID,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["poll_id"] = PollID, + }; + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "DELETE", + "/api/v2/polls/{poll_id}",queryParams,null,pathParams, + cancellationToken); + + return result; + } + public async Task> GetPollAsync(string PollID,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["poll_id"] = PollID, + }; + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "GET", + "/api/v2/polls/{poll_id}",queryParams,null,pathParams, + cancellationToken); + + return result; + } + public async Task> UpdatePollPartialAsync(string PollID,UpdatePollPartialRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["poll_id"] = PollID, + }; + + var result = await MakeRequestAsync( + "PATCH", + "/api/v2/polls/{poll_id}",null,request,pathParams, + cancellationToken); + + return result; + } + public async Task> CreatePollOptionAsync(string PollID,CreatePollOptionRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["poll_id"] = PollID, + }; + + var result = await MakeRequestAsync( + "POST", + "/api/v2/polls/{poll_id}/options",null,request,pathParams, + cancellationToken); + + return result; + } + public async Task> UpdatePollOptionAsync(string PollID,UpdatePollOptionRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["poll_id"] = PollID, + }; + + var result = await MakeRequestAsync( + "PUT", + "/api/v2/polls/{poll_id}/options",null,request,pathParams, + cancellationToken); + + return result; + } + public async Task> DeletePollOptionAsync(string PollID, string OptionID,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["poll_id"] = PollID, + ["option_id"] = OptionID, + }; + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "DELETE", + "/api/v2/polls/{poll_id}/options/{option_id}",queryParams,null,pathParams, + cancellationToken); + + return result; + } + public async Task> GetPollOptionAsync(string PollID, string OptionID,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["poll_id"] = PollID, + ["option_id"] = OptionID, + }; + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "GET", + "/api/v2/polls/{poll_id}/options/{option_id}",queryParams,null,pathParams, + cancellationToken); + + return result; + } + public async Task> QueryPollVotesAsync(string PollID,QueryPollVotesRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["poll_id"] = PollID, + }; + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "POST", + "/api/v2/polls/{poll_id}/votes",queryParams,request,pathParams, + cancellationToken); + + return result; + } + public async Task> ListPushProvidersAsync(object request = null, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "GET", + "/api/v2/push_providers",null,null,null, + cancellationToken); + + return result; + } + public async Task> UpsertPushProviderAsync(UpsertPushProviderRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/push_providers",null,request,null, + cancellationToken); + + return result; + } + public async Task> DeletePushProviderAsync(string Type, string Name,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["type"] = Type, + ["name"] = Name, + }; + + var result = await MakeRequestAsync( + "DELETE", + "/api/v2/push_providers/{type}/{name}",null,null,pathParams, + cancellationToken); + + return result; + } + public async Task> GetRateLimitsAsync(object request = null, + CancellationToken cancellationToken = default) + { + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "GET", + "/api/v2/rate_limits",queryParams,null,null, + cancellationToken); + + return result; + } + public async Task> ListRolesAsync(object request = null, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "GET", + "/api/v2/roles",null,null,null, + cancellationToken); + + return result; + } + public async Task> CreateRoleAsync(CreateRoleRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/roles",null,request,null, + cancellationToken); + + return result; + } + public async Task> DeleteRoleAsync(string Name,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["name"] = Name, + }; + + var result = await MakeRequestAsync( + "DELETE", + "/api/v2/roles/{name}",null,null,pathParams, + cancellationToken); + + return result; + } + public async Task> GetTaskAsync(string ID,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = ID, + }; + + var result = await MakeRequestAsync( + "GET", + "/api/v2/tasks/{id}",null,null,pathParams, + cancellationToken); + + return result; + } + public async Task> DeleteFileAsync(object request = null, + CancellationToken cancellationToken = default) + { + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "DELETE", + "/api/v2/uploads/file",queryParams,null,null, + cancellationToken); + + return result; + } + public async Task> FileUploadAsync(FileUploadRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/uploads/file",null,request,null, + cancellationToken); + + return result; + } + public async Task> DeleteImageAsync(object request = null, + CancellationToken cancellationToken = default) + { + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "DELETE", + "/api/v2/uploads/image",queryParams,null,null, + cancellationToken); + + return result; + } + public async Task> ImageUploadAsync(ImageUploadRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/uploads/image",null,request,null, + cancellationToken); + + return result; + } + public async Task> QueryUsersAsync(object request = null, + CancellationToken cancellationToken = default) + { + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "GET", + "/api/v2/users",queryParams,null,null, + cancellationToken); + + return result; + } + public async Task> UpdateUsersPartialAsync(UpdateUsersPartialRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "PATCH", + "/api/v2/users",null,request,null, + cancellationToken); + + return result; + } + public async Task> UpdateUsersAsync(UpdateUsersRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/users",null,request,null, + cancellationToken); + + return result; + } + public async Task> GetBlockedUsersAsync(object request = null, + CancellationToken cancellationToken = default) + { + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "GET", + "/api/v2/users/block",queryParams,null,null, + cancellationToken); + + return result; + } + public async Task> BlockUsersAsync(BlockUsersRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/users/block",null,request,null, + cancellationToken); + + return result; + } + public async Task> DeactivateUsersAsync(DeactivateUsersRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/users/deactivate",null,request,null, + cancellationToken); + + return result; + } + public async Task> DeleteUsersAsync(DeleteUsersRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/users/delete",null,request,null, + cancellationToken); + + return result; + } + public async Task> GetUserLiveLocationsAsync(object request = null, + CancellationToken cancellationToken = default) + { + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "GET", + "/api/v2/users/live_locations",queryParams,null,null, + cancellationToken); + + return result; + } + public async Task> UpdateLiveLocationAsync(UpdateLiveLocationRequest request, + CancellationToken cancellationToken = default) + { + var queryParams = ExtractQueryParams(request); + + var result = await MakeRequestAsync( + "PUT", + "/api/v2/users/live_locations",queryParams,request,null, + cancellationToken); + + return result; + } + public async Task> ReactivateUsersAsync(ReactivateUsersRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/users/reactivate",null,request,null, + cancellationToken); + + return result; + } + public async Task> RestoreUsersAsync(RestoreUsersRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/users/restore",null,request,null, + cancellationToken); + + return result; + } + public async Task> UnblockUsersAsync(UnblockUsersRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "POST", + "/api/v2/users/unblock",null,request,null, + cancellationToken); + + return result; + } + public async Task> DeactivateUserAsync(string UserID,DeactivateUserRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["user_id"] = UserID, + }; + + var result = await MakeRequestAsync( + "POST", + "/api/v2/users/{user_id}/deactivate",null,request,pathParams, + cancellationToken); + + return result; + } + public async Task> ExportUserAsync(string UserID,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["user_id"] = UserID, + }; + + var result = await MakeRequestAsync( + "GET", + "/api/v2/users/{user_id}/export",null,null,pathParams, + cancellationToken); + + return result; + } + public async Task> ReactivateUserAsync(string UserID,ReactivateUserRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["user_id"] = UserID, + }; + + var result = await MakeRequestAsync( + "POST", + "/api/v2/users/{user_id}/reactivate",null,request,pathParams, + cancellationToken); + + return result; + } + } + } \ No newline at end of file diff --git a/src/CustomCode.cs b/src/CustomCode.cs index 877bbe8..55e8b98 100644 --- a/src/CustomCode.cs +++ b/src/CustomCode.cs @@ -1,12 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Net.Http; -using System.Text; using System.Text.Json; -using System.Threading; -using System.Threading.Tasks; -using System.IdentityModel.Tokens.Jwt; -using Microsoft.IdentityModel.Tokens; using System.Text.Json.Serialization; using GetStream.Models; diff --git a/src/Feed.cs b/src/Feed.cs new file mode 100644 index 0000000..773ea58 --- /dev/null +++ b/src/Feed.cs @@ -0,0 +1,103 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. +using GetStream.Requests; +using GetStream.Models; + +namespace GetStream +{ + public class Feed(FeedsV3Client client, string feedGroup, string feedId) + { + private readonly FeedsV3Client _client = client ?? throw new ArgumentNullException(nameof(client)); + private readonly string _feedGroup = feedGroup ?? throw new ArgumentNullException(nameof(feedGroup)); + private readonly string _feedId = feedId ?? throw new ArgumentNullException(nameof(feedId)); + +// Delete a single feed by its ID +public async Task> DeleteFeedAsync( + object request = null, + CancellationToken cancellationToken = default) +{ + return await _client.DeleteFeedAsync(_feedGroup, _feedId, + request, cancellationToken); +} + +// Create a single feed for a given feed group +public async Task> GetOrCreateFeedAsync( + GetOrCreateFeedRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.GetOrCreateFeedAsync(_feedGroup, _feedId, + request, cancellationToken); +} + +// Update an existing feed +public async Task> UpdateFeedAsync( + UpdateFeedRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.UpdateFeedAsync(_feedGroup, _feedId, + request, cancellationToken); +} + +// Mark activities as read/seen/watched. Can mark by timestamp (seen), activity IDs (read), or all as read. +public async Task> MarkActivityAsync( + MarkActivityRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.MarkActivityAsync(_feedGroup, _feedId, + request, cancellationToken); +} + +// Unpin an activity from a feed. This removes the pin, so the activity will no longer be displayed at the top of the feed. +public async Task> UnpinActivityAsync(string ActivityID, + object request = null, + CancellationToken cancellationToken = default) +{ + return await _client.UnpinActivityAsync(_feedGroup, _feedId, + ActivityID,request, cancellationToken); +} + +// Pin an activity to a feed. Pinned activities are typically displayed at the top of a feed. +public async Task> PinActivityAsync(string ActivityID, + PinActivityRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.PinActivityAsync(_feedGroup, _feedId, + ActivityID,request, cancellationToken); +} + +// Add, remove, or set members for a feed +public async Task> UpdateFeedMembersAsync( + UpdateFeedMembersRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.UpdateFeedMembersAsync(_feedGroup, _feedId, + request, cancellationToken); +} + +// Accepts a pending feed member request +public async Task> AcceptFeedMemberInviteAsync( + AcceptFeedMemberInviteRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.AcceptFeedMemberInviteAsync(_feedGroup, _feedId, + request, cancellationToken); +} + +// Query feed members based on filters with pagination and sorting options +public async Task> QueryFeedMembersAsync( + QueryFeedMembersRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.QueryFeedMembersAsync(_feedGroup, _feedId, + request, cancellationToken); +} + +// Rejects a pending feed member request +public async Task> RejectFeedMemberInviteAsync( + RejectFeedMemberInviteRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.RejectFeedMemberInviteAsync(_feedGroup, _feedId, + request, cancellationToken); +} + } +} \ No newline at end of file diff --git a/src/feed.cs b/src/FeedsV3Client.cs similarity index 76% rename from src/feed.cs rename to src/FeedsV3Client.cs index 43934ba..83b1c7c 100644 --- a/src/feed.cs +++ b/src/FeedsV3Client.cs @@ -1,30 +1,40 @@ // Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. -using System; -using System.Threading; -using System.Threading.Tasks; -using System.Collections.Generic; using GetStream.Requests; using GetStream.Models; namespace GetStream { - public class FeedClient + public class FeedsV3Client { private readonly IClient _client; - public FeedClient(IClient client) + /// + /// Create FeedsV3Client using credentials from environment variables or .env file + /// + public FeedsV3Client() + { + var client = new StreamClient(); + _client = client; + } + public FeedsV3Client(IClient client) { _client = client ?? throw new ArgumentNullException(nameof(client)); } - + public FeedsV3Client(string apiKey, string apiSecret) + { + var client = new StreamClient(apiKey, apiSecret); + _client = client; + } + public Feed Feed(string feedGroup, string feedId) + { + return new Feed(this, feedGroup, feedId); + } private Dictionary ExtractQueryParams(object request) { if (request == null) return new Dictionary(); - var queryParams = new Dictionary(); var properties = request.GetType().GetProperties(); - foreach (var prop in properties) { var value = prop.GetValue(request); @@ -33,54 +43,54 @@ private Dictionary ExtractQueryParams(object request) queryParams[prop.Name.ToLower()] = value.ToString(); } } - + return queryParams; } public async Task> AddActivityAsync(AddActivityRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/activities",null!,request,null!, + "/api/v2/feeds/activities",null,request,null, cancellationToken); - + return result; } public async Task> UpsertActivitiesAsync(UpsertActivitiesRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/activities/batch",null!,request,null!, + "/api/v2/feeds/activities/batch",null,request,null, cancellationToken); - + return result; } public async Task> DeleteActivitiesAsync(DeleteActivitiesRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/activities/delete",null!,request,null!, + "/api/v2/feeds/activities/delete",null,request,null, cancellationToken); - + return result; } public async Task> QueryActivitiesAsync(QueryActivitiesRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/activities/query",null!,request,null!, + "/api/v2/feeds/activities/query",null,request,null, cancellationToken); - + return result; } - public async Task> DeleteActivityAsync(string ActivityID,object request = null, + public async Task> DeleteBookmarkAsync(string ActivityID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -88,195 +98,210 @@ public async Task> DeleteActivityAsync(st ["activity_id"] = ActivityID, }; var queryParams = ExtractQueryParams(request); - - var result = await _client.MakeRequestAsync( + + var result = await _client.MakeRequestAsync( "DELETE", - "/api/v2/feeds/activities/{activity_id}",queryParams,null!,pathParams, + "/api/v2/feeds/activities/{activity_id}/bookmarks",queryParams,null,pathParams, cancellationToken); - + return result; } - public async Task> GetActivityAsync(string ActivityID,object request = null, + public async Task> UpdateBookmarkAsync(string ActivityID,UpdateBookmarkRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { ["activity_id"] = ActivityID, }; - - var result = await _client.MakeRequestAsync( - "GET", - "/api/v2/feeds/activities/{activity_id}",null!,null,pathParams, + + var result = await _client.MakeRequestAsync( + "PATCH", + "/api/v2/feeds/activities/{activity_id}/bookmarks",null,request,pathParams, cancellationToken); - + return result; } - public async Task> UpdateActivityPartialAsync(string ActivityID,UpdateActivityPartialRequest request, + public async Task> AddBookmarkAsync(string ActivityID,AddBookmarkRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { ["activity_id"] = ActivityID, }; - - var result = await _client.MakeRequestAsync( - "PATCH", - "/api/v2/feeds/activities/{activity_id}",null!,request,pathParams, + + var result = await _client.MakeRequestAsync( + "POST", + "/api/v2/feeds/activities/{activity_id}/bookmarks",null,request,pathParams, cancellationToken); - + return result; } - public async Task> UpdateActivityAsync(string ActivityID,UpdateActivityRequest request, + public async Task> ActivityFeedbackAsync(string ActivityID,ActivityFeedbackRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { ["activity_id"] = ActivityID, }; - - var result = await _client.MakeRequestAsync( - "PUT", - "/api/v2/feeds/activities/{activity_id}",null!,request,pathParams, + + var result = await _client.MakeRequestAsync( + "POST", + "/api/v2/feeds/activities/{activity_id}/feedback",null,request,pathParams, cancellationToken); - + return result; } - public async Task> DeleteBookmarkAsync(string ActivityID,object request = null, + public async Task> CastPollVoteAsync(string ActivityID, string PollID,CastPollVoteRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { ["activity_id"] = ActivityID, + ["poll_id"] = PollID, }; - var queryParams = ExtractQueryParams(request); - - var result = await _client.MakeRequestAsync( - "DELETE", - "/api/v2/feeds/activities/{activity_id}/bookmarks",queryParams,null!,pathParams, + + var result = await _client.MakeRequestAsync( + "POST", + "/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote",null,request,pathParams, cancellationToken); - + return result; } - public async Task> UpdateBookmarkAsync(string ActivityID,UpdateBookmarkRequest request, + public async Task> DeletePollVoteAsync(string ActivityID, string PollID, string VoteID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { ["activity_id"] = ActivityID, + ["poll_id"] = PollID, + ["vote_id"] = VoteID, }; - - var result = await _client.MakeRequestAsync( - "PATCH", - "/api/v2/feeds/activities/{activity_id}/bookmarks",null!,request,pathParams, + var queryParams = ExtractQueryParams(request); + + var result = await _client.MakeRequestAsync( + "DELETE", + "/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote/{vote_id}",queryParams,null,pathParams, cancellationToken); - + return result; } - public async Task> AddBookmarkAsync(string ActivityID,AddBookmarkRequest request, + public async Task> AddReactionAsync(string ActivityID,AddReactionRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { ["activity_id"] = ActivityID, }; - - var result = await _client.MakeRequestAsync( + + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/activities/{activity_id}/bookmarks",null!,request,pathParams, + "/api/v2/feeds/activities/{activity_id}/reactions",null,request,pathParams, cancellationToken); - + return result; } - public async Task> CastPollVoteAsync(string ActivityID, string PollID,CastPollVoteRequest request, + public async Task> QueryActivityReactionsAsync(string ActivityID,QueryActivityReactionsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { ["activity_id"] = ActivityID, - ["poll_id"] = PollID, }; - - var result = await _client.MakeRequestAsync( + + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote",null!,request,pathParams, + "/api/v2/feeds/activities/{activity_id}/reactions/query",null,request,pathParams, cancellationToken); - + return result; } - public async Task> DeletePollVoteAsync(string ActivityID, string PollID, string VoteID,object request = null, + public async Task> DeleteActivityReactionAsync(string ActivityID, string Type,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { ["activity_id"] = ActivityID, - ["poll_id"] = PollID, - ["vote_id"] = VoteID, + ["type"] = Type, }; var queryParams = ExtractQueryParams(request); - - var result = await _client.MakeRequestAsync( + + var result = await _client.MakeRequestAsync( "DELETE", - "/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote/{vote_id}",queryParams,null!,pathParams, + "/api/v2/feeds/activities/{activity_id}/reactions/{type}",queryParams,null,pathParams, cancellationToken); - + return result; } - public async Task> AddReactionAsync(string ActivityID,AddReactionRequest request, + public async Task> DeleteActivityAsync(string ID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["activity_id"] = ActivityID, + ["id"] = ID, }; - - var result = await _client.MakeRequestAsync( - "POST", - "/api/v2/feeds/activities/{activity_id}/reactions",null!,request,pathParams, + var queryParams = ExtractQueryParams(request); + + var result = await _client.MakeRequestAsync( + "DELETE", + "/api/v2/feeds/activities/{id}",queryParams,null,pathParams, cancellationToken); - + return result; } - public async Task> QueryActivityReactionsAsync(string ActivityID,QueryActivityReactionsRequest request, + public async Task> GetActivityAsync(string ID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["activity_id"] = ActivityID, + ["id"] = ID, }; - - var result = await _client.MakeRequestAsync( - "POST", - "/api/v2/feeds/activities/{activity_id}/reactions/query",null!,request,pathParams, + + var result = await _client.MakeRequestAsync( + "GET", + "/api/v2/feeds/activities/{id}",null,null,pathParams, cancellationToken); - + return result; } - public async Task> DeleteActivityReactionAsync(string ActivityID, string Type,object request = null, + public async Task> UpdateActivityPartialAsync(string ID,UpdateActivityPartialRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["activity_id"] = ActivityID, - ["type"] = Type, + ["id"] = ID, }; - var queryParams = ExtractQueryParams(request); - - var result = await _client.MakeRequestAsync( - "DELETE", - "/api/v2/feeds/activities/{activity_id}/reactions/{type}",queryParams,null!,pathParams, + + var result = await _client.MakeRequestAsync( + "PATCH", + "/api/v2/feeds/activities/{id}",null,request,pathParams, cancellationToken); - + + return result; + } + public async Task> UpdateActivityAsync(string ID,UpdateActivityRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = ID, + }; + + var result = await _client.MakeRequestAsync( + "PUT", + "/api/v2/feeds/activities/{id}",null,request,pathParams, + cancellationToken); + return result; } public async Task> QueryBookmarkFoldersAsync(QueryBookmarkFoldersRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/bookmark_folders/query",null!,request,null!, + "/api/v2/feeds/bookmark_folders/query",null,request,null, cancellationToken); - + return result; } public async Task> DeleteBookmarkFolderAsync(string FolderID,object request = null, @@ -286,12 +311,12 @@ public async Task> DeleteBookmarkFo { ["folder_id"] = FolderID, }; - + var result = await _client.MakeRequestAsync( "DELETE", - "/api/v2/feeds/bookmark_folders/{folder_id}",null!,null,pathParams, + "/api/v2/feeds/bookmark_folders/{folder_id}",null,null,pathParams, cancellationToken); - + return result; } public async Task> UpdateBookmarkFolderAsync(string FolderID,UpdateBookmarkFolderRequest request, @@ -301,244 +326,199 @@ public async Task> UpdateBookmarkFo { ["folder_id"] = FolderID, }; - + var result = await _client.MakeRequestAsync( "PATCH", - "/api/v2/feeds/bookmark_folders/{folder_id}",null!,request,pathParams, + "/api/v2/feeds/bookmark_folders/{folder_id}",null,request,pathParams, cancellationToken); - + return result; } public async Task> QueryBookmarksAsync(QueryBookmarksRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/bookmarks/query",null!,request,null!, + "/api/v2/feeds/bookmarks/query",null,request,null, cancellationToken); - + return result; } public async Task> GetCommentsAsync(object request = null, CancellationToken cancellationToken = default) { var queryParams = ExtractQueryParams(request); - + var result = await _client.MakeRequestAsync( "GET", - "/api/v2/feeds/comments",queryParams,null!,null, + "/api/v2/feeds/comments",queryParams,null,null, cancellationToken); - + return result; } public async Task> AddCommentAsync(AddCommentRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/comments",null!,request,null!, + "/api/v2/feeds/comments",null,request,null, cancellationToken); - + return result; } public async Task> AddCommentsBatchAsync(AddCommentsBatchRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/comments/batch",null!,request,null!, + "/api/v2/feeds/comments/batch",null,request,null, cancellationToken); - + return result; } public async Task> QueryCommentsAsync(QueryCommentsRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/comments/query",null!,request,null!, + "/api/v2/feeds/comments/query",null,request,null, cancellationToken); - + return result; } - public async Task> DeleteCommentAsync(string CommentID,object request = null, + public async Task> DeleteCommentAsync(string ID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["comment_id"] = CommentID, + ["id"] = ID, }; - + var queryParams = ExtractQueryParams(request); + var result = await _client.MakeRequestAsync( "DELETE", - "/api/v2/feeds/comments/{comment_id}",null!,null,pathParams, + "/api/v2/feeds/comments/{id}",queryParams,null,pathParams, cancellationToken); - + return result; } - public async Task> GetCommentAsync(string CommentID,object request = null, + public async Task> GetCommentAsync(string ID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["comment_id"] = CommentID, + ["id"] = ID, }; - + var result = await _client.MakeRequestAsync( "GET", - "/api/v2/feeds/comments/{comment_id}",null!,null,pathParams, + "/api/v2/feeds/comments/{id}",null,null,pathParams, cancellationToken); - + return result; } - public async Task> UpdateCommentAsync(string CommentID,UpdateCommentRequest request, + public async Task> UpdateCommentAsync(string ID,UpdateCommentRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["comment_id"] = CommentID, + ["id"] = ID, }; - + var result = await _client.MakeRequestAsync( "PATCH", - "/api/v2/feeds/comments/{comment_id}",null!,request,pathParams, + "/api/v2/feeds/comments/{id}",null,request,pathParams, cancellationToken); - + return result; } - public async Task> AddCommentReactionAsync(string CommentID,AddCommentReactionRequest request, + public async Task> AddCommentReactionAsync(string ID,AddCommentReactionRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["comment_id"] = CommentID, + ["id"] = ID, }; - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/comments/{comment_id}/reactions",null!,request,pathParams, + "/api/v2/feeds/comments/{id}/reactions",null,request,pathParams, cancellationToken); - + return result; } - public async Task> QueryCommentReactionsAsync(string CommentID,QueryCommentReactionsRequest request, + public async Task> QueryCommentReactionsAsync(string ID,QueryCommentReactionsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["comment_id"] = CommentID, + ["id"] = ID, }; - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/comments/{comment_id}/reactions/query",null!,request,pathParams, + "/api/v2/feeds/comments/{id}/reactions/query",null,request,pathParams, cancellationToken); - + return result; } - public async Task> DeleteCommentReactionAsync(string CommentID, string Type,object request = null, + public async Task> DeleteCommentReactionAsync(string ID, string Type,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["comment_id"] = CommentID, + ["id"] = ID, ["type"] = Type, }; var queryParams = ExtractQueryParams(request); - + var result = await _client.MakeRequestAsync( "DELETE", - "/api/v2/feeds/comments/{comment_id}/reactions/{type}",queryParams,null!,pathParams, + "/api/v2/feeds/comments/{id}/reactions/{type}",queryParams,null,pathParams, cancellationToken); - + return result; } - public async Task> GetCommentRepliesAsync(string CommentID,object request = null, + public async Task> GetCommentRepliesAsync(string ID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["comment_id"] = CommentID, + ["id"] = ID, }; var queryParams = ExtractQueryParams(request); - + var result = await _client.MakeRequestAsync( "GET", - "/api/v2/feeds/comments/{comment_id}/replies",queryParams,null!,pathParams, + "/api/v2/feeds/comments/{id}/replies",queryParams,null,pathParams, cancellationToken); - + return result; } public async Task> ListFeedGroupsAsync(object request = null, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "GET", - "/api/v2/feeds/feed_groups",null!,null,null!, + "/api/v2/feeds/feed_groups",null,null,null, cancellationToken); - + return result; } public async Task> CreateFeedGroupAsync(CreateFeedGroupRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/feed_groups",null!,request,null!, - cancellationToken); - - return result; - } - public async Task> DeleteFeedGroupAsync(string FeedGroupID,object request = null, - CancellationToken cancellationToken = default) - { - var pathParams = new Dictionary - { - ["feed_group_id"] = FeedGroupID, - }; - var queryParams = ExtractQueryParams(request); - - var result = await _client.MakeRequestAsync( - "DELETE", - "/api/v2/feeds/feed_groups/{feed_group_id}",queryParams,null!,pathParams, - cancellationToken); - - return result; - } - public async Task> GetFeedGroupAsync(string FeedGroupID,object request = null, - CancellationToken cancellationToken = default) - { - var pathParams = new Dictionary - { - ["feed_group_id"] = FeedGroupID, - }; - - var result = await _client.MakeRequestAsync( - "GET", - "/api/v2/feeds/feed_groups/{feed_group_id}",null!,null,pathParams, - cancellationToken); - - return result; - } - public async Task> UpdateFeedGroupAsync(string FeedGroupID,UpdateFeedGroupRequest request, - CancellationToken cancellationToken = default) - { - var pathParams = new Dictionary - { - ["feed_group_id"] = FeedGroupID, - }; - - var result = await _client.MakeRequestAsync( - "PUT", - "/api/v2/feeds/feed_groups/{feed_group_id}",null!,request,pathParams, + "/api/v2/feeds/feed_groups",null,request,null, cancellationToken); - + return result; } public async Task> DeleteFeedAsync(string FeedGroupID, string FeedID,object request = null, @@ -550,12 +530,12 @@ public async Task> DeleteFeedAsync(string Fee ["feed_id"] = FeedID, }; var queryParams = ExtractQueryParams(request); - + var result = await _client.MakeRequestAsync( "DELETE", - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}",queryParams,null!,pathParams, + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}",queryParams,null,pathParams, cancellationToken); - + return result; } public async Task> GetOrCreateFeedAsync(string FeedGroupID, string FeedID,GetOrCreateFeedRequest request, @@ -566,12 +546,12 @@ public async Task> GetOrCreateFeedAsync( ["feed_group_id"] = FeedGroupID, ["feed_id"] = FeedID, }; - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}",null!,request,pathParams, + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}",null,request,pathParams, cancellationToken); - + return result; } public async Task> UpdateFeedAsync(string FeedGroupID, string FeedID,UpdateFeedRequest request, @@ -582,12 +562,12 @@ public async Task> UpdateFeedAsync(string Fee ["feed_group_id"] = FeedGroupID, ["feed_id"] = FeedID, }; - + var result = await _client.MakeRequestAsync( "PUT", - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}",null!,request,pathParams, + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}",null,request,pathParams, cancellationToken); - + return result; } public async Task> MarkActivityAsync(string FeedGroupID, string FeedID,MarkActivityRequest request, @@ -598,12 +578,12 @@ public async Task> MarkActivityAsync(string FeedGroupID ["feed_group_id"] = FeedGroupID, ["feed_id"] = FeedID, }; - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/mark/batch",null!,request,pathParams, + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/mark/batch",null,request,pathParams, cancellationToken); - + return result; } public async Task> UnpinActivityAsync(string FeedGroupID, string FeedID, string ActivityID,object request = null, @@ -616,12 +596,12 @@ public async Task> UnpinActivityAsync(stri ["activity_id"] = ActivityID, }; var queryParams = ExtractQueryParams(request); - + var result = await _client.MakeRequestAsync( "DELETE", - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin",queryParams,null!,pathParams, + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin",queryParams,null,pathParams, cancellationToken); - + return result; } public async Task> PinActivityAsync(string FeedGroupID, string FeedID, string ActivityID,PinActivityRequest request, @@ -633,12 +613,12 @@ public async Task> PinActivityAsync(string F ["feed_id"] = FeedID, ["activity_id"] = ActivityID, }; - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin",null!,request,pathParams, + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin",null,request,pathParams, cancellationToken); - + return result; } public async Task> UpdateFeedMembersAsync(string FeedGroupID, string FeedID,UpdateFeedMembersRequest request, @@ -649,12 +629,12 @@ public async Task> UpdateFeedMembersAs ["feed_group_id"] = FeedGroupID, ["feed_id"] = FeedID, }; - + var result = await _client.MakeRequestAsync( "PATCH", - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members",null!,request,pathParams, + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members",null,request,pathParams, cancellationToken); - + return result; } public async Task> AcceptFeedMemberInviteAsync(string FeedID, string FeedGroupID,AcceptFeedMemberInviteRequest request, @@ -665,12 +645,12 @@ public async Task> AcceptFeedMemb ["feed_id"] = FeedID, ["feed_group_id"] = FeedGroupID, }; - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/accept",null!,request,pathParams, + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/accept",null,request,pathParams, cancellationToken); - + return result; } public async Task> QueryFeedMembersAsync(string FeedGroupID, string FeedID,QueryFeedMembersRequest request, @@ -681,12 +661,12 @@ public async Task> QueryFeedMembersAsyn ["feed_group_id"] = FeedGroupID, ["feed_id"] = FeedID, }; - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/query",null!,request,pathParams, + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/query",null,request,pathParams, cancellationToken); - + return result; } public async Task> RejectFeedMemberInviteAsync(string FeedGroupID, string FeedID,RejectFeedMemberInviteRequest request, @@ -697,12 +677,12 @@ public async Task> RejectFeedMemb ["feed_group_id"] = FeedGroupID, ["feed_id"] = FeedID, }; - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/reject",null!,request,pathParams, + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/reject",null,request,pathParams, cancellationToken); - + return result; } public async Task> GetFollowSuggestionsAsync(string FeedGroupID,object request = null, @@ -713,167 +693,243 @@ public async Task> GetFollowSuggest ["feed_group_id"] = FeedGroupID, }; var queryParams = ExtractQueryParams(request); - + var result = await _client.MakeRequestAsync( "GET", - "/api/v2/feeds/feed_groups/{feed_group_id}/follow_suggestions",queryParams,null!,pathParams, + "/api/v2/feeds/feed_groups/{feed_group_id}/follow_suggestions",queryParams,null,pathParams, + cancellationToken); + + return result; + } + public async Task> DeleteFeedGroupAsync(string ID,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = ID, + }; + var queryParams = ExtractQueryParams(request); + + var result = await _client.MakeRequestAsync( + "DELETE", + "/api/v2/feeds/feed_groups/{id}",queryParams,null,pathParams, + cancellationToken); + + return result; + } + public async Task> GetFeedGroupAsync(string ID,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = ID, + }; + + var result = await _client.MakeRequestAsync( + "GET", + "/api/v2/feeds/feed_groups/{id}",null,null,pathParams, + cancellationToken); + + return result; + } + public async Task> GetOrCreateFeedGroupAsync(string ID,GetOrCreateFeedGroupRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = ID, + }; + + var result = await _client.MakeRequestAsync( + "POST", + "/api/v2/feeds/feed_groups/{id}",null,request,pathParams, + cancellationToken); + + return result; + } + public async Task> UpdateFeedGroupAsync(string ID,UpdateFeedGroupRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = ID, + }; + + var result = await _client.MakeRequestAsync( + "PUT", + "/api/v2/feeds/feed_groups/{id}",null,request,pathParams, cancellationToken); - + return result; } public async Task> ListFeedViewsAsync(object request = null, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "GET", - "/api/v2/feeds/feed_views",null!,null,null!, + "/api/v2/feeds/feed_views",null,null,null, cancellationToken); - + return result; } public async Task> CreateFeedViewAsync(CreateFeedViewRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/feed_views",null!,request,null!, + "/api/v2/feeds/feed_views",null,request,null, cancellationToken); - + return result; } - public async Task> DeleteFeedViewAsync(string ViewID,object request = null, + public async Task> DeleteFeedViewAsync(string ID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["view_id"] = ViewID, + ["id"] = ID, }; - + var result = await _client.MakeRequestAsync( "DELETE", - "/api/v2/feeds/feed_views/{view_id}",null!,null,pathParams, + "/api/v2/feeds/feed_views/{id}",null,null,pathParams, cancellationToken); - + return result; } - public async Task> GetFeedViewAsync(string ViewID,object request = null, + public async Task> GetFeedViewAsync(string ID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["view_id"] = ViewID, + ["id"] = ID, }; - + var result = await _client.MakeRequestAsync( "GET", - "/api/v2/feeds/feed_views/{view_id}",null!,null,pathParams, + "/api/v2/feeds/feed_views/{id}",null,null,pathParams, + cancellationToken); + + return result; + } + public async Task> GetOrCreateFeedViewAsync(string ID,GetOrCreateFeedViewRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = ID, + }; + + var result = await _client.MakeRequestAsync( + "POST", + "/api/v2/feeds/feed_views/{id}",null,request,pathParams, cancellationToken); - + return result; } - public async Task> UpdateFeedViewAsync(string ViewID,UpdateFeedViewRequest request, + public async Task> UpdateFeedViewAsync(string ID,UpdateFeedViewRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { - ["view_id"] = ViewID, + ["id"] = ID, }; - + var result = await _client.MakeRequestAsync( "PUT", - "/api/v2/feeds/feed_views/{view_id}",null!,request,pathParams, + "/api/v2/feeds/feed_views/{id}",null,request,pathParams, cancellationToken); - + return result; } public async Task> CreateFeedsBatchAsync(CreateFeedsBatchRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/feeds/batch",null!,request,null!, + "/api/v2/feeds/feeds/batch",null,request,null, cancellationToken); - + return result; } public async Task> QueryFeedsAsync(QueryFeedsRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/feeds/query",null!,request,null!, + "/api/v2/feeds/feeds/query",null,request,null, cancellationToken); - + return result; } public async Task> UpdateFollowAsync(UpdateFollowRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "PATCH", - "/api/v2/feeds/follows",null!,request,null!, + "/api/v2/feeds/follows",null,request,null, cancellationToken); - + return result; } public async Task> FollowAsync(FollowRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/follows",null!,request,null!, + "/api/v2/feeds/follows",null,request,null, cancellationToken); - + return result; } public async Task> AcceptFollowAsync(AcceptFollowRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/follows/accept",null!,request,null!, + "/api/v2/feeds/follows/accept",null,request,null, cancellationToken); - + return result; } public async Task> FollowBatchAsync(FollowBatchRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/follows/batch",null!,request,null!, + "/api/v2/feeds/follows/batch",null,request,null, cancellationToken); - + return result; } public async Task> QueryFollowsAsync(QueryFollowsRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/follows/query",null!,request,null!, + "/api/v2/feeds/follows/query",null,request,null, cancellationToken); - + return result; } public async Task> RejectFollowAsync(RejectFollowRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/follows/reject",null!,request,null!, + "/api/v2/feeds/follows/reject",null,request,null, cancellationToken); - + return result; } public async Task> UnfollowAsync(string Source, string Target,object request = null, @@ -884,23 +940,75 @@ public async Task> UnfollowAsync(string Source, ["source"] = Source, ["target"] = Target, }; - + var result = await _client.MakeRequestAsync( "DELETE", - "/api/v2/feeds/follows/{source}/{target}",null!,null,pathParams, + "/api/v2/feeds/follows/{source}/{target}",null,null,pathParams, + cancellationToken); + + return result; + } + public async Task> CreateMembershipLevelAsync(CreateMembershipLevelRequest request, + CancellationToken cancellationToken = default) + { + + var result = await _client.MakeRequestAsync( + "POST", + "/api/v2/feeds/membership_levels",null,request,null, + cancellationToken); + + return result; + } + public async Task> QueryMembershipLevelsAsync(QueryMembershipLevelsRequest request, + CancellationToken cancellationToken = default) + { + + var result = await _client.MakeRequestAsync( + "POST", + "/api/v2/feeds/membership_levels/query",null,request,null, + cancellationToken); + + return result; + } + public async Task> DeleteMembershipLevelAsync(string ID,object request = null, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = ID, + }; + + var result = await _client.MakeRequestAsync( + "DELETE", + "/api/v2/feeds/membership_levels/{id}",null,null,pathParams, cancellationToken); - + + return result; + } + public async Task> UpdateMembershipLevelAsync(string ID,UpdateMembershipLevelRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = ID, + }; + + var result = await _client.MakeRequestAsync( + "PATCH", + "/api/v2/feeds/membership_levels/{id}",null,request,pathParams, + cancellationToken); + return result; } public async Task> UnfollowBatchAsync(UnfollowBatchRequest request, CancellationToken cancellationToken = default) { - + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/unfollow/batch",null!,request,null!, + "/api/v2/feeds/unfollow/batch",null,request,null, cancellationToken); - + return result; } public async Task> DeleteFeedUserDataAsync(string UserID,object request = null, @@ -910,27 +1018,27 @@ public async Task> DeleteFeedUserData { ["user_id"] = UserID, }; - + var result = await _client.MakeRequestAsync( "DELETE", - "/api/v2/feeds/users/{user_id}/delete",null!,null,pathParams, + "/api/v2/feeds/users/{user_id}/delete",null,null,pathParams, cancellationToken); - + return result; } - public async Task> ExportFeedUserDataAsync(string UserID,object request = null, + public async Task> ExportFeedUserDataAsync(string UserID,ExportFeedUserDataRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary { ["user_id"] = UserID, }; - - var result = await _client.MakeRequestAsync( + + var result = await _client.MakeRequestAsync( "POST", - "/api/v2/feeds/users/{user_id}/export",null!,null,pathParams, + "/api/v2/feeds/users/{user_id}/export",null,request,pathParams, cancellationToken); - + return result; } } diff --git a/src/IClient.cs b/src/IClient.cs index 48c1977..0dafe5a 100644 --- a/src/IClient.cs +++ b/src/IClient.cs @@ -1,8 +1,4 @@ // Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. -using System; -using System.Threading; -using System.Threading.Tasks; -using System.Collections.Generic; namespace GetStream { @@ -16,4 +12,4 @@ Task> MakeRequestAsync( Dictionary? pathParams, CancellationToken cancellationToken = default); } -} \ No newline at end of file +} diff --git a/src/models.cs b/src/models.cs index a3bb7e1..f2fc9a9 100644 --- a/src/models.cs +++ b/src/models.cs @@ -16,6 +16,7 @@ public class AIImageConfig [JsonPropertyName("async")] public bool? Async { get; set; } } + public class AITextConfig { [JsonPropertyName("enabled")] @@ -29,6 +30,7 @@ public class AITextConfig [JsonPropertyName("async")] public bool? Async { get; set; } } + public class AIVideoConfig { [JsonPropertyName("enabled")] @@ -38,6 +40,7 @@ public class AIVideoConfig [JsonPropertyName("async")] public bool? Async { get; set; } } + public class APIError { [JsonPropertyName("code")] @@ -57,6 +60,7 @@ public class APIError [JsonPropertyName("exception_fields")] public Dictionary ExceptionFields { get; set; } } + public class APNConfig { [JsonPropertyName("auth_key")] @@ -80,6 +84,7 @@ public class APNConfig [JsonPropertyName("team_id")] public string? TeamID { get; set; } } + public class APNConfigFields { [JsonPropertyName("development")] @@ -103,6 +108,7 @@ public class APNConfigFields [JsonPropertyName("team_id")] public string? TeamID { get; set; } } + public class APNS { [JsonPropertyName("body")] @@ -118,6 +124,7 @@ public class APNS [JsonPropertyName("data")] public object Data { get; set; } } + public class AWSRekognitionRule { [JsonPropertyName("action")] @@ -127,6 +134,7 @@ public class AWSRekognitionRule [JsonPropertyName("min_confidence")] public double MinConfidence { get; set; } } + public class AcceptFeedMemberInviteResponse { [JsonPropertyName("duration")] @@ -134,6 +142,7 @@ public class AcceptFeedMemberInviteResponse [JsonPropertyName("member")] public FeedMemberResponse Member { get; set; } } + public class AcceptFollowResponse { [JsonPropertyName("duration")] @@ -141,6 +150,7 @@ public class AcceptFollowResponse [JsonPropertyName("follow")] public FollowResponse Follow { get; set; } } + public class Action { [JsonPropertyName("name")] @@ -154,6 +164,33 @@ public class Action [JsonPropertyName("value")] public string? Value { get; set; } } + + public class ActionLog + { + [JsonPropertyName("created_at")] + public DateTime CreatedAt { get; set; } + [JsonPropertyName("id")] + public string ID { get; set; } + [JsonPropertyName("reason")] + public string Reason { get; set; } + [JsonPropertyName("reporter_type")] + public string ReporterType { get; set; } + [JsonPropertyName("review_queue_item_id")] + public string ReviewQueueItemID { get; set; } + [JsonPropertyName("target_user_id")] + public string TargetUserID { get; set; } + [JsonPropertyName("type")] + public string Type { get; set; } + [JsonPropertyName("custom")] + public object Custom { get; set; } + [JsonPropertyName("review_queue_item")] + public ReviewQueueItem? ReviewQueueItem { get; set; } + [JsonPropertyName("target_user")] + public User? TargetUser { get; set; } + [JsonPropertyName("user")] + public User? User { get; set; } + } + public class ActionLogResponse { [JsonPropertyName("created_at")] @@ -177,6 +214,7 @@ public class ActionLogResponse [JsonPropertyName("user")] public UserResponse? User { get; set; } } + public class ActionSequence { [JsonPropertyName("action")] @@ -194,44 +232,7 @@ public class ActionSequence [JsonPropertyName("warning_text")] public string WarningText { get; set; } } - public class ActiveCallsFPSStats - { - [JsonPropertyName("p05")] - public double P05 { get; set; } - [JsonPropertyName("p10")] - public double P10 { get; set; } - [JsonPropertyName("p50")] - public double P50 { get; set; } - [JsonPropertyName("p90")] - public double P90 { get; set; } - } - public class ActiveCallsLatencyStats - { - [JsonPropertyName("p50")] - public double P50 { get; set; } - [JsonPropertyName("p90")] - public double P90 { get; set; } - } - public class ActiveCallsMetrics - { - [JsonPropertyName("join_call_api")] - public JoinCallAPIMetrics? JoinCallAPI { get; set; } - [JsonPropertyName("publishers")] - public PublishersMetrics? Publishers { get; set; } - [JsonPropertyName("subscribers")] - public SubscribersMetrics? Subscribers { get; set; } - } - public class ActiveCallsSummary - { - [JsonPropertyName("active_calls")] - public int ActiveCalls { get; set; } - [JsonPropertyName("active_publishers")] - public int ActivePublishers { get; set; } - [JsonPropertyName("active_subscribers")] - public int ActiveSubscribers { get; set; } - [JsonPropertyName("participants")] - public int Participants { get; set; } - } + public class ActivityAddedEvent { [JsonPropertyName("created_at")] @@ -244,11 +245,14 @@ public class ActivityAddedEvent public object Custom { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class ActivityDeletedEvent { [JsonPropertyName("created_at")] @@ -261,11 +265,22 @@ public class ActivityDeletedEvent public object Custom { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + + public class ActivityFeedbackResponse + { + [JsonPropertyName("activity_id")] + public string ActivityID { get; set; } + [JsonPropertyName("duration")] + public string Duration { get; set; } + } + public class ActivityLocation { [JsonPropertyName("lat")] @@ -273,6 +288,7 @@ public class ActivityLocation [JsonPropertyName("lng")] public double Lng { get; set; } } + public class ActivityMarkEvent { [JsonPropertyName("created_at")] @@ -283,6 +299,8 @@ public class ActivityMarkEvent public object Custom { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("mark_all_read")] public bool? MarkAllRead { get; set; } [JsonPropertyName("mark_all_seen")] @@ -291,30 +309,14 @@ public class ActivityMarkEvent public DateTime? ReceivedAt { get; set; } [JsonPropertyName("mark_read")] public List MarkRead { get; set; } + [JsonPropertyName("mark_seen")] + public List MarkSeen { get; set; } [JsonPropertyName("mark_watched")] public List MarkWatched { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } - public class ActivityMarkedEvent - { - [JsonPropertyName("all_read")] - public bool AllRead { get; set; } - [JsonPropertyName("all_seen")] - public bool AllSeen { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("feed_id")] - public string FeedID { get; set; } - [JsonPropertyName("user_id")] - public string UserID { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("marked_read")] - public List MarkedRead { get; set; } - [JsonPropertyName("marked_watched")] - public List MarkedWatched { get; set; } - } + public class ActivityPinResponse { [JsonPropertyName("created_at")] @@ -328,6 +330,7 @@ public class ActivityPinResponse [JsonPropertyName("user")] public UserResponse User { get; set; } } + public class ActivityPinnedEvent { [JsonPropertyName("created_at")] @@ -340,14 +343,20 @@ public class ActivityPinnedEvent public PinActivityResponse PinnedActivity { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class ActivityProcessorConfig { + [JsonPropertyName("type")] + public string Type { get; set; } } + public class ActivityReactionAddedEvent { [JsonPropertyName("created_at")] @@ -362,11 +371,14 @@ public class ActivityReactionAddedEvent public FeedsReactionResponse Reaction { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class ActivityReactionDeletedEvent { [JsonPropertyName("created_at")] @@ -381,11 +393,14 @@ public class ActivityReactionDeletedEvent public FeedsReactionResponse Reaction { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class ActivityReactionUpdatedEvent { [JsonPropertyName("created_at")] @@ -400,11 +415,14 @@ public class ActivityReactionUpdatedEvent public FeedsReactionResponse Reaction { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class ActivityRemovedFromFeedEvent { [JsonPropertyName("created_at")] @@ -417,17 +435,20 @@ public class ActivityRemovedFromFeedEvent public object Custom { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class ActivityRequest { [JsonPropertyName("type")] public string Type { get; set; } - [JsonPropertyName("fids")] - public List Fids { get; set; } + [JsonPropertyName("feeds")] + public List Feeds { get; set; } [JsonPropertyName("expires_at")] public string? ExpiresAt { get; set; } [JsonPropertyName("id")] @@ -459,6 +480,7 @@ public class ActivityRequest [JsonPropertyName("search_data")] public object SearchData { get; set; } } + public class ActivityResponse { [JsonPropertyName("bookmark_count")] @@ -515,23 +537,26 @@ public class ActivityResponse public DateTime? EditedAt { get; set; } [JsonPropertyName("expires_at")] public DateTime? ExpiresAt { get; set; } + [JsonPropertyName("hidden")] + public bool? Hidden { get; set; } [JsonPropertyName("text")] public string? Text { get; set; } [JsonPropertyName("visibility_tag")] public string? VisibilityTag { get; set; } - [JsonPropertyName("object")] - public object @Object { get; set; } [JsonPropertyName("current_feed")] public FeedResponse? CurrentFeed { get; set; } [JsonPropertyName("location")] public ActivityLocation? Location { get; set; } [JsonPropertyName("moderation")] public ModerationV2Response? Moderation { get; set; } + [JsonPropertyName("notification_context")] + public object NotificationContext { get; set; } [JsonPropertyName("parent")] public ActivityResponse? Parent { get; set; } [JsonPropertyName("poll")] public PollResponseData? Poll { get; set; } } + public class ActivitySelectorConfig { [JsonPropertyName("cutoff_time")] @@ -545,6 +570,7 @@ public class ActivitySelectorConfig [JsonPropertyName("filter")] public object Filter { get; set; } } + public class ActivityUnpinnedEvent { [JsonPropertyName("created_at")] @@ -557,11 +583,14 @@ public class ActivityUnpinnedEvent public PinActivityResponse PinnedActivity { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class ActivityUpdatedEvent { [JsonPropertyName("created_at")] @@ -574,11 +603,14 @@ public class ActivityUpdatedEvent public object Custom { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class AddActivityResponse { [JsonPropertyName("duration")] @@ -586,6 +618,7 @@ public class AddActivityResponse [JsonPropertyName("activity")] public ActivityResponse Activity { get; set; } } + public class AddBookmarkResponse { [JsonPropertyName("duration")] @@ -593,6 +626,7 @@ public class AddBookmarkResponse [JsonPropertyName("bookmark")] public BookmarkResponse Bookmark { get; set; } } + public class AddCommentReactionResponse { [JsonPropertyName("duration")] @@ -602,6 +636,7 @@ public class AddCommentReactionResponse [JsonPropertyName("reaction")] public FeedsReactionResponse Reaction { get; set; } } + public class AddCommentResponse { [JsonPropertyName("duration")] @@ -609,6 +644,7 @@ public class AddCommentResponse [JsonPropertyName("comment")] public CommentResponse Comment { get; set; } } + public class AddCommentsBatchResponse { [JsonPropertyName("duration")] @@ -616,6 +652,7 @@ public class AddCommentsBatchResponse [JsonPropertyName("comments")] public List Comments { get; set; } } + public class AddFolderRequest { [JsonPropertyName("name")] @@ -623,6 +660,7 @@ public class AddFolderRequest [JsonPropertyName("custom")] public object Custom { get; set; } } + public class AddReactionResponse { [JsonPropertyName("duration")] @@ -632,6 +670,7 @@ public class AddReactionResponse [JsonPropertyName("reaction")] public FeedsReactionResponse Reaction { get; set; } } + public class AggregatedActivityResponse { [JsonPropertyName("activity_count")] @@ -649,18 +688,13 @@ public class AggregatedActivityResponse [JsonPropertyName("activities")] public List Activities { get; set; } } + public class AggregationConfig { [JsonPropertyName("format")] public string? Format { get; set; } } - public class AnyEvent - { - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } + public class AppResponseFields { [JsonPropertyName("async_url_enrich_enabled")] @@ -683,8 +717,12 @@ public class AppResponseFields public bool GuestUserCreationDisabled { get; set; } [JsonPropertyName("image_moderation_enabled")] public bool ImageModerationEnabled { get; set; } + [JsonPropertyName("moderation_bulk_submit_action_enabled")] + public bool ModerationBulkSubmitActionEnabled { get; set; } [JsonPropertyName("moderation_enabled")] public bool ModerationEnabled { get; set; } + [JsonPropertyName("moderation_llm_configurability_enabled")] + public bool ModerationLlmConfigurabilityEnabled { get; set; } [JsonPropertyName("moderation_multitenant_blocklist_enabled")] public bool ModerationMultitenantBlocklistEnabled { get; set; } [JsonPropertyName("moderation_webhook_url")] @@ -717,6 +755,8 @@ public class AppResponseFields public string SuspendedExplanation { get; set; } [JsonPropertyName("use_hook_v2")] public bool UseHookV2 { get; set; } + [JsonPropertyName("user_response_time_enabled")] + public bool UserResponseTimeEnabled { get; set; } [JsonPropertyName("webhook_url")] public string WebhookUrl { get; set; } [JsonPropertyName("event_hooks")] @@ -754,6 +794,7 @@ public class AppResponseFields [JsonPropertyName("moderation_dashboard_preferences")] public ModerationDashboardPreferences? ModerationDashboardPreferences { get; set; } } + public class AsyncBulkImageModerationEvent { [JsonPropertyName("created_at")] @@ -773,25 +814,7 @@ public class AsyncBulkImageModerationEvent [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } } - public class AsyncExportChannelsEvent - { - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("finished_at")] - public DateTime FinishedAt { get; set; } - [JsonPropertyName("started_at")] - public DateTime StartedAt { get; set; } - [JsonPropertyName("task_id")] - public string TaskID { get; set; } - [JsonPropertyName("url")] - public string Url { get; set; } - [JsonPropertyName("custom")] - public object Custom { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("received_at")] - public DateTime? ReceivedAt { get; set; } - } + public class AsyncExportErrorEvent { [JsonPropertyName("created_at")] @@ -811,6 +834,7 @@ public class AsyncExportErrorEvent [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } } + public class AsyncExportModerationLogsEvent { [JsonPropertyName("created_at")] @@ -830,25 +854,7 @@ public class AsyncExportModerationLogsEvent [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } } - public class AsyncExportUsersEvent - { - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("finished_at")] - public DateTime FinishedAt { get; set; } - [JsonPropertyName("started_at")] - public DateTime StartedAt { get; set; } - [JsonPropertyName("task_id")] - public string TaskID { get; set; } - [JsonPropertyName("url")] - public string Url { get; set; } - [JsonPropertyName("custom")] - public object Custom { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("received_at")] - public DateTime? ReceivedAt { get; set; } - } + public class AsyncModerationCallbackConfig { [JsonPropertyName("mode")] @@ -856,6 +862,7 @@ public class AsyncModerationCallbackConfig [JsonPropertyName("server_url")] public string? ServerUrl { get; set; } } + public class AsyncModerationConfiguration { [JsonPropertyName("timeout_ms")] @@ -863,6 +870,7 @@ public class AsyncModerationConfiguration [JsonPropertyName("callback")] public AsyncModerationCallbackConfig? Callback { get; set; } } + public class Attachment { [JsonPropertyName("custom")] @@ -910,6 +918,7 @@ public class Attachment [JsonPropertyName("giphy")] public Images? Giphy { get; set; } } + public class AudioSettings { [JsonPropertyName("access_request_enabled")] @@ -927,23 +936,7 @@ public class AudioSettings [JsonPropertyName("noise_cancellation")] public NoiseCancellationSettings? NoiseCancellation { get; set; } } - public class AudioSettingsRequest - { - [JsonPropertyName("default_device")] - public string DefaultDevice { get; set; } - [JsonPropertyName("access_request_enabled")] - public bool? AccessRequestEnabled { get; set; } - [JsonPropertyName("mic_default_on")] - public bool? MicDefaultOn { get; set; } - [JsonPropertyName("opus_dtx_enabled")] - public bool? OpusDtxEnabled { get; set; } - [JsonPropertyName("redundant_coding_enabled")] - public bool? RedundantCodingEnabled { get; set; } - [JsonPropertyName("speaker_default_on")] - public bool? SpeakerDefaultOn { get; set; } - [JsonPropertyName("noise_cancellation")] - public NoiseCancellationSettings? NoiseCancellation { get; set; } - } + public class AudioSettingsResponse { [JsonPropertyName("access_request_enabled")] @@ -961,19 +954,7 @@ public class AudioSettingsResponse [JsonPropertyName("noise_cancellation")] public NoiseCancellationSettings? NoiseCancellation { get; set; } } - public class AutomodDetails - { - [JsonPropertyName("action")] - public string? Action { get; set; } - [JsonPropertyName("original_message_type")] - public string? OriginalMessageType { get; set; } - [JsonPropertyName("image_labels")] - public List ImageLabels { get; set; } - [JsonPropertyName("message_details")] - public FlagMessageDetails? MessageDetails { get; set; } - [JsonPropertyName("result")] - public MessageModerationResult? Result { get; set; } - } + public class AutomodPlatformCircumventionConfig { [JsonPropertyName("enabled")] @@ -983,6 +964,7 @@ public class AutomodPlatformCircumventionConfig [JsonPropertyName("async")] public bool? Async { get; set; } } + public class AutomodRule { [JsonPropertyName("action")] @@ -992,6 +974,7 @@ public class AutomodRule [JsonPropertyName("threshold")] public double Threshold { get; set; } } + public class AutomodSemanticFiltersConfig { [JsonPropertyName("enabled")] @@ -1001,6 +984,7 @@ public class AutomodSemanticFiltersConfig [JsonPropertyName("async")] public bool? Async { get; set; } } + public class AutomodSemanticFiltersRule { [JsonPropertyName("action")] @@ -1010,6 +994,7 @@ public class AutomodSemanticFiltersRule [JsonPropertyName("threshold")] public double Threshold { get; set; } } + public class AutomodToxicityConfig { [JsonPropertyName("enabled")] @@ -1019,6 +1004,7 @@ public class AutomodToxicityConfig [JsonPropertyName("async")] public bool? Async { get; set; } } + public class AzureRequest { [JsonPropertyName("abs_account_name")] @@ -1030,6 +1016,7 @@ public class AzureRequest [JsonPropertyName("abs_tenant_id")] public string AbsTenantID { get; set; } } + public class BackstageSettings { [JsonPropertyName("enabled")] @@ -1037,13 +1024,7 @@ public class BackstageSettings [JsonPropertyName("join_ahead_time_seconds")] public int? JoinAheadTimeSeconds { get; set; } } - public class BackstageSettingsRequest - { - [JsonPropertyName("enabled")] - public bool? Enabled { get; set; } - [JsonPropertyName("join_ahead_time_seconds")] - public int? JoinAheadTimeSeconds { get; set; } - } + public class BackstageSettingsResponse { [JsonPropertyName("enabled")] @@ -1051,6 +1032,7 @@ public class BackstageSettingsResponse [JsonPropertyName("join_ahead_time_seconds")] public int? JoinAheadTimeSeconds { get; set; } } + public class Ban { [JsonPropertyName("created_at")] @@ -1068,6 +1050,7 @@ public class Ban [JsonPropertyName("target")] public User? Target { get; set; } } + public class BanActionRequest { [JsonPropertyName("channel_ban_only")] @@ -1083,6 +1066,7 @@ public class BanActionRequest [JsonPropertyName("timeout")] public int? Timeout { get; set; } } + public class BanOptions { [JsonPropertyName("duration")] @@ -1094,28 +1078,19 @@ public class BanOptions [JsonPropertyName("shadow_ban")] public bool ShadowBan { get; set; } } + public class BanResponse { - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("expires")] - public DateTime? Expires { get; set; } - [JsonPropertyName("reason")] - public string? Reason { get; set; } - [JsonPropertyName("shadow")] - public bool? Shadow { get; set; } - [JsonPropertyName("banned_by")] - public UserResponse? BannedBy { get; set; } - [JsonPropertyName("channel")] - public ChannelResponse? Channel { get; set; } - [JsonPropertyName("user")] - public UserResponse? User { get; set; } + [JsonPropertyName("duration")] + public string Duration { get; set; } } + public class BlockContentOptions { [JsonPropertyName("reason")] public string Reason { get; set; } } + public class BlockListConfig { [JsonPropertyName("enabled")] @@ -1125,6 +1100,7 @@ public class BlockListConfig [JsonPropertyName("async")] public bool? Async { get; set; } } + public class BlockListOptions { [JsonPropertyName("behavior")] @@ -1132,6 +1108,7 @@ public class BlockListOptions [JsonPropertyName("blocklist")] public string Blocklist { get; set; } } + public class BlockListResponse { [JsonPropertyName("name")] @@ -1149,6 +1126,7 @@ public class BlockListResponse [JsonPropertyName("updated_at")] public DateTime? UpdatedAt { get; set; } } + public class BlockListRule { [JsonPropertyName("action")] @@ -1158,11 +1136,7 @@ public class BlockListRule [JsonPropertyName("team")] public string Team { get; set; } } - public class BlockUserResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - } + public class BlockUsersResponse { [JsonPropertyName("blocked_by_user_id")] @@ -1174,19 +1148,7 @@ public class BlockUsersResponse [JsonPropertyName("duration")] public string Duration { get; set; } } - public class BlockedUserEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("user")] - public UserResponse User { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("blocked_by_user")] - public UserResponse? BlockedByUser { get; set; } - } + public class BlockedUserResponse { [JsonPropertyName("blocked_user_id")] @@ -1200,6 +1162,7 @@ public class BlockedUserResponse [JsonPropertyName("user")] public UserResponse User { get; set; } } + public class BodyguardRule { [JsonPropertyName("action")] @@ -1209,6 +1172,7 @@ public class BodyguardRule [JsonPropertyName("severity_rules")] public List SeverityRules { get; set; } } + public class BodyguardSeverityRule { [JsonPropertyName("action")] @@ -1216,6 +1180,7 @@ public class BodyguardSeverityRule [JsonPropertyName("severity")] public string Severity { get; set; } } + public class BookmarkAddedEvent { [JsonPropertyName("created_at")] @@ -1231,6 +1196,7 @@ public class BookmarkAddedEvent [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class BookmarkDeletedEvent { [JsonPropertyName("created_at")] @@ -1246,6 +1212,7 @@ public class BookmarkDeletedEvent [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class BookmarkFolderDeletedEvent { [JsonPropertyName("created_at")] @@ -1261,6 +1228,7 @@ public class BookmarkFolderDeletedEvent [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class BookmarkFolderResponse { [JsonPropertyName("created_at")] @@ -1274,6 +1242,7 @@ public class BookmarkFolderResponse [JsonPropertyName("custom")] public object Custom { get; set; } } + public class BookmarkFolderUpdatedEvent { [JsonPropertyName("created_at")] @@ -1289,6 +1258,7 @@ public class BookmarkFolderUpdatedEvent [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class BookmarkResponse { [JsonPropertyName("created_at")] @@ -1304,6 +1274,7 @@ public class BookmarkResponse [JsonPropertyName("folder")] public BookmarkFolderResponse? Folder { get; set; } } + public class BookmarkUpdatedEvent { [JsonPropertyName("created_at")] @@ -1319,13 +1290,7 @@ public class BookmarkUpdatedEvent [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } - public class Bound - { - [JsonPropertyName("inclusive")] - public bool Inclusive { get; set; } - [JsonPropertyName("value")] - public double Value { get; set; } - } + public class BroadcastSettings { [JsonPropertyName("enabled")] @@ -1335,15 +1300,7 @@ public class BroadcastSettings [JsonPropertyName("rtmp")] public RTMPSettings? RTMP { get; set; } } - public class BroadcastSettingsRequest - { - [JsonPropertyName("enabled")] - public bool? Enabled { get; set; } - [JsonPropertyName("hls")] - public HLSSettingsRequest? HLS { get; set; } - [JsonPropertyName("rtmp")] - public RTMPSettingsRequest? RTMP { get; set; } - } + public class BroadcastSettingsResponse { [JsonPropertyName("enabled")] @@ -1353,13 +1310,7 @@ public class BroadcastSettingsResponse [JsonPropertyName("rtmp")] public RTMPSettingsResponse RTMP { get; set; } } - public class BrowserDataResponse - { - [JsonPropertyName("name")] - public string? Name { get; set; } - [JsonPropertyName("version")] - public string? Version { get; set; } - } + public class BulkImageModerationResponse { [JsonPropertyName("duration")] @@ -1367,343 +1318,169 @@ public class BulkImageModerationResponse [JsonPropertyName("task_id")] public string TaskID { get; set; } } - public class CallAcceptedEvent + + public class Call { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] + [JsonPropertyName("AppPK")] + public int AppPK { get; set; } + [JsonPropertyName("Backstage")] + public bool Backstage { get; set; } + [JsonPropertyName("CID")] + public string CID { get; set; } + [JsonPropertyName("ChannelCID")] + public string ChannelCID { get; set; } + [JsonPropertyName("CreatedAt")] public DateTime CreatedAt { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("user")] - public UserResponse User { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallClosedCaption - { - [JsonPropertyName("end_time")] - public DateTime EndTime { get; set; } - [JsonPropertyName("speaker_id")] - public string SpeakerID { get; set; } - [JsonPropertyName("start_time")] - public DateTime StartTime { get; set; } - [JsonPropertyName("text")] - public string Text { get; set; } - [JsonPropertyName("user")] - public UserResponse User { get; set; } - } - public class CallClosedCaptionsFailedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallClosedCaptionsStartedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallClosedCaptionsStoppedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallCreatedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallDeletedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallDurationReport - { - [JsonPropertyName("histogram")] - public List Histogram { get; set; } - } - public class CallDurationReportResponse - { - [JsonPropertyName("daily")] - public List Daily { get; set; } - } - public class CallEndedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("reason")] - public string? Reason { get; set; } - [JsonPropertyName("user")] - public UserResponse? User { get; set; } - } - public class CallFrameRecordingFailedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("egress_id")] - public string EgressID { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallFrameRecordingFrameReadyEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("captured_at")] - public DateTime CapturedAt { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("egress_id")] - public string EgressID { get; set; } - [JsonPropertyName("session_id")] - public string SessionID { get; set; } - [JsonPropertyName("track_type")] - public string TrackType { get; set; } - [JsonPropertyName("url")] - public string Url { get; set; } - [JsonPropertyName("users")] - public Dictionary Users { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallFrameRecordingStartedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("egress_id")] - public string EgressID { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] + [JsonPropertyName("CreatedByUserID")] + public string CreatedByUserID { get; set; } + [JsonPropertyName("CurrentSessionID")] + public string CurrentSessionID { get; set; } + [JsonPropertyName("ID")] + public string ID { get; set; } + [JsonPropertyName("LastSessionID")] + public string LastSessionID { get; set; } + [JsonPropertyName("Team")] + public string Team { get; set; } + [JsonPropertyName("ThumbnailURL")] + public string ThumbnailURL { get; set; } + [JsonPropertyName("Type")] public string Type { get; set; } + [JsonPropertyName("UpdatedAt")] + public DateTime UpdatedAt { get; set; } + [JsonPropertyName("BlockedUserIDs")] + public List BlockedUserIDs { get; set; } + [JsonPropertyName("BlockedUsers")] + public List BlockedUsers { get; set; } + [JsonPropertyName("Egresses")] + public List Egresses { get; set; } + [JsonPropertyName("Members")] + public List Members { get; set; } + [JsonPropertyName("Custom")] + public object Custom { get; set; } + [JsonPropertyName("DeletedAt")] + public DateTime? DeletedAt { get; set; } + [JsonPropertyName("EgressUpdatedAt")] + public DateTime? EgressUpdatedAt { get; set; } + [JsonPropertyName("EndedAt")] + public DateTime? EndedAt { get; set; } + [JsonPropertyName("JoinAheadTimeSeconds")] + public int? JoinAheadTimeSeconds { get; set; } + [JsonPropertyName("LastHeartbeatAt")] + public DateTime? LastHeartbeatAt { get; set; } + [JsonPropertyName("MemberCount")] + public int? MemberCount { get; set; } + [JsonPropertyName("StartsAt")] + public DateTime? StartsAt { get; set; } + [JsonPropertyName("CallType")] + public CallType? CallType { get; set; } + [JsonPropertyName("CreatedBy")] + public User? CreatedBy { get; set; } + [JsonPropertyName("MemberLookup")] + public MemberLookup? MemberLookup { get; set; } + [JsonPropertyName("Session")] + public CallSession? Session { get; set; } + [JsonPropertyName("Settings")] + public CallSettings? Settings { get; set; } + [JsonPropertyName("SettingsOverrides")] + public CallSettings? SettingsOverrides { get; set; } } - public class CallFrameRecordingStoppedEvent + + public class CallEgress { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } + [JsonPropertyName("app_pk")] + public int AppPk { get; set; } + [JsonPropertyName("call_id")] + public string CallID { get; set; } + [JsonPropertyName("call_type")] + public string CallType { get; set; } [JsonPropertyName("egress_id")] public string EgressID { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallHLSBroadcastingFailedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallHLSBroadcastingStartedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("hls_playlist_url")] - public string HLSPlaylistUrl { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallHLSBroadcastingStoppedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } + [JsonPropertyName("egress_type")] + public string EgressType { get; set; } + [JsonPropertyName("instance_ip")] + public string InstanceIp { get; set; } + [JsonPropertyName("started_at")] + public DateTime StartedAt { get; set; } + [JsonPropertyName("state")] + public string State { get; set; } + [JsonPropertyName("updated_at")] + public DateTime UpdatedAt { get; set; } + [JsonPropertyName("stopped_at")] + public DateTime? StoppedAt { get; set; } + [JsonPropertyName("config")] + public EgressTaskConfig? Config { get; set; } } + public class CallIngressResponse { [JsonPropertyName("rtmp")] public RTMPIngress RTMP { get; set; } } - public class CallLiveStartedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallMemberAddedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallMemberRemovedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallMemberUpdatedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallMemberUpdatedPermissionEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("capabilities_by_role")] - public Dictionary> CapabilitiesByRole { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallMissedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("notify_user")] - public bool NotifyUser { get; set; } - [JsonPropertyName("session_id")] - public string SessionID { get; set; } - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("user")] - public UserResponse User { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallModerationBlurEvent + + public class CallMember { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + [JsonPropertyName("role")] + public string Role { get; set; } + [JsonPropertyName("updated_at")] + public DateTime UpdatedAt { get; set; } [JsonPropertyName("user_id")] public string UserID { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } + [JsonPropertyName("deleted_at")] + public DateTime? DeletedAt { get; set; } + [JsonPropertyName("user")] + public User? User { get; set; } } - public class CallModerationWarningEvent + + public class CallParticipant { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("message")] - public string Message { get; set; } - [JsonPropertyName("user_id")] - public string UserID { get; set; } + [JsonPropertyName("banned")] + public bool Banned { get; set; } + [JsonPropertyName("id")] + public string ID { get; set; } + [JsonPropertyName("JoinedAt")] + public DateTime JoinedAt { get; set; } + [JsonPropertyName("online")] + public bool Online { get; set; } + [JsonPropertyName("role")] + public string Role { get; set; } + [JsonPropertyName("UserSessionID")] + public string UserSessionID { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallNotificationEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } + [JsonPropertyName("teams_role")] + public Dictionary TeamsRole { get; set; } + [JsonPropertyName("avg_response_time")] + public int? AvgResponseTime { get; set; } + [JsonPropertyName("ban_expires")] + public DateTime? BanExpires { get; set; } [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("session_id")] - public string SessionID { get; set; } - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("user")] - public UserResponse User { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallParticipantCountReport - { - [JsonPropertyName("histogram")] - public List Histogram { get; set; } - } - public class CallParticipantCountReportResponse - { - [JsonPropertyName("daily")] - public List Daily { get; set; } + public DateTime? CreatedAt { get; set; } + [JsonPropertyName("deactivated_at")] + public DateTime? DeactivatedAt { get; set; } + [JsonPropertyName("deleted_at")] + public DateTime? DeletedAt { get; set; } + [JsonPropertyName("invisible")] + public bool? Invisible { get; set; } + [JsonPropertyName("language")] + public string? Language { get; set; } + [JsonPropertyName("last_active")] + public DateTime? LastActive { get; set; } + [JsonPropertyName("last_engaged_at")] + public DateTime? LastEngagedAt { get; set; } + [JsonPropertyName("revoke_tokens_issued_before")] + public DateTime? RevokeTokensIssuedBefore { get; set; } + [JsonPropertyName("updated_at")] + public DateTime? UpdatedAt { get; set; } + [JsonPropertyName("teams")] + public List Teams { get; set; } + [JsonPropertyName("privacy_settings")] + public PrivacySettings? PrivacySettings { get; set; } } + public class CallParticipantResponse { [JsonPropertyName("joined_at")] @@ -1715,129 +1492,15 @@ public class CallParticipantResponse [JsonPropertyName("user")] public UserResponse User { get; set; } } - public class CallReactionEvent + + public class CallResponse { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("reaction")] - public ReactionResponse Reaction { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallRecording - { - [JsonPropertyName("end_time")] - public DateTime EndTime { get; set; } - [JsonPropertyName("filename")] - public string Filename { get; set; } - [JsonPropertyName("session_id")] - public string SessionID { get; set; } - [JsonPropertyName("start_time")] - public DateTime StartTime { get; set; } - [JsonPropertyName("url")] - public string Url { get; set; } - } - public class CallRecordingFailedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("egress_id")] - public string EgressID { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallRecordingReadyEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("egress_id")] - public string EgressID { get; set; } - [JsonPropertyName("call_recording")] - public CallRecording CallRecording { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallRecordingStartedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("egress_id")] - public string EgressID { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallRecordingStoppedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("egress_id")] - public string EgressID { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallRejectedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("user")] - public UserResponse User { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("reason")] - public string? Reason { get; set; } - } - public class CallReportResponse - { - [JsonPropertyName("score")] - public double Score { get; set; } - [JsonPropertyName("ended_at")] - public DateTime? EndedAt { get; set; } - [JsonPropertyName("started_at")] - public DateTime? StartedAt { get; set; } - } - public class CallRequest - { - [JsonPropertyName("channel_cid")] - public string? ChannelCid { get; set; } - [JsonPropertyName("created_by_id")] - public string? CreatedByID { get; set; } - [JsonPropertyName("starts_at")] - public DateTime? StartsAt { get; set; } - [JsonPropertyName("team")] - public string? Team { get; set; } - [JsonPropertyName("video")] - public bool? Video { get; set; } - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("created_by")] - public UserRequest? CreatedBy { get; set; } - [JsonPropertyName("custom")] - public object Custom { get; set; } - [JsonPropertyName("settings_override")] - public CallSettingsRequest? SettingsOverride { get; set; } - } - public class CallResponse - { - [JsonPropertyName("backstage")] - public bool Backstage { get; set; } - [JsonPropertyName("captioning")] - public bool Captioning { get; set; } - [JsonPropertyName("cid")] - public string Cid { get; set; } + [JsonPropertyName("backstage")] + public bool Backstage { get; set; } + [JsonPropertyName("captioning")] + public bool Captioning { get; set; } + [JsonPropertyName("cid")] + public string Cid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("current_session_id")] @@ -1879,99 +1542,53 @@ public class CallResponse [JsonPropertyName("thumbnails")] public ThumbnailResponse? Thumbnails { get; set; } } - public class CallRingEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("session_id")] - public string SessionID { get; set; } - [JsonPropertyName("video")] - public bool Video { get; set; } - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("user")] - public UserResponse User { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallRtmpBroadcastFailedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("name")] - public string Name { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallRtmpBroadcastStartedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("name")] - public string Name { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallRtmpBroadcastStoppedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("name")] - public string Name { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallSessionEndedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("session_id")] - public string SessionID { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallSessionParticipantJoinedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("session_id")] - public string SessionID { get; set; } - [JsonPropertyName("participant")] - public CallParticipantResponse Participant { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallSessionParticipantLeftEvent + + public class CallSession { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] + [JsonPropertyName("AnonymousParticipantCount")] + public int AnonymousParticipantCount { get; set; } + [JsonPropertyName("AppPK")] + public int AppPK { get; set; } + [JsonPropertyName("CallID")] + public string CallID { get; set; } + [JsonPropertyName("CallType")] + public string CallType { get; set; } + [JsonPropertyName("CreatedAt")] public DateTime CreatedAt { get; set; } - [JsonPropertyName("duration_seconds")] - public int DurationSeconds { get; set; } - [JsonPropertyName("session_id")] + [JsonPropertyName("SessionID")] public string SessionID { get; set; } - [JsonPropertyName("participant")] - public CallParticipantResponse Participant { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } + [JsonPropertyName("ActiveSFUs")] + public List ActiveSFUs { get; set; } + [JsonPropertyName("Participants")] + public List Participants { get; set; } + [JsonPropertyName("SFUIDs")] + public List SFUIDs { get; set; } + [JsonPropertyName("AcceptedBy")] + public Dictionary AcceptedBy { get; set; } + [JsonPropertyName("MissedBy")] + public Dictionary MissedBy { get; set; } + [JsonPropertyName("ParticipantsCountByRole")] + public Dictionary ParticipantsCountByRole { get; set; } + [JsonPropertyName("RejectedBy")] + public Dictionary RejectedBy { get; set; } + [JsonPropertyName("UserPermissionOverrides")] + public Dictionary> UserPermissionOverrides { get; set; } + [JsonPropertyName("DeletedAt")] + public DateTime? DeletedAt { get; set; } + [JsonPropertyName("EndedAt")] + public DateTime? EndedAt { get; set; } + [JsonPropertyName("LiveEndedAt")] + public DateTime? LiveEndedAt { get; set; } + [JsonPropertyName("LiveStartedAt")] + public DateTime? LiveStartedAt { get; set; } + [JsonPropertyName("RingAt")] + public DateTime? RingAt { get; set; } + [JsonPropertyName("StartedAt")] + public DateTime? StartedAt { get; set; } + [JsonPropertyName("TimerEndsAt")] + public DateTime? TimerEndsAt { get; set; } } + public class CallSessionResponse { [JsonPropertyName("anonymous_participant_count")] @@ -1999,19 +1616,7 @@ public class CallSessionResponse [JsonPropertyName("timer_ends_at")] public DateTime? TimerEndsAt { get; set; } } - public class CallSessionStartedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("session_id")] - public string SessionID { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } + public class CallSettings { [JsonPropertyName("audio")] @@ -2024,6 +1629,8 @@ public class CallSettings public FrameRecordSettings? FrameRecording { get; set; } [JsonPropertyName("geofencing")] public GeofenceSettings? Geofencing { get; set; } + [JsonPropertyName("ingress")] + public IngressSettings? Ingress { get; set; } [JsonPropertyName("limits")] public LimitsSettings? Limits { get; set; } [JsonPropertyName("recording")] @@ -2041,35 +1648,7 @@ public class CallSettings [JsonPropertyName("video")] public VideoSettings? Video { get; set; } } - public class CallSettingsRequest - { - [JsonPropertyName("audio")] - public AudioSettingsRequest? Audio { get; set; } - [JsonPropertyName("backstage")] - public BackstageSettingsRequest? Backstage { get; set; } - [JsonPropertyName("broadcasting")] - public BroadcastSettingsRequest? Broadcasting { get; set; } - [JsonPropertyName("frame_recording")] - public FrameRecordingSettingsRequest? FrameRecording { get; set; } - [JsonPropertyName("geofencing")] - public GeofenceSettingsRequest? Geofencing { get; set; } - [JsonPropertyName("limits")] - public LimitsSettingsRequest? Limits { get; set; } - [JsonPropertyName("recording")] - public RecordSettingsRequest? Recording { get; set; } - [JsonPropertyName("ring")] - public RingSettingsRequest? Ring { get; set; } - [JsonPropertyName("screensharing")] - public ScreensharingSettingsRequest? Screensharing { get; set; } - [JsonPropertyName("session")] - public SessionSettingsRequest? Session { get; set; } - [JsonPropertyName("thumbnails")] - public ThumbnailsSettingsRequest? Thumbnails { get; set; } - [JsonPropertyName("transcription")] - public TranscriptionSettingsRequest? Transcription { get; set; } - [JsonPropertyName("video")] - public VideoSettingsRequest? Video { get; set; } - } + public class CallSettingsResponse { [JsonPropertyName("audio")] @@ -2098,107 +1677,10 @@ public class CallSettingsResponse public TranscriptionSettingsResponse Transcription { get; set; } [JsonPropertyName("video")] public VideoSettingsResponse Video { get; set; } + [JsonPropertyName("ingress")] + public IngressSettingsResponse? Ingress { get; set; } } - public class CallStateResponseFields - { - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("own_capabilities")] - public List OwnCapabilities { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - } - public class CallStatsReportReadyEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("session_id")] - public string SessionID { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallStatsReportSummaryResponse - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("call_duration_seconds")] - public int CallDurationSeconds { get; set; } - [JsonPropertyName("call_session_id")] - public string CallSessionID { get; set; } - [JsonPropertyName("call_status")] - public string CallStatus { get; set; } - [JsonPropertyName("first_stats_time")] - public DateTime FirstStatsTime { get; set; } - [JsonPropertyName("created_at")] - public DateTime? CreatedAt { get; set; } - [JsonPropertyName("min_user_rating")] - public int? MinUserRating { get; set; } - [JsonPropertyName("quality_score")] - public int? QualityScore { get; set; } - } - public class CallTranscription - { - [JsonPropertyName("end_time")] - public DateTime EndTime { get; set; } - [JsonPropertyName("filename")] - public string Filename { get; set; } - [JsonPropertyName("session_id")] - public string SessionID { get; set; } - [JsonPropertyName("start_time")] - public DateTime StartTime { get; set; } - [JsonPropertyName("url")] - public string Url { get; set; } - } - public class CallTranscriptionFailedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("egress_id")] - public string EgressID { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("error")] - public string? Error { get; set; } - } - public class CallTranscriptionReadyEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("egress_id")] - public string EgressID { get; set; } - [JsonPropertyName("call_transcription")] - public CallTranscription CallTranscription { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallTranscriptionStartedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("egress_id")] - public string EgressID { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallTranscriptionStoppedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("egress_id")] - public string EgressID { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } + public class CallType { [JsonPropertyName("AppPK")] @@ -2218,212 +1700,23 @@ public class CallType [JsonPropertyName("Settings")] public CallSettings? Settings { get; set; } } - public class CallTypeResponse + + public class Channel { + [JsonPropertyName("auto_translation_language")] + public string AutoTranslationLanguage { get; set; } + [JsonPropertyName("cid")] + public string Cid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } - [JsonPropertyName("name")] - public string Name { get; set; } - [JsonPropertyName("updated_at")] - public DateTime UpdatedAt { get; set; } - [JsonPropertyName("grants")] - public Dictionary> Grants { get; set; } - [JsonPropertyName("notification_settings")] - public NotificationSettings NotificationSettings { get; set; } - [JsonPropertyName("settings")] - public CallSettingsResponse Settings { get; set; } - [JsonPropertyName("external_storage")] - public string? ExternalStorage { get; set; } - } - public class CallUpdatedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("capabilities_by_role")] - public Dictionary> CapabilitiesByRole { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallUserFeedbackSubmittedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("rating")] - public int Rating { get; set; } - [JsonPropertyName("session_id")] - public string SessionID { get; set; } - [JsonPropertyName("user")] - public UserResponse User { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("reason")] - public string? Reason { get; set; } - [JsonPropertyName("sdk")] - public string? Sdk { get; set; } - [JsonPropertyName("sdk_version")] - public string? SdkVersion { get; set; } - [JsonPropertyName("custom")] - public object Custom { get; set; } - } - public class CallUserMutedEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("from_user_id")] - public string FromUserID { get; set; } - [JsonPropertyName("muted_user_ids")] - public List MutedUserIds { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CallsPerDayReport - { - [JsonPropertyName("count")] - public int Count { get; set; } - } - public class CallsPerDayReportResponse - { - [JsonPropertyName("daily")] - public List Daily { get; set; } - } - public class CampaignChannelTemplate - { - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("custom")] - public object Custom { get; set; } - [JsonPropertyName("id")] - public string? ID { get; set; } - [JsonPropertyName("team")] - public string? Team { get; set; } - [JsonPropertyName("members")] - public List Members { get; set; } - } - public class CampaignCompletedEvent - { - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("custom")] - public object Custom { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("received_at")] - public DateTime? ReceivedAt { get; set; } - [JsonPropertyName("campaign")] - public CampaignResponse? Campaign { get; set; } - } - public class CampaignMessageTemplate - { - [JsonPropertyName("poll_id")] - public string PollID { get; set; } - [JsonPropertyName("text")] - public string Text { get; set; } - [JsonPropertyName("attachments")] - public List Attachments { get; set; } - [JsonPropertyName("custom")] - public object Custom { get; set; } - } - public class CampaignResponse - { - [JsonPropertyName("create_channels")] - public bool CreateChannels { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("description")] - public string Description { get; set; } - [JsonPropertyName("id")] - public string ID { get; set; } - [JsonPropertyName("name")] - public string Name { get; set; } - [JsonPropertyName("sender_id")] - public string SenderID { get; set; } - [JsonPropertyName("sender_mode")] - public string SenderMode { get; set; } - [JsonPropertyName("show_channels")] - public bool ShowChannels { get; set; } - [JsonPropertyName("skip_push")] - public bool SkipPush { get; set; } - [JsonPropertyName("skip_webhook")] - public bool SkipWebhook { get; set; } - [JsonPropertyName("status")] - public string Status { get; set; } - [JsonPropertyName("updated_at")] - public DateTime UpdatedAt { get; set; } - [JsonPropertyName("segment_ids")] - public List SegmentIds { get; set; } - [JsonPropertyName("segments")] - public List Segments { get; set; } - [JsonPropertyName("user_ids")] - public List UserIds { get; set; } - [JsonPropertyName("users")] - public List Users { get; set; } - [JsonPropertyName("stats")] - public CampaignStatsResponse Stats { get; set; } - [JsonPropertyName("scheduled_for")] - public DateTime? ScheduledFor { get; set; } - [JsonPropertyName("stop_at")] - public DateTime? StopAt { get; set; } - [JsonPropertyName("channel_template")] - public CampaignChannelTemplate? ChannelTemplate { get; set; } - [JsonPropertyName("message_template")] - public CampaignMessageTemplate? MessageTemplate { get; set; } - [JsonPropertyName("sender")] - public UserResponse? Sender { get; set; } - } - public class CampaignStartedEvent - { - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("custom")] - public object Custom { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("received_at")] - public DateTime? ReceivedAt { get; set; } - [JsonPropertyName("campaign")] - public CampaignResponse? Campaign { get; set; } - } - public class CampaignStatsResponse - { - [JsonPropertyName("progress")] - public double Progress { get; set; } - [JsonPropertyName("stats_channels_created")] - public int StatsChannelsCreated { get; set; } - [JsonPropertyName("stats_completed_at")] - public DateTime StatsCompletedAt { get; set; } - [JsonPropertyName("stats_messages_sent")] - public int StatsMessagesSent { get; set; } - [JsonPropertyName("stats_started_at")] - public DateTime StatsStartedAt { get; set; } - [JsonPropertyName("stats_users_read")] - public int StatsUsersRead { get; set; } - [JsonPropertyName("stats_users_sent")] - public int StatsUsersSent { get; set; } - } - public class Channel - { - [JsonPropertyName("auto_translation_language")] - public string AutoTranslationLanguage { get; set; } - [JsonPropertyName("cid")] - public string Cid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("disabled")] - public bool Disabled { get; set; } - [JsonPropertyName("frozen")] - public bool Frozen { get; set; } - [JsonPropertyName("id")] - public string ID { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } + [JsonPropertyName("disabled")] + public bool Disabled { get; set; } + [JsonPropertyName("frozen")] + public bool Frozen { get; set; } + [JsonPropertyName("id")] + public string ID { get; set; } + [JsonPropertyName("type")] + public string Type { get; set; } [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("custom")] @@ -2440,6 +1733,10 @@ public class Channel public DateTime? LastMessageAt { get; set; } [JsonPropertyName("member_count")] public int? MemberCount { get; set; } + [JsonPropertyName("message_count")] + public int? MessageCount { get; set; } + [JsonPropertyName("message_count_updated_at")] + public DateTime? MessageCountUpdatedAt { get; set; } [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("active_live_locations")] @@ -2457,6 +1754,7 @@ public class Channel [JsonPropertyName("truncated_by")] public User? TruncatedBy { get; set; } } + public class ChannelConfig { [JsonPropertyName("automod")] @@ -2465,6 +1763,8 @@ public class ChannelConfig public string AutomodBehavior { get; set; } [JsonPropertyName("connect_events")] public bool ConnectEvents { get; set; } + [JsonPropertyName("count_messages")] + public bool CountMessages { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom_events")] @@ -2524,6 +1824,7 @@ public class ChannelConfig [JsonPropertyName("automod_thresholds")] public Thresholds? AutomodThresholds { get; set; } } + public class ChannelConfigWithInfo { [JsonPropertyName("automod")] @@ -2532,6 +1833,8 @@ public class ChannelConfigWithInfo public string AutomodBehavior { get; set; } [JsonPropertyName("connect_events")] public bool ConnectEvents { get; set; } + [JsonPropertyName("count_messages")] + public bool CountMessages { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom_events")] @@ -2593,106 +1896,7 @@ public class ChannelConfigWithInfo [JsonPropertyName("grants")] public Dictionary> Grants { get; set; } } - public class ChannelCreatedEvent - { - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class ChannelDeletedEvent - { - [JsonPropertyName("channel_id")] - public string ChannelID { get; set; } - [JsonPropertyName("channel_member_count")] - public int ChannelMemberCount { get; set; } - [JsonPropertyName("channel_type")] - public string ChannelType { get; set; } - [JsonPropertyName("cid")] - public string Cid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("team")] - public string? Team { get; set; } - [JsonPropertyName("channel")] - public ChannelResponse? Channel { get; set; } - } - public class ChannelExport - { - [JsonPropertyName("cid")] - public string? Cid { get; set; } - [JsonPropertyName("id")] - public string? ID { get; set; } - [JsonPropertyName("messages_since")] - public DateTime? MessagesSince { get; set; } - [JsonPropertyName("messages_until")] - public DateTime? MessagesUntil { get; set; } - [JsonPropertyName("type")] - public string? Type { get; set; } - } - public class ChannelFrozenEvent - { - [JsonPropertyName("channel_id")] - public string ChannelID { get; set; } - [JsonPropertyName("channel_type")] - public string ChannelType { get; set; } - [JsonPropertyName("cid")] - public string Cid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class ChannelHiddenEvent - { - [JsonPropertyName("channel_id")] - public string ChannelID { get; set; } - [JsonPropertyName("channel_member_count")] - public int ChannelMemberCount { get; set; } - [JsonPropertyName("channel_type")] - public string ChannelType { get; set; } - [JsonPropertyName("cid")] - public string Cid { get; set; } - [JsonPropertyName("clear_history")] - public bool ClearHistory { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("channel")] - public ChannelResponse? Channel { get; set; } - [JsonPropertyName("user")] - public User? User { get; set; } - } - public class ChannelInput - { - [JsonPropertyName("auto_translation_enabled")] - public bool? AutoTranslationEnabled { get; set; } - [JsonPropertyName("auto_translation_language")] - public string? AutoTranslationLanguage { get; set; } - [JsonPropertyName("created_by_id")] - public string? CreatedByID { get; set; } - [JsonPropertyName("disabled")] - public bool? Disabled { get; set; } - [JsonPropertyName("frozen")] - public bool? Frozen { get; set; } - [JsonPropertyName("team")] - public string? Team { get; set; } - [JsonPropertyName("truncated_by_id")] - public string? TruncatedByID { get; set; } - [JsonPropertyName("invites")] - public List Invites { get; set; } - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("config_overrides")] - public ChannelConfig? ConfigOverrides { get; set; } - [JsonPropertyName("created_by")] - public UserRequest? CreatedBy { get; set; } - [JsonPropertyName("custom")] - public object Custom { get; set; } - } + public class ChannelMember { [JsonPropertyName("banned")] @@ -2731,57 +1935,12 @@ public class ChannelMember public string? Status { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + [JsonPropertyName("deleted_messages")] + public List DeletedMessages { get; set; } [JsonPropertyName("user")] public UserResponse? User { get; set; } } - public class ChannelMemberResponse - { - [JsonPropertyName("banned")] - public bool Banned { get; set; } - [JsonPropertyName("channel_role")] - public string ChannelRole { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("notifications_muted")] - public bool NotificationsMuted { get; set; } - [JsonPropertyName("shadow_banned")] - public bool ShadowBanned { get; set; } - [JsonPropertyName("updated_at")] - public DateTime UpdatedAt { get; set; } - [JsonPropertyName("custom")] - public object Custom { get; set; } - [JsonPropertyName("archived_at")] - public DateTime? ArchivedAt { get; set; } - [JsonPropertyName("ban_expires")] - public DateTime? BanExpires { get; set; } - [JsonPropertyName("deleted_at")] - public DateTime? DeletedAt { get; set; } - [JsonPropertyName("invite_accepted_at")] - public DateTime? InviteAcceptedAt { get; set; } - [JsonPropertyName("invite_rejected_at")] - public DateTime? InviteRejectedAt { get; set; } - [JsonPropertyName("invited")] - public bool? Invited { get; set; } - [JsonPropertyName("is_moderator")] - public bool? IsModerator { get; set; } - [JsonPropertyName("pinned_at")] - public DateTime? PinnedAt { get; set; } - [JsonPropertyName("role")] - public string? Role { get; set; } - [JsonPropertyName("status")] - public string? Status { get; set; } - [JsonPropertyName("user_id")] - public string? UserID { get; set; } - [JsonPropertyName("user")] - public UserResponse? User { get; set; } - } - public class ChannelMessages - { - [JsonPropertyName("messages")] - public List Messages { get; set; } - [JsonPropertyName("channel")] - public ChannelResponse? Channel { get; set; } - } + public class ChannelMute { [JsonPropertyName("created_at")] @@ -2795,23 +1954,11 @@ public class ChannelMute [JsonPropertyName("user")] public UserResponse? User { get; set; } } - public class ChannelMutedEvent - { - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } + public class ChannelOwnCapability { } - public class ChannelPushPreferences - { - [JsonPropertyName("chat_level")] - public string? ChatLevel { get; set; } - [JsonPropertyName("disabled_until")] - public DateTime? DisabledUntil { get; set; } - } + public class ChannelResponse { [JsonPropertyName("cid")] @@ -2848,6 +1995,8 @@ public class ChannelResponse public DateTime? LastMessageAt { get; set; } [JsonPropertyName("member_count")] public int? MemberCount { get; set; } + [JsonPropertyName("message_count")] + public int? MessageCount { get; set; } [JsonPropertyName("mute_expires_at")] public DateTime? MuteExpiresAt { get; set; } [JsonPropertyName("muted")] @@ -2867,232 +2016,15 @@ public class ChannelResponse [JsonPropertyName("truncated_by")] public UserResponse? TruncatedBy { get; set; } } - public class ChannelStateResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("messages")] - public List Messages { get; set; } - [JsonPropertyName("pinned_messages")] - public List PinnedMessages { get; set; } - [JsonPropertyName("threads")] - public List Threads { get; set; } - [JsonPropertyName("hidden")] - public bool? Hidden { get; set; } - [JsonPropertyName("hide_messages_before")] - public DateTime? HideMessagesBefore { get; set; } - [JsonPropertyName("watcher_count")] - public int? WatcherCount { get; set; } - [JsonPropertyName("active_live_locations")] - public List ActiveLiveLocations { get; set; } - [JsonPropertyName("pending_messages")] - public List PendingMessages { get; set; } - [JsonPropertyName("read")] - public List Read { get; set; } - [JsonPropertyName("watchers")] - public List Watchers { get; set; } - [JsonPropertyName("channel")] - public ChannelResponse? Channel { get; set; } - [JsonPropertyName("draft")] - public DraftResponse? Draft { get; set; } - [JsonPropertyName("membership")] - public ChannelMember? Membership { get; set; } - [JsonPropertyName("push_preferences")] - public ChannelPushPreferences? PushPreferences { get; set; } - } - public class ChannelStateResponseFields - { - [JsonPropertyName("members")] - public List Members { get; set; } - [JsonPropertyName("messages")] - public List Messages { get; set; } - [JsonPropertyName("pinned_messages")] - public List PinnedMessages { get; set; } - [JsonPropertyName("threads")] - public List Threads { get; set; } - [JsonPropertyName("hidden")] - public bool? Hidden { get; set; } - [JsonPropertyName("hide_messages_before")] - public DateTime? HideMessagesBefore { get; set; } - [JsonPropertyName("watcher_count")] - public int? WatcherCount { get; set; } - [JsonPropertyName("active_live_locations")] - public List ActiveLiveLocations { get; set; } - [JsonPropertyName("pending_messages")] - public List PendingMessages { get; set; } - [JsonPropertyName("read")] - public List Read { get; set; } - [JsonPropertyName("watchers")] - public List Watchers { get; set; } - [JsonPropertyName("channel")] - public ChannelResponse? Channel { get; set; } - [JsonPropertyName("draft")] - public DraftResponse? Draft { get; set; } - [JsonPropertyName("membership")] - public ChannelMember? Membership { get; set; } - [JsonPropertyName("push_preferences")] - public ChannelPushPreferences? PushPreferences { get; set; } - } - public class ChannelTruncatedEvent - { - [JsonPropertyName("channel_id")] - public string ChannelID { get; set; } - [JsonPropertyName("channel_member_count")] - public int ChannelMemberCount { get; set; } - [JsonPropertyName("channel_type")] - public string ChannelType { get; set; } - [JsonPropertyName("cid")] - public string Cid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("channel")] - public ChannelResponse? Channel { get; set; } - } - public class ChannelTypeConfig - { - [JsonPropertyName("automod")] - public string Automod { get; set; } - [JsonPropertyName("automod_behavior")] - public string AutomodBehavior { get; set; } - [JsonPropertyName("connect_events")] - public bool ConnectEvents { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("custom_events")] - public bool CustomEvents { get; set; } - [JsonPropertyName("mark_messages_pending")] - public bool MarkMessagesPending { get; set; } - [JsonPropertyName("max_message_length")] - public int MaxMessageLength { get; set; } - [JsonPropertyName("mutes")] - public bool Mutes { get; set; } - [JsonPropertyName("name")] - public string Name { get; set; } - [JsonPropertyName("polls")] - public bool Polls { get; set; } - [JsonPropertyName("push_notifications")] - public bool PushNotifications { get; set; } - [JsonPropertyName("quotes")] - public bool Quotes { get; set; } - [JsonPropertyName("reactions")] - public bool Reactions { get; set; } - [JsonPropertyName("read_events")] - public bool ReadEvents { get; set; } - [JsonPropertyName("reminders")] - public bool Reminders { get; set; } - [JsonPropertyName("replies")] - public bool Replies { get; set; } - [JsonPropertyName("search")] - public bool Search { get; set; } - [JsonPropertyName("shared_locations")] - public bool SharedLocations { get; set; } - [JsonPropertyName("skip_last_msg_update_for_system_msgs")] - public bool SkipLastMsgUpdateForSystemMsgs { get; set; } - [JsonPropertyName("typing_events")] - public bool TypingEvents { get; set; } - [JsonPropertyName("updated_at")] - public DateTime UpdatedAt { get; set; } - [JsonPropertyName("uploads")] - public bool Uploads { get; set; } - [JsonPropertyName("url_enrichment")] - public bool UrlEnrichment { get; set; } - [JsonPropertyName("user_message_reminders")] - public bool UserMessageReminders { get; set; } - [JsonPropertyName("commands")] - public List Commands { get; set; } - [JsonPropertyName("permissions")] - public List Permissions { get; set; } - [JsonPropertyName("grants")] - public Dictionary> Grants { get; set; } - [JsonPropertyName("blocklist")] - public string? Blocklist { get; set; } - [JsonPropertyName("blocklist_behavior")] - public string? BlocklistBehavior { get; set; } - [JsonPropertyName("partition_size")] - public int? PartitionSize { get; set; } - [JsonPropertyName("partition_ttl")] - public string? PartitionTtl { get; set; } - [JsonPropertyName("allowed_flag_reasons")] - public List AllowedFlagReasons { get; set; } - [JsonPropertyName("blocklists")] - public List Blocklists { get; set; } - [JsonPropertyName("automod_thresholds")] - public Thresholds? AutomodThresholds { get; set; } - } - public class ChannelUnFrozenEvent - { - [JsonPropertyName("channel_id")] - public string ChannelID { get; set; } - [JsonPropertyName("channel_type")] - public string ChannelType { get; set; } - [JsonPropertyName("cid")] - public string Cid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class ChannelUnmutedEvent - { - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class ChannelUpdatedEvent - { - [JsonPropertyName("channel_id")] - public string ChannelID { get; set; } - [JsonPropertyName("channel_member_count")] - public int ChannelMemberCount { get; set; } - [JsonPropertyName("channel_type")] - public string ChannelType { get; set; } - [JsonPropertyName("cid")] - public string Cid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("team")] - public string? Team { get; set; } - [JsonPropertyName("channel")] - public ChannelResponse? Channel { get; set; } - [JsonPropertyName("message")] - public Message? Message { get; set; } - [JsonPropertyName("user")] - public User? User { get; set; } - } - public class ChannelVisibleEvent - { - [JsonPropertyName("channel_id")] - public string ChannelID { get; set; } - [JsonPropertyName("channel_type")] - public string ChannelType { get; set; } - [JsonPropertyName("cid")] - public string Cid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("user")] - public User? User { get; set; } - } - public class ChatActivityStatsResponse - { - [JsonPropertyName("Messages")] - public MessageStatsResponse? Messages { get; set; } - } - public class CheckExternalStorageResponse + + public class CheckExternalStorageResponse { [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("file_url")] public string FileUrl { get; set; } } + public class CheckPushResponse { [JsonPropertyName("duration")] @@ -3112,6 +2044,7 @@ public class CheckPushResponse [JsonPropertyName("rendered_message")] public Dictionary RenderedMessage { get; set; } } + public class CheckResponse { [JsonPropertyName("duration")] @@ -3125,6 +2058,7 @@ public class CheckResponse [JsonPropertyName("item")] public ReviewQueueItemResponse? Item { get; set; } } + public class CheckSNSResponse { [JsonPropertyName("duration")] @@ -3136,6 +2070,7 @@ public class CheckSNSResponse [JsonPropertyName("data")] public object Data { get; set; } } + public class CheckSQSResponse { [JsonPropertyName("duration")] @@ -3147,31 +2082,7 @@ public class CheckSQSResponse [JsonPropertyName("data")] public object Data { get; set; } } - public class ClientOSDataResponse - { - [JsonPropertyName("architecture")] - public string? Architecture { get; set; } - [JsonPropertyName("name")] - public string? Name { get; set; } - [JsonPropertyName("version")] - public string? Version { get; set; } - } - public class ClosedCaptionEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("closed_caption")] - public CallClosedCaption ClosedCaption { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class CollectUserFeedbackResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - } + public class Command { [JsonPropertyName("args")] @@ -3187,6 +2098,7 @@ public class Command [JsonPropertyName("updated_at")] public DateTime? UpdatedAt { get; set; } } + public class CommentAddedEvent { [JsonPropertyName("created_at")] @@ -3199,11 +2111,14 @@ public class CommentAddedEvent public object Custom { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class CommentDeletedEvent { [JsonPropertyName("created_at")] @@ -3216,11 +2131,14 @@ public class CommentDeletedEvent public object Custom { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class CommentReactionAddedEvent { [JsonPropertyName("created_at")] @@ -3235,11 +2153,14 @@ public class CommentReactionAddedEvent public FeedsReactionResponse Reaction { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class CommentReactionDeletedEvent { [JsonPropertyName("created_at")] @@ -3254,9 +2175,12 @@ public class CommentReactionDeletedEvent public FeedsReactionResponse Reaction { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } } + public class CommentReactionUpdatedEvent { [JsonPropertyName("created_at")] @@ -3271,11 +2195,14 @@ public class CommentReactionUpdatedEvent public FeedsReactionResponse Reaction { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class CommentResponse { [JsonPropertyName("confidence_score")] @@ -3327,6 +2254,7 @@ public class CommentResponse [JsonPropertyName("reaction_groups")] public Dictionary ReactionGroups { get; set; } } + public class CommentUpdatedEvent { [JsonPropertyName("created_at")] @@ -3339,11 +2267,22 @@ public class CommentUpdatedEvent public object Custom { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + + public class CompositeAppSettings + { + [JsonPropertyName("json_encoded_settings")] + public string? JsonEncodedSettings { get; set; } + [JsonPropertyName("url")] + public string? Url { get; set; } + } + public class ConfigOverrides { [JsonPropertyName("commands")] @@ -3354,6 +2293,8 @@ public class ConfigOverrides public string? Blocklist { get; set; } [JsonPropertyName("blocklist_behavior")] public string? BlocklistBehavior { get; set; } + [JsonPropertyName("count_messages")] + public bool? CountMessages { get; set; } [JsonPropertyName("max_message_length")] public int? MaxMessageLength { get; set; } [JsonPropertyName("quotes")] @@ -3373,6 +2314,7 @@ public class ConfigOverrides [JsonPropertyName("user_message_reminders")] public bool? UserMessageReminders { get; set; } } + public class ConfigResponse { [JsonPropertyName("async")] @@ -3399,6 +2341,8 @@ public class ConfigResponse public AutomodToxicityConfig? AutomodToxicityConfig { get; set; } [JsonPropertyName("block_list_config")] public BlockListConfig? BlockListConfig { get; set; } + [JsonPropertyName("llm_config")] + public LLMConfig? LlmConfig { get; set; } [JsonPropertyName("rule_builder_config")] public RuleBuilderConfig? RuleBuilderConfig { get; set; } [JsonPropertyName("velocity_filter_config")] @@ -3406,6 +2350,7 @@ public class ConfigResponse [JsonPropertyName("video_call_rule_config")] public VideoCallRuleConfig? VideoCallRuleConfig { get; set; } } + public class ContentCountRuleParameters { [JsonPropertyName("threshold")] @@ -3413,13 +2358,7 @@ public class ContentCountRuleParameters [JsonPropertyName("time_window")] public string TimeWindow { get; set; } } - public class CountByMinuteResponse - { - [JsonPropertyName("count")] - public int Count { get; set; } - [JsonPropertyName("start_ts")] - public DateTime StartTs { get; set; } - } + public class CreateBlockListResponse { [JsonPropertyName("duration")] @@ -3427,117 +2366,21 @@ public class CreateBlockListResponse [JsonPropertyName("blocklist")] public BlockListResponse? Blocklist { get; set; } } - public class CreateCallTypeResponse + + public class CreateExternalStorageResponse { - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } [JsonPropertyName("duration")] public string Duration { get; set; } - [JsonPropertyName("name")] - public string Name { get; set; } - [JsonPropertyName("updated_at")] - public DateTime UpdatedAt { get; set; } - [JsonPropertyName("grants")] - public Dictionary> Grants { get; set; } - [JsonPropertyName("notification_settings")] - public NotificationSettings NotificationSettings { get; set; } - [JsonPropertyName("settings")] - public CallSettingsResponse Settings { get; set; } - [JsonPropertyName("external_storage")] - public string? ExternalStorage { get; set; } } - public class CreateChannelTypeResponse - { - [JsonPropertyName("automod")] - public string Automod { get; set; } - [JsonPropertyName("automod_behavior")] - public string AutomodBehavior { get; set; } - [JsonPropertyName("connect_events")] - public bool ConnectEvents { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("custom_events")] - public bool CustomEvents { get; set; } - [JsonPropertyName("duration")] - public string Duration { get; set; } - [JsonPropertyName("mark_messages_pending")] - public bool MarkMessagesPending { get; set; } - [JsonPropertyName("max_message_length")] - public int MaxMessageLength { get; set; } - [JsonPropertyName("mutes")] - public bool Mutes { get; set; } - [JsonPropertyName("name")] - public string Name { get; set; } - [JsonPropertyName("polls")] - public bool Polls { get; set; } - [JsonPropertyName("push_notifications")] - public bool PushNotifications { get; set; } - [JsonPropertyName("quotes")] - public bool Quotes { get; set; } - [JsonPropertyName("reactions")] - public bool Reactions { get; set; } - [JsonPropertyName("read_events")] - public bool ReadEvents { get; set; } - [JsonPropertyName("reminders")] - public bool Reminders { get; set; } - [JsonPropertyName("replies")] - public bool Replies { get; set; } - [JsonPropertyName("search")] - public bool Search { get; set; } - [JsonPropertyName("shared_locations")] - public bool SharedLocations { get; set; } - [JsonPropertyName("skip_last_msg_update_for_system_msgs")] - public bool SkipLastMsgUpdateForSystemMsgs { get; set; } - [JsonPropertyName("typing_events")] - public bool TypingEvents { get; set; } - [JsonPropertyName("updated_at")] - public DateTime UpdatedAt { get; set; } - [JsonPropertyName("uploads")] - public bool Uploads { get; set; } - [JsonPropertyName("url_enrichment")] - public bool UrlEnrichment { get; set; } - [JsonPropertyName("user_message_reminders")] - public bool UserMessageReminders { get; set; } - [JsonPropertyName("commands")] - public List Commands { get; set; } - [JsonPropertyName("permissions")] - public List Permissions { get; set; } - [JsonPropertyName("grants")] - public Dictionary> Grants { get; set; } - [JsonPropertyName("blocklist")] - public string? Blocklist { get; set; } - [JsonPropertyName("blocklist_behavior")] - public string? BlocklistBehavior { get; set; } - [JsonPropertyName("partition_size")] - public int? PartitionSize { get; set; } - [JsonPropertyName("partition_ttl")] - public string? PartitionTtl { get; set; } - [JsonPropertyName("allowed_flag_reasons")] - public List AllowedFlagReasons { get; set; } - [JsonPropertyName("blocklists")] - public List Blocklists { get; set; } - [JsonPropertyName("automod_thresholds")] - public Thresholds? AutomodThresholds { get; set; } - } - public class CreateCommandResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - [JsonPropertyName("command")] - public Command? Command { get; set; } - } - public class CreateExternalStorageResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - } - public class CreateFeedGroupResponse + + public class CreateFeedGroupResponse { [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("feed_group")] public FeedGroupResponse FeedGroup { get; set; } } + public class CreateFeedViewResponse { [JsonPropertyName("duration")] @@ -3545,6 +2388,7 @@ public class CreateFeedViewResponse [JsonPropertyName("feed_view")] public FeedViewResponse FeedView { get; set; } } + public class CreateFeedsBatchResponse { [JsonPropertyName("duration")] @@ -3552,6 +2396,7 @@ public class CreateFeedsBatchResponse [JsonPropertyName("feeds")] public List Feeds { get; set; } } + public class CreateGuestResponse { [JsonPropertyName("access_token")] @@ -3561,6 +2406,7 @@ public class CreateGuestResponse [JsonPropertyName("user")] public UserResponse User { get; set; } } + public class CreateImportResponse { [JsonPropertyName("duration")] @@ -3568,6 +2414,7 @@ public class CreateImportResponse [JsonPropertyName("import_task")] public ImportTask? ImportTask { get; set; } } + public class CreateImportURLResponse { [JsonPropertyName("duration")] @@ -3577,6 +2424,15 @@ public class CreateImportURLResponse [JsonPropertyName("upload_url")] public string UploadUrl { get; set; } } + + public class CreateMembershipLevelResponse + { + [JsonPropertyName("duration")] + public string Duration { get; set; } + [JsonPropertyName("membership_level")] + public MembershipLevelResponse MembershipLevel { get; set; } + } + public class CreateRoleResponse { [JsonPropertyName("duration")] @@ -3584,6 +2440,7 @@ public class CreateRoleResponse [JsonPropertyName("role")] public Role Role { get; set; } } + public class CustomActionRequest { [JsonPropertyName("id")] @@ -3591,6 +2448,7 @@ public class CustomActionRequest [JsonPropertyName("options")] public object Options { get; set; } } + public class CustomCheckFlag { [JsonPropertyName("type")] @@ -3602,6 +2460,7 @@ public class CustomCheckFlag [JsonPropertyName("custom")] public object Custom { get; set; } } + public class CustomCheckResponse { [JsonPropertyName("duration")] @@ -3613,66 +2472,13 @@ public class CustomCheckResponse [JsonPropertyName("item")] public ReviewQueueItemResponse? Item { get; set; } } - public class CustomVideoEvent - { - [JsonPropertyName("call_cid")] - public string CallCid { get; set; } - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("custom")] - public object Custom { get; set; } - [JsonPropertyName("user")] - public UserResponse User { get; set; } - [JsonPropertyName("type")] - public string Type { get; set; } - } - public class DailyAggregateCallDurationReportResponse - { - [JsonPropertyName("date")] - public string Date { get; set; } - [JsonPropertyName("report")] - public CallDurationReport Report { get; set; } - } - public class DailyAggregateCallParticipantCountReportResponse - { - [JsonPropertyName("date")] - public string Date { get; set; } - [JsonPropertyName("report")] - public CallParticipantCountReport Report { get; set; } - } - public class DailyAggregateCallsPerDayReportResponse - { - [JsonPropertyName("date")] - public string Date { get; set; } - [JsonPropertyName("report")] - public CallsPerDayReport Report { get; set; } - } - public class DailyAggregateQualityScoreReportResponse - { - [JsonPropertyName("date")] - public string Date { get; set; } - [JsonPropertyName("report")] - public QualityScoreReport Report { get; set; } - } - public class DailyAggregateSDKUsageReportResponse - { - [JsonPropertyName("date")] - public string Date { get; set; } - [JsonPropertyName("report")] - public SDKUsageReport Report { get; set; } - } - public class DailyAggregateUserFeedbackReportResponse - { - [JsonPropertyName("date")] - public string Date { get; set; } - [JsonPropertyName("report")] - public UserFeedbackReport Report { get; set; } - } + public class Data { [JsonPropertyName("id")] public string ID { get; set; } } + public class DataDogInfo { [JsonPropertyName("api_key")] @@ -3682,6 +2488,7 @@ public class DataDogInfo [JsonPropertyName("site")] public string? Site { get; set; } } + public class DeactivateUserResponse { [JsonPropertyName("duration")] @@ -3689,6 +2496,7 @@ public class DeactivateUserResponse [JsonPropertyName("user")] public UserResponse? User { get; set; } } + public class DeactivateUsersResponse { [JsonPropertyName("duration")] @@ -3696,6 +2504,7 @@ public class DeactivateUsersResponse [JsonPropertyName("task_id")] public string TaskID { get; set; } } + public class DecayFunctionConfig { [JsonPropertyName("base")] @@ -3711,13 +2520,15 @@ public class DecayFunctionConfig [JsonPropertyName("scale")] public string? Scale { get; set; } } + public class DeleteActivitiesResponse { [JsonPropertyName("duration")] public string Duration { get; set; } - [JsonPropertyName("deleted_activity_ids")] - public List DeletedActivityIds { get; set; } + [JsonPropertyName("deleted_ids")] + public List DeletedIds { get; set; } } + public class DeleteActivityReactionResponse { [JsonPropertyName("duration")] @@ -3727,16 +2538,19 @@ public class DeleteActivityReactionResponse [JsonPropertyName("reaction")] public FeedsReactionResponse Reaction { get; set; } } + public class DeleteActivityResponse { [JsonPropertyName("duration")] public string Duration { get; set; } } + public class DeleteBookmarkFolderResponse { [JsonPropertyName("duration")] public string Duration { get; set; } } + public class DeleteBookmarkResponse { [JsonPropertyName("duration")] @@ -3744,45 +2558,7 @@ public class DeleteBookmarkResponse [JsonPropertyName("bookmark")] public BookmarkResponse Bookmark { get; set; } } - public class DeleteCallResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - [JsonPropertyName("call")] - public CallResponse Call { get; set; } - [JsonPropertyName("task_id")] - public string? TaskID { get; set; } - } - public class DeleteChannelResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - [JsonPropertyName("channel")] - public ChannelResponse? Channel { get; set; } - } - public class DeleteChannelsResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - [JsonPropertyName("task_id")] - public string? TaskID { get; set; } - [JsonPropertyName("result")] - public Dictionary Result { get; set; } - } - public class DeleteChannelsResultResponse - { - [JsonPropertyName("status")] - public string Status { get; set; } - [JsonPropertyName("error")] - public string? Error { get; set; } - } - public class DeleteCommandResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - [JsonPropertyName("name")] - public string Name { get; set; } - } + public class DeleteCommentReactionResponse { [JsonPropertyName("duration")] @@ -3792,26 +2568,31 @@ public class DeleteCommentReactionResponse [JsonPropertyName("reaction")] public FeedsReactionResponse Reaction { get; set; } } + public class DeleteCommentResponse { [JsonPropertyName("duration")] public string Duration { get; set; } } + public class DeleteExternalStorageResponse { [JsonPropertyName("duration")] public string Duration { get; set; } } + public class DeleteFeedGroupResponse { [JsonPropertyName("duration")] public string Duration { get; set; } } + public class DeleteFeedResponse { [JsonPropertyName("duration")] public string Duration { get; set; } } + public class DeleteFeedUserDataResponse { [JsonPropertyName("deleted_activities")] @@ -3825,52 +2606,37 @@ public class DeleteFeedUserDataResponse [JsonPropertyName("duration")] public string Duration { get; set; } } + public class DeleteFeedViewResponse { [JsonPropertyName("duration")] public string Duration { get; set; } } - public class DeleteMessageResponse + + public class DeleteMessageRequest { - [JsonPropertyName("duration")] - public string Duration { get; set; } - [JsonPropertyName("message")] - public MessageResponse Message { get; set; } + [JsonPropertyName("hard_delete")] + public bool? HardDelete { get; set; } } + public class DeleteModerationConfigResponse { [JsonPropertyName("duration")] public string Duration { get; set; } } + public class DeleteModerationTemplateResponse { [JsonPropertyName("duration")] public string Duration { get; set; } } - public class DeleteReactionResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - [JsonPropertyName("message")] - public MessageResponse Message { get; set; } - [JsonPropertyName("reaction")] - public ReactionResponse Reaction { get; set; } - } - public class DeleteRecordingResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - } - public class DeleteReminderResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - } - public class DeleteTranscriptionResponse + + public class DeleteReactionRequest { - [JsonPropertyName("duration")] - public string Duration { get; set; } + [JsonPropertyName("hard_delete")] + public bool? HardDelete { get; set; } } + public class DeleteUserRequest { [JsonPropertyName("delete_conversation_channels")] @@ -3882,6 +2648,7 @@ public class DeleteUserRequest [JsonPropertyName("mark_messages_deleted")] public bool? MarkMessagesDeleted { get; set; } } + public class DeleteUsersResponse { [JsonPropertyName("duration")] @@ -3889,6 +2656,7 @@ public class DeleteUsersResponse [JsonPropertyName("task_id")] public string TaskID { get; set; } } + public class Device { [JsonPropertyName("created_at")] @@ -3908,13 +2676,7 @@ public class Device [JsonPropertyName("voip")] public bool? Voip { get; set; } } - public class DeviceDataResponse - { - [JsonPropertyName("name")] - public string? Name { get; set; } - [JsonPropertyName("version")] - public string? Version { get; set; } - } + public class DeviceErrorInfo { [JsonPropertyName("error_message")] @@ -3924,6 +2686,7 @@ public class DeviceErrorInfo [JsonPropertyName("provider_name")] public string ProviderName { get; set; } } + public class DeviceResponse { [JsonPropertyName("created_at")] @@ -3943,6 +2706,7 @@ public class DeviceResponse [JsonPropertyName("voip")] public bool? Voip { get; set; } } + public class DraftPayloadResponse { [JsonPropertyName("id")] @@ -3972,6 +2736,7 @@ public class DraftPayloadResponse [JsonPropertyName("mentioned_users")] public List MentionedUsers { get; set; } } + public class DraftResponse { [JsonPropertyName("channel_cid")] @@ -3989,29 +2754,7 @@ public class DraftResponse [JsonPropertyName("quoted_message")] public MessageResponse? QuotedMessage { get; set; } } - public class EdgeResponse - { - [JsonPropertyName("continent_code")] - public string ContinentCode { get; set; } - [JsonPropertyName("country_iso_code")] - public string CountryIsoCode { get; set; } - [JsonPropertyName("green")] - public int Green { get; set; } - [JsonPropertyName("id")] - public string ID { get; set; } - [JsonPropertyName("latency_test_url")] - public string LatencyTestUrl { get; set; } - [JsonPropertyName("latitude")] - public double Latitude { get; set; } - [JsonPropertyName("longitude")] - public double Longitude { get; set; } - [JsonPropertyName("red")] - public int Red { get; set; } - [JsonPropertyName("subdivision_iso_code")] - public string SubdivisionIsoCode { get; set; } - [JsonPropertyName("yellow")] - public int Yellow { get; set; } - } + public class EgressHLSResponse { [JsonPropertyName("playlist_url")] @@ -4019,6 +2762,7 @@ public class EgressHLSResponse [JsonPropertyName("status")] public string Status { get; set; } } + public class EgressRTMPResponse { [JsonPropertyName("name")] @@ -4030,6 +2774,7 @@ public class EgressRTMPResponse [JsonPropertyName("stream_url")] public string? StreamUrl { get; set; } } + public class EgressResponse { [JsonPropertyName("broadcasting")] @@ -4041,11 +2786,29 @@ public class EgressResponse [JsonPropertyName("hls")] public EgressHLSResponse? HLS { get; set; } } - public class EndCallResponse + + public class EgressTaskConfig + { + [JsonPropertyName("egress_user")] + public EgressUser? EgressUser { get; set; } + [JsonPropertyName("frame_recording_egress_config")] + public FrameRecordingEgressConfig? FrameRecordingEgressConfig { get; set; } + [JsonPropertyName("hls_egress_config")] + public HLSEgressConfig? HLSEgressConfig { get; set; } + [JsonPropertyName("rtmp_egress_config")] + public RTMPEgressConfig? RTMPEgressConfig { get; set; } + [JsonPropertyName("recording_egress_config")] + public RecordingEgressConfig? RecordingEgressConfig { get; set; } + [JsonPropertyName("stt_egress_config")] + public STTEgressConfig? SttEgressConfig { get; set; } + } + + public class EgressUser { - [JsonPropertyName("duration")] - public string Duration { get; set; } + [JsonPropertyName("token")] + public string? Token { get; set; } } + public class EnrichedActivity { [JsonPropertyName("foreign_id")] @@ -4073,6 +2836,7 @@ public class EnrichedActivity [JsonPropertyName("target")] public Data? Target { get; set; } } + public class EnrichedReaction { [JsonPropertyName("activity_id")] @@ -4102,6 +2866,53 @@ public class EnrichedReaction [JsonPropertyName("user")] public Data? User { get; set; } } + + public class EntityCreator + { + [JsonPropertyName("ban_count")] + public int BanCount { get; set; } + [JsonPropertyName("banned")] + public bool Banned { get; set; } + [JsonPropertyName("deleted_content_count")] + public int DeletedContentCount { get; set; } + [JsonPropertyName("id")] + public string ID { get; set; } + [JsonPropertyName("online")] + public bool Online { get; set; } + [JsonPropertyName("role")] + public string Role { get; set; } + [JsonPropertyName("custom")] + public object Custom { get; set; } + [JsonPropertyName("teams_role")] + public Dictionary TeamsRole { get; set; } + [JsonPropertyName("avg_response_time")] + public int? AvgResponseTime { get; set; } + [JsonPropertyName("ban_expires")] + public DateTime? BanExpires { get; set; } + [JsonPropertyName("created_at")] + public DateTime? CreatedAt { get; set; } + [JsonPropertyName("deactivated_at")] + public DateTime? DeactivatedAt { get; set; } + [JsonPropertyName("deleted_at")] + public DateTime? DeletedAt { get; set; } + [JsonPropertyName("invisible")] + public bool? Invisible { get; set; } + [JsonPropertyName("language")] + public string? Language { get; set; } + [JsonPropertyName("last_active")] + public DateTime? LastActive { get; set; } + [JsonPropertyName("last_engaged_at")] + public DateTime? LastEngagedAt { get; set; } + [JsonPropertyName("revoke_tokens_issued_before")] + public DateTime? RevokeTokensIssuedBefore { get; set; } + [JsonPropertyName("updated_at")] + public DateTime? UpdatedAt { get; set; } + [JsonPropertyName("teams")] + public List Teams { get; set; } + [JsonPropertyName("privacy_settings")] + public PrivacySettings? PrivacySettings { get; set; } + } + public class EntityCreatorResponse { [JsonPropertyName("ban_count")] @@ -4159,6 +2970,7 @@ public class EntityCreatorResponse [JsonPropertyName("teams_role")] public Dictionary TeamsRole { get; set; } } + public class ErrorResult { [JsonPropertyName("type")] @@ -4168,6 +2980,7 @@ public class ErrorResult [JsonPropertyName("version")] public string? Version { get; set; } } + public class EventHook { [JsonPropertyName("created_at")] @@ -4213,6 +3026,7 @@ public class EventHook [JsonPropertyName("callback")] public AsyncModerationCallbackConfig? Callback { get; set; } } + public class EventNotificationSettings { [JsonPropertyName("enabled")] @@ -4222,41 +3036,16 @@ public class EventNotificationSettings [JsonPropertyName("fcm")] public FCM Fcm { get; set; } } - public class EventRequest - { - [JsonPropertyName("type")] - public string Type { get; set; } - [JsonPropertyName("parent_id")] - public string? ParentID { get; set; } - [JsonPropertyName("user_id")] - public string? UserID { get; set; } - [JsonPropertyName("custom")] - public object Custom { get; set; } - [JsonPropertyName("user")] - public UserRequest? User { get; set; } - } - public class EventResponse + + public class ExportFeedUserDataResponse { [JsonPropertyName("duration")] public string Duration { get; set; } - [JsonPropertyName("event")] - public WSEvent @Event { get; set; } + [JsonPropertyName("task_id")] + public string TaskID { get; set; } } - public class ExportChannelsResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - [JsonPropertyName("task_id")] - public string TaskID { get; set; } - } - public class ExportFeedUserDataResponse - { - [JsonPropertyName("duration")] - public string Duration { get; set; } - [JsonPropertyName("task_id")] - public string TaskID { get; set; } - } - public class ExportUserResponse + + public class ExportUserResponse { [JsonPropertyName("duration")] public string Duration { get; set; } @@ -4267,6 +3056,7 @@ public class ExportUserResponse [JsonPropertyName("user")] public UserResponse? User { get; set; } } + public class ExportUsersResponse { [JsonPropertyName("duration")] @@ -4274,6 +3064,37 @@ public class ExportUsersResponse [JsonPropertyName("task_id")] public string TaskID { get; set; } } + + public class ExternalStorage + { + [JsonPropertyName("abs_account_name")] + public string? AbsAccountName { get; set; } + [JsonPropertyName("abs_client_id")] + public string? AbsClientID { get; set; } + [JsonPropertyName("abs_client_secret")] + public string? AbsClientSecret { get; set; } + [JsonPropertyName("abs_tenant_id")] + public string? AbsTenantID { get; set; } + [JsonPropertyName("bucket")] + public string? Bucket { get; set; } + [JsonPropertyName("gcs_credentials")] + public string? GcsCredentials { get; set; } + [JsonPropertyName("path")] + public string? Path { get; set; } + [JsonPropertyName("s3_api_key")] + public string? S3APIKey { get; set; } + [JsonPropertyName("s3_custom_endpoint")] + public string? S3CustomEndpoint { get; set; } + [JsonPropertyName("s3_region")] + public string? S3Region { get; set; } + [JsonPropertyName("s3_secret_key")] + public string? S3SecretKey { get; set; } + [JsonPropertyName("storage_name")] + public string? StorageName { get; set; } + [JsonPropertyName("storage_type")] + public int? StorageType { get; set; } + } + public class ExternalStorageResponse { [JsonPropertyName("bucket")] @@ -4285,11 +3106,13 @@ public class ExternalStorageResponse [JsonPropertyName("type")] public string Type { get; set; } } + public class FCM { [JsonPropertyName("data")] public object Data { get; set; } } + public class FeedCreatedEvent { [JsonPropertyName("created_at")] @@ -4306,9 +3129,12 @@ public class FeedCreatedEvent public UserResponseCommonFields User { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } } + public class FeedDeletedEvent { [JsonPropertyName("created_at")] @@ -4319,36 +3145,48 @@ public class FeedDeletedEvent public object Custom { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class FeedGroup { + [JsonPropertyName("AggregationVersion")] + public int AggregationVersion { get; set; } [JsonPropertyName("AppPK")] public int AppPK { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } - [JsonPropertyName("DefaultViewID")] - public string DefaultViewID { get; set; } [JsonPropertyName("DefaultVisibility")] public string DefaultVisibility { get; set; } [JsonPropertyName("ID")] public string ID { get; set; } [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + [JsonPropertyName("ActivityProcessors")] + public List ActivityProcessors { get; set; } + [JsonPropertyName("ActivitySelectors")] + public List ActivitySelectors { get; set; } [JsonPropertyName("Custom")] public object Custom { get; set; } [JsonPropertyName("DeletedAt")] public DateTime? DeletedAt { get; set; } [JsonPropertyName("LastFeedGetAt")] public DateTime? LastFeedGetAt { get; set; } + [JsonPropertyName("Aggregation")] + public AggregationConfig? Aggregation { get; set; } [JsonPropertyName("Notification")] public NotificationConfig? Notification { get; set; } + [JsonPropertyName("Ranking")] + public RankingConfig? Ranking { get; set; } [JsonPropertyName("Stories")] public StoriesConfig? Stories { get; set; } } + public class FeedGroupChangedEvent { [JsonPropertyName("created_at")] @@ -4359,6 +3197,8 @@ public class FeedGroupChangedEvent public object Custom { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("feed_group")] @@ -4366,6 +3206,7 @@ public class FeedGroupChangedEvent [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class FeedGroupDeletedEvent { [JsonPropertyName("created_at")] @@ -4378,9 +3219,12 @@ public class FeedGroupDeletedEvent public object Custom { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } } + public class FeedGroupResponse { [JsonPropertyName("created_at")] @@ -4389,17 +3233,24 @@ public class FeedGroupResponse public string ID { get; set; } [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } - [JsonPropertyName("default_view_id")] - public string? DefaultViewID { get; set; } [JsonPropertyName("default_visibility")] public string? DefaultVisibility { get; set; } + [JsonPropertyName("activity_processors")] + public List ActivityProcessors { get; set; } + [JsonPropertyName("activity_selectors")] + public List ActivitySelectors { get; set; } + [JsonPropertyName("aggregation")] + public AggregationConfig? Aggregation { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("notification")] public NotificationConfig? Notification { get; set; } + [JsonPropertyName("ranking")] + public RankingConfig? Ranking { get; set; } [JsonPropertyName("stories")] public StoriesConfig? Stories { get; set; } } + public class FeedInput { [JsonPropertyName("description")] @@ -4415,6 +3266,7 @@ public class FeedInput [JsonPropertyName("custom")] public object Custom { get; set; } } + public class FeedMemberAddedEvent { [JsonPropertyName("created_at")] @@ -4427,11 +3279,14 @@ public class FeedMemberAddedEvent public FeedMemberResponse Member { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class FeedMemberRemovedEvent { [JsonPropertyName("created_at")] @@ -4444,22 +3299,28 @@ public class FeedMemberRemovedEvent public object Custom { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class FeedMemberRequest { [JsonPropertyName("user_id")] public string UserID { get; set; } [JsonPropertyName("invite")] public bool? Invite { get; set; } + [JsonPropertyName("membership_level")] + public string? MembershipLevel { get; set; } [JsonPropertyName("role")] public string? Role { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } } + public class FeedMemberResponse { [JsonPropertyName("created_at")] @@ -4479,6 +3340,7 @@ public class FeedMemberResponse [JsonPropertyName("custom")] public object Custom { get; set; } } + public class FeedMemberUpdatedEvent { [JsonPropertyName("created_at")] @@ -4491,14 +3353,18 @@ public class FeedMemberUpdatedEvent public FeedMemberResponse Member { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class FeedOwnCapability { } + public class FeedRequest { [JsonPropertyName("feed_group_id")] @@ -4520,14 +3386,15 @@ public class FeedRequest [JsonPropertyName("custom")] public object Custom { get; set; } } + public class FeedResponse { [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("description")] public string Description { get; set; } - [JsonPropertyName("fid")] - public string Fid { get; set; } + [JsonPropertyName("feed")] + public string Feed { get; set; } [JsonPropertyName("follower_count")] public int FollowerCount { get; set; } [JsonPropertyName("following_count")] @@ -4552,9 +3419,12 @@ public class FeedResponse public string? Visibility { get; set; } [JsonPropertyName("filter_tags")] public List FilterTags { get; set; } + [JsonPropertyName("own_follows")] + public List OwnFollows { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } } + public class FeedUpdatedEvent { [JsonPropertyName("created_at")] @@ -4567,15 +3437,18 @@ public class FeedUpdatedEvent public FeedResponse Feed { get; set; } [JsonPropertyName("type")] public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields? User { get; set; } } + public class FeedViewResponse { - [JsonPropertyName("view_id")] - public string ViewID { get; set; } + [JsonPropertyName("id")] + public string ID { get; set; } [JsonPropertyName("last_used_at")] public DateTime? LastUsedAt { get; set; } [JsonPropertyName("activity_processors")] @@ -4587,6 +3460,7 @@ public class FeedViewResponse [JsonPropertyName("ranking")] public RankingConfig? Ranking { get; set; } } + public class FeedsModerationTemplateConfig { [JsonPropertyName("config_key")] @@ -4594,6 +3468,7 @@ public class FeedsModerationTemplateConfig [JsonPropertyName("data_types")] public Dictionary DataTypes { get; set; } } + public class FeedsReactionResponse { [JsonPropertyName("activity_id")] @@ -4611,6 +3486,7 @@ public class FeedsReactionResponse [JsonPropertyName("custom")] public object Custom { get; set; } } + public class Field { [JsonPropertyName("short")] @@ -4620,6 +3496,7 @@ public class Field [JsonPropertyName("value")] public string Value { get; set; } } + public class FileUploadConfig { [JsonPropertyName("size_limit")] @@ -4633,6 +3510,7 @@ public class FileUploadConfig [JsonPropertyName("blocked_mime_types")] public List BlockedMimeTypes { get; set; } } + public class FileUploadResponse { [JsonPropertyName("duration")] @@ -4642,6 +3520,7 @@ public class FileUploadResponse [JsonPropertyName("thumb_url")] public string? ThumbUrl { get; set; } } + public class FirebaseConfig { [JsonPropertyName("apn_template")] @@ -4657,6 +3536,7 @@ public class FirebaseConfig [JsonPropertyName("server_key")] public string? ServerKey { get; set; } } + public class FirebaseConfigFields { [JsonPropertyName("enabled")] @@ -4672,71 +3552,49 @@ public class FirebaseConfigFields [JsonPropertyName("server_key")] public string? ServerKey { get; set; } } + public class Flag { [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } - [JsonPropertyName("created_by_automod")] - public bool CreatedByAutomod { get; set; } + [JsonPropertyName("entity_id")] + public string EntityID { get; set; } + [JsonPropertyName("entity_type")] + public string EntityType { get; set; } [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } - [JsonPropertyName("approved_at")] - public DateTime? ApprovedAt { get; set; } + [JsonPropertyName("result")] + public List Result { get; set; } + [JsonPropertyName("entity_creator_id")] + public string? EntityCreatorID { get; set; } + [JsonPropertyName("is_streamed_content")] + public bool? IsStreamedContent { get; set; } + [JsonPropertyName("moderation_payload_hash")] + public string? ModerationPayloadHash { get; set; } [JsonPropertyName("reason")] public string? Reason { get; set; } - [JsonPropertyName("rejected_at")] - public DateTime? RejectedAt { get; set; } - [JsonPropertyName("reviewed_at")] - public DateTime? ReviewedAt { get; set; } - [JsonPropertyName("reviewed_by")] - public string? ReviewedBy { get; set; } - [JsonPropertyName("target_message_id")] - public string? TargetMessageID { get; set; } + [JsonPropertyName("review_queue_item_id")] + public string? ReviewQueueItemID { get; set; } + [JsonPropertyName("type")] + public string? Type { get; set; } + [JsonPropertyName("labels")] + public List Labels { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } - [JsonPropertyName("details")] - public FlagDetails? Details { get; set; } - [JsonPropertyName("target_message")] - public Message? TargetMessage { get; set; } - [JsonPropertyName("target_user")] - public User? TargetUser { get; set; } + [JsonPropertyName("moderation_payload")] + public ModerationPayload? ModerationPayload { get; set; } + [JsonPropertyName("review_queue_item")] + public ReviewQueueItem? ReviewQueueItem { get; set; } [JsonPropertyName("user")] public User? User { get; set; } } + public class FlagContentOptions { [JsonPropertyName("reason")] public string Reason { get; set; } } - public class FlagDetails - { - [JsonPropertyName("original_text")] - public string OriginalText { get; set; } - [JsonPropertyName("Extra")] - public object Extra { get; set; } - [JsonPropertyName("automod")] - public AutomodDetails? Automod { get; set; } - } - public class FlagFeedback - { - [JsonPropertyName("created_at")] - public DateTime CreatedAt { get; set; } - [JsonPropertyName("message_id")] - public string MessageID { get; set; } - [JsonPropertyName("labels")] - public List