### Kubernetes Pod Status Example Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/how-to/install/troubleshooting.md An example output of `kubectl get pods`, illustrating various pod statuses including 'Running', 'Pending', and 'Init:0/4'. This helps in identifying pods that are not yet ready or are stuck in initialization. ```yaml NAME READY STATUS RESTARTS AGE demo-smtp-d98b789d7-5ntj6 1/1 Running 0 75m fake-aws-sns-76fb45cf4f-t6mg6 2/2 Running 0 75m fake-aws-sqs-6495cd7c98-w8f8w 2/2 Running 0 75m rabbitmq-external-0 0/1 Pending 0 78m reaper-84cfbf746d-wk8nc 1/1 Running 0 75m redis-ephemeral-master-0 1/1 Running 0 76m ``` -------------------------------- ### Install qemu-user-static on Debian Source: https://github.com/wireapp/wire-server/blob/develop/deploy/dockerephemeral/build/README.md Installs the qemu-user-static package and starts the binfmt-support service on Debian-based systems. ```bash apt-get install qemu-user-static sudo service binfmt-support start ``` -------------------------------- ### Build and Run Services Source: https://github.com/wireapp/wire-server/blob/develop/integration/README.md Commands to build the project, start all services, or selectively build and start services. Useful for setting up the development environment. ```bash make cr # OR make cr package=galley # OR ./dist/run-services ``` -------------------------------- ### Kubernetes Pod Initialization Status Example Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/how-to/install/troubleshooting.md An example output of `kubectl get pods` showing a pod in an 'Init:0/4' state, indicating that init containers are failing to complete. This is a common indicator of problems during the pod's startup sequence. ```yaml NAME READY STATUS RESTARTS AGE cassandra-migration-qgn7r 0/1 Init:0/4 0 12s demo-smtp-d98b789d7-5ntj6 1/1 Running 0 95m fake-aws-sns-76fb45cf4f-t6mg6 2/2 Running 0 95m fake-aws-sqs-6495cd7c98-w8f8w 2/2 Running 0 95m rabbitmq-external-0 0/1 Pending 0 98m reaper-84cfbf746d-wk8nc 1/1 Running 0 95m redis-ephemeral-master-0 1/1 Running 0 96m ``` -------------------------------- ### Deploy Outlook Add-in Configuration Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md Example configuration for the Outlook Add-in's values.yaml file, including host, API base URL, authorization endpoint, and client ID. ```yaml host: "outlook.example.com" # this entry has to be without https://!!! wireApiBaseUrl: "https://nginz-https.example.com" wireAuthorizationEndpoint: "https://webapp.example.com/auth" clientId: "" ``` -------------------------------- ### Run Webapp Locally Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/developer/developer/building.md Commands to set up and run the wire-webapp locally. This involves cloning the repository, installing dependencies, configuring environment variables, and starting the development server. ```bash yarn yarn start ``` -------------------------------- ### Kubernetes Pod Description Example (Init Container Failure) Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/how-to/install/troubleshooting.md A snippet from `kubectl describe pod`, detailing an init container ('gundeck-schema') that failed with an exit code of 1. This output is crucial for diagnosing why a pod is not starting correctly. ```yaml Name: cassandra-migrations-qgn7r Namespace: default Priority: 0 Node: kubenode1/172.16.0.129 Start Time: Wed, 27 Sep 2023 23:03:07 +0000 Labels: app=cassandra-migrations controller-uid=c43f2a66-57c8-4657-877f-36a751cf487d job-name=cassandra-migrations release=wire-server Annotations: cni.projectcalico.org/containerID: e314c7330c1196fbd9419267791429e3f31d6bfb910daa7739167b807116e830 cni.projectcalico.org/podIP: 10.233.110.68/32 cni.projectcalico.org/podIPs: IP: 10.233.110.68 Controlled By: Job/cassandra-migrations Init Containers: gundeck-schema: Container ID: containerd://1cb4a68a0877e993ed5b2ab8ccf9a18e90bf868c742141514b31fa9070be055f Image: quay.io/wire/gundeck-schema:4.38.0 Image ID: quay.io/wire/gundeck-schema@sha256:2a060ef26b014fa43296e9bb36acd8f43070574add99821196c7da8e23127c9c Port: Host Port: Command: gundeck-schema --host cassandra-external --port 9042 --keyspace gundeck --replication-factor 3 State: Running Started: Wed, 27 Sep 2023 23:06:02 +0000 Last State: Reason: Error Exit Code: 1 Started: Wed, 27 Sep 2023 23:04:19 +0000 ``` -------------------------------- ### Build and Install libzauth on Generic Systems Source: https://github.com/wireapp/wire-server/blob/develop/libs/libzauth/README.md This snippet outlines the generic installation process for the libzauth library. It assumes the necessary C and Rust toolchains are already in place and uses a standard 'make install' command. ```bash make install ``` -------------------------------- ### Install qemu-user-static on Fedora Source: https://github.com/wireapp/wire-server/blob/develop/deploy/dockerephemeral/build/README.md Installs the qemu-user-static package on Fedora-based systems. ```bash sudo dnf install -y qemu-user-static ``` -------------------------------- ### Redeploy Wire-Server Chart Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md Command to upgrade and install the wire-server chart with updated configuration values. ```bash d helm upgrade --install wire-server charts/wire-server --values values/wire-server/values.yaml --values/wire-server/secrets.yaml ``` -------------------------------- ### Start Local Backend Services Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/developer/developer/building.md Starts the backend services required for local webapp development. This command is executed from the wire-server repository. ```bash make crm ``` -------------------------------- ### Deploy Outlook Add-in Chart Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md This bash command demonstrates how to upgrade or install the Outlook Add-in Helm chart. It uses a specified values file for configuration. ```bash d helm upgrade --install outlook-addin charts/outlook-addin --values values/outlook-addin/values.yaml ``` -------------------------------- ### Install SFT chart with parameters Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/how-to/install/sft.md Installs the SFT chart directly using Helm, setting parameters like host, allowOrigin, and TLS files via command-line arguments. ```shell export SFTD_HOST=sftd.example.com export WEBAPP_HOST=webapp.example.com helm install sftd sftd \ --set host=$SFTD_HOST \ --set allowOrigin=https://$WEBAPP_HOST \ --set-file tls.crt=/path/to/tls.crt \ --set-file tls.key=/path/to/tls.key ``` -------------------------------- ### Brig Log Event Formats Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/how-to/install/troubleshooting.md Examples of different JSON log entries generated by the brig service, illustrating various events like user creation, activation key creation, user activation, user indexing, team creation, and invitation sending. ```json {"user":"24bdd52e-af33-400c-8e47-d16bf8695dbd","request":"c0575ff5a2d61bfc2be21e77260fccab","msgs":["I","Creating user"]} ``` ```json {"activation.code":"949721","activation.key":"p8o032Ljqhjgcea9R0AAnOeiUniGm63BrY9q_aeS1Cc=","request":"c0575ff5a2d61bfc2be21e77260fccab","msgs":["I","Activating"]} ``` ```json {"user":"24bdd52e-af33-400c-8e47-d16bf8695dbd","request":"c0575ff5a2d61bfc2be21e77260fccab","msgs":["I","User activated"]} ``` ```json {"user":"24bdd52e-af33-400c-8e47-d16bf8695dbd","logger":"index.brig","msgs":["I","Indexing user"]} ``` ```json {"email_sha256":"a7ca34df62e3aa18e071e6bd4740009ce7a25278869badc1ad8f6afda792d427","team":"6ef03a2b-34b5-4b65-8d72-1e4fc7697553","user":"24bdd52e-af33-400c-8e47-d16bf8695dbd","module":"Brig.API.Public","fn":"Brig.API.Public.createUser","request":"c0575ff5a2d61bfc2be21e77260fccab","msgs":["I","Sucessfully created user"]} ``` ```json {"invitation_code":"hJuh1C1PzMkgtesAYZZ4SZrP5xO-xM_m","email_sha256":"eef48a690436699c653110387455a4afe93ce29febc348acd20f6605787956e6","team":"6ef03a2b-34b5-4b65-8d72-1e4fc7697553","module":"Brig.Team.API","fn":"Brig.Team.API.createInvitationPublic","request":"c43440074629d802a199464dd892cd92","msgs":["I","Succesfully created invitation"]} ``` -------------------------------- ### SP-Initiated Login URL Example Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/understand/single-sign-on/trouble-shooting.md An example URL that can be distributed to users for SP-initiated login, containing a login code. ```bash https://wire-webapp-dev.zinfra.io/auth#sso/3c4f050a-f073-11eb-b4c9-931bceeed13e ``` -------------------------------- ### Get Detailed Pod Information Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/how-to/install/troubleshooting.md Retrieves detailed information about a specific Kubernetes pod, including its status, node, labels, annotations, and the configuration of its init containers and main containers. This is crucial for diagnosing startup or runtime issues. ```bash d kubectl describe pod cassandra-migration-qgn7r ``` -------------------------------- ### Install Nix Package Manager Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/developer/developer/building.md Command to install the nix package manager and add the wire-server cachix cache. Requires git and an amd64 machine. ```bash nix run \ --experimental-features 'nix-command flakes' \ github:nixos/nixpkgs/nixpkgs-unstable#cachix -- \ use wire-server ``` -------------------------------- ### Restund Configuration Example Source: https://github.com/wireapp/wire-server/blob/develop/services/restund/README.md An example configuration file for Restund, detailing settings for core functionality, modules, authentication, TURN relay, and status reporting. ```conf # /etc/restund/restund.conf # core daemon no debug no realm dummy.io syncinterval 600 udp_listen {{ ansible_default_ipv4.address }}:3478 udp_sockbuf_size 524288 tcp_listen {{ ansible_default_ipv4.address }}:3478 # tls_listen is optional, you can comment that line out. If set, you must provide a valid TLS certificate for the domain name you're advertising. # tls_listen {{ ansible_default_ipv4.address }}:5349,/usr/local/etc/restund/restund.pem # modules module_path /usr/local/lib/restund/modules module stat.so module drain.so module binding.so module turn.so module status.so # The auth and zrest modules are optional. If enabled, ensure the zrest_secret below is set to a value shared with the configuration in brig. module zrest.so module auth.so # auth auth_nonce_expiry 3600 # turn turn_max_allocations 64000 turn_max_lifetime 3600 turn_relay_addr {{ ansible_default_ipv4.address }} # You generally don't need to set this (only if your server is on a private network and must be reachable from other restund servers that are on another network): # turn_public_addr is an IP which must be reachable for UDP traffic from other restund servers (and from this server itself). If unset, defaults to 'turn_relay_addr' #turn_public_addr {{ public_ipv4 }} # syslog syslog_facility 24 # status status_udp_addr 127.0.0.1 status_udp_port 33000 status_http_addr 127.0.0.1 status_http_port 8080 ``` -------------------------------- ### Configure OAuth Public Keys for Nginx Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md Example of how to configure public keys for OAuth in the secrets.yaml file for the Nginx configuration. ```yaml nginz: secrets: oAuth: publicKeys: | { "kty": "OKP", "crv": "Ed25519", "x": "...", "kid": "..." } ``` -------------------------------- ### Configure OAuth JWK Key Pair for Brig Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md Example of how to configure the OAuth JWK key pair in the secrets.yaml file for the Brig namespace. ```yaml brig: secrets: oauthJwkKeyPair: | { "kty": "OKP", "crv": "Ed25519", "x": "...", "d": "...", "kid": "..." } ``` -------------------------------- ### Starting the toy-sp Application Source: https://github.com/wireapp/wire-server/blob/develop/libs/saml2-web-sso/README.md Instructions on how to set up the environment and run the toy-sp application. It involves exporting a path variable and executing the application using cabal. ```bash export SAML2_WEB_SSO_ROOT=`pwd` cabal exec toy-sp ``` -------------------------------- ### Start Wire Server Services Locally Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/developer/developer/how-to.md Builds and starts the wire-server services locally. Requires setting up backing services first. Access the Swagger UI at http://localhost:8080/api/swagger-ui. ```bash # Terminal 1: ./deploy/dockerephemeral/run.sh # Terminal 2: make c && ./dist/run-services ``` -------------------------------- ### Obtain Brig Logs Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/how-to/install/troubleshooting.md This section explains how to retrieve logs from the brig pod in a Kubernetes environment. It shows the command to get the logs and provides examples of different event formats found within the logs, such as user creation, activation, and team events. ```bash kubectl logs $(kubectl get pods | grep brig | awk '{print $1;}' | head -n 1) ``` -------------------------------- ### Running Tests in Kind Cluster Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/developer/developer/how-to.md Commands to set up a local 'kind' Kubernetes cluster, upload Docker images, install wire-server, and run integration tests. ```bash make kind-cluster make kind-upload-images make kind-integration-setup make kind-integration-test make kind-integration-e2e ``` -------------------------------- ### Troubleshooting binfmt support Source: https://github.com/wireapp/wire-server/blob/develop/deploy/dockerephemeral/build/README.md Provides instructions for checking and ensuring correct binfmt support configuration, which is crucial for multi-architecture builds. It involves examining the flags in /proc/sys/fs/binfmt_misc/qemu-arm. ```bash # Check binfmt flags cat /proc/sys/fs/binfmt_misc/qemu-arm | grep flags # If flags are missing, restart binfmt-support (Debian example) sudo service binfmt-support restart ``` -------------------------------- ### Run Service Backfill Tool Source: https://github.com/wireapp/wire-server/blob/develop/tools/db/service-backfill/README.md This snippet shows the necessary steps to run the service backfill tool. It involves setting environment variables for Galley and Brig hosts and keyspaces, establishing SSH tunnels to Cassandra, and executing the migration command with the correct Cassandra connection details. ```sh export GALLEY_HOST=... export GALLEY_KEYSPACE=galley export BRIG_HOST=... export BRIG_KEYSPACE=brig ssh -v -f ubuntu@${GALLEY_HOST} -L 2021:${GALLEY_HOST}:9042 -N ssh -v -f ubuntu@${BRIG_HOST} -L 2022:${BRIG_HOST}:9042 -N ./dist/migrate-sso-feature-flag --cassandra-host-galley=localhost --cassandra-port-galley=2021 --cassandra-keyspace-galley=${GALLEY_KEYSPACE} --cassandra-host-brig=localhost --cassandra-port-brig=2022 --cassandra-keyspace-brig=${BRIG_KEYSPACE} ``` -------------------------------- ### Haskell Routing Entry Example (Before Change) Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/developer/developer/api-versioning.md An example of a Haskell routing entry for a 'GET /foo' endpoint before any version-specific modifications. This entry is available on all API versions as no version range is specified. ```Haskell Named "get-foo" ("foo" :> Get '[JSON] Foo) ``` -------------------------------- ### Access Token as Query Parameter Example Source: https://github.com/wireapp/wire-server/blob/develop/services/nginz/third_party/nginx-zauth-module/README.md Shows how an access token can be included as a query parameter in an HTTP GET request. ```nginx GET /foo?access_token=eaafe0fad7947d419aea629f91679... ``` -------------------------------- ### Enable OAuth in Wire-Server Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md Configuration snippet to enable OAuth settings in the wire-server values.yaml file. ```yaml brig: # ... config: # ... optSettings: # ... setOAuthEnabled: true ``` -------------------------------- ### Web Client Disconnection Log Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/how-to/install/troubleshooting.md Logs the disconnected state as reported by WebRTC in the Wire Web client, indicating the start of a disconnect timer. ```default flow(...): connection_handler: disconnected, starting disconnect timer ``` -------------------------------- ### Build All Services with Cabal Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/developer/developer/building.md Builds all services in the wire-server project using the Makefile. Binaries are placed in ./dist/. ```bash make c ``` -------------------------------- ### Team Info Tool Usage Example Source: https://github.com/wireapp/wire-server/blob/develop/tools/db/team-info/README.md Provides an example of how to run the team-info tool with specific Cassandra connection details and a team ID. ```shell team-info \ --brig-cassandra-port 9048 --brig-cassandra-keyspace brig \ --galley-cassandra-port 9049 --galley-cassandra-keyspace galley \ --team-id=904912aa-7c10-11ef-9c85-8bfd758593f6 ``` -------------------------------- ### Enable Outlook Calendar Integration Feature Flag Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md Configuration snippet to enable the 'outlookCalIntegration' feature flag in the galley namespace's settings. ```yaml galley: config: # ... settings: # ... featureFlags: # ... outlookCalIntegration: defaults: status: enabled lockStatus: unlocked ``` -------------------------------- ### Bare Metal Load Balancer Configuration Steps Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/how-to/install/infrastructure-configuration.md Provides commands to copy example configuration files for MetalLB and Nginx ingress services, essential for setting up a load balancer on bare metal servers. ```sh cp values/metallb/demo-values.example.yaml values/metallb/demo-values.yaml cp values/nginx-ingress-services/demo-values.example.yaml values/nginx-ingress-services/demo-values.yaml cp values/nginx-ingress-services/demo-secrets.example.yaml values/nginx-ingress-services/demo-secrets.yaml ``` -------------------------------- ### Get Backend Versions Example Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/understand/api-client-perspective/swagger.md Demonstrates how to retrieve the supported versions of a backend using a curl command. It shows the command to execute and the expected JSON response. ```sh curl https:///api-version ``` ```json {"development":[4],"domain":"staging.zinfra.io","federation":false,"supported":[0,1,2]} ``` -------------------------------- ### Configure Nginx Allowlisted Origins Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md Configuration snippet to add 'outlook' to the allowlisted_origins in the Nginx configuration for wire-server to handle CORS requests from the Outlook Add-in. ```yaml nginx_conf: allowlisted_origins: - webapp - teams - account - outlook # add outlook entry so your addin doesnt get CORS blocked ``` -------------------------------- ### Generate Ed25519 Private Key Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md Command to generate an Ed25519 private key using OpenSSL, which is used for signing and verifying OAuth access tokens. ```bash openssl genpkey -algorithm Ed25519 -out private_key.pem ``` -------------------------------- ### Run Development Tests with Auto-Rebuild Source: https://github.com/wireapp/wire-server/blob/develop/integration/README.md Starts a ghcid session that automatically re-runs tests after successful test suite builds. Ideal for rapid test development and migration. ```bash TEST_INCLUDE=testFederationDomain,testFederationFoo make devtest ``` -------------------------------- ### List Kubernetes Pods Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/how-to/install/troubleshooting.md Lists all pods in the current Kubernetes namespace, showing their readiness, status, restart count, and age. This is a fundamental command for monitoring the state of your deployment. ```bash d kubectl get pods ``` -------------------------------- ### Create New OAuth Client Service Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md Curl command to create a new OAuth client service for the Wire Microsoft Outlook Calendar Add-in in the Brig namespace. ```bash d kubectl exec -it brig_pod_name /bin/bash curl -s -X POST localhost:8080/i/oauth/clients \ -H "Content-Type: application/json" \ -d '{ "application_name":"Wire Microsoft Outlook Calendar Add-in", "redirect_url":"https://outlook.example.com/callback.html" }' ``` -------------------------------- ### Manually Enable Outlook Calendar Integration via API Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md Curl command to manually enable the 'outlookCalIntegration' feature flag for a specific team via the wire-server API. ```bash d kubectl exec -it galley_pod_name /bin/bash curl -v -XPATCH 'http://localhost:8080/i/teams/your_teamID/features/outlookCalIntegration' -H 'content-type: application/json;charset=utf-8' -d '{"status": "enabled", "lockStatus": "unlocked"}' ``` -------------------------------- ### Deploying Local Code to Kubernetes Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/developer/developer/how-to.md Steps to deploy a local build of a service (e.g., 'brig') to a Kubernetes cluster by updating chart image versions and setting up federation. ```bash export NAMESPACE=$USER export DOCKER_TAG=2.116.32 export ENTERPRISE_IMAGE_PULL_SECRET=... # .dockerconfigjson of wire+wire_server_enterprise quay.io robot make kube-integration-setup ./hack/bin/set-chart-image-version.sh "$DOCKER_TAG_LOCAL_BUILD" brig ./hack/bin/integration-setup-federation.sh ``` -------------------------------- ### Wire-Server API: OAuth Clients Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md Manages OAuth client registrations for applications integrating with Wire-Server. This includes creating new clients with specified application names and redirect URLs. ```APIDOC POST /i/oauth/clients Description: Registers a new OAuth client with the Wire-Server. Parameters: - Body (application/json, required): - application_name (string, required): The name of the application requesting OAuth client registration. - redirect_url (string, required): The URL to which the user will be redirected after authentication. Example Request Body: { "application_name": "Wire Microsoft Outlook Calendar Add-in", "redirect_url": "https://outlook.example.com/callback.html" } Example Response (Success): { "client_id": "b2b3...", "client_secret": "9ee60..." } Error Conditions: - 400 Bad Request: If the request body is missing required fields or has invalid data types. - 409 Conflict: If a client with the same application name or redirect URL already exists. ``` -------------------------------- ### Build Wire Server with Docker Source: https://github.com/wireapp/wire-server/blob/develop/README.md Instructions for building Wire server components using Docker. It covers pulling pre-built images or building them from scratch, and notes potential memory issues during the build process. ```bash # Optionally: build the builder image if not pulling from quay.io make docker-builder # Build dependencies, intermediate images, and services make docker-deps docker-intermediate docker-services # Subsequent builds after code changes make docker-intermediate docker-services ``` -------------------------------- ### Configure TLS with Cert-Manager Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md This YAML configuration snippet shows how to set up TLS using cert-manager for the Wire Server. It specifies the issuer reference for certificate issuance, defaulting to 'letsencrypt-http01'. ```yaml tls: issuerRef: name: letsencrypt-http01 ``` -------------------------------- ### Build All Images with Nix Source: https://github.com/wireapp/wire-server/blob/develop/docs/src/developer/developer/building.md Builds all Docker images that would be deployed by the project using nix. ```bash nix build -Lv \ --experimental-features 'nix-command' \ -f ./nix wireServer.allImages ``` -------------------------------- ### Wire-Server API: Teams Feature Management Source: https://github.com/wireapp/wire-server/blob/develop/charts/outlook-addin/README.md Manages feature flags for specific teams within the Wire-Server. This endpoint allows enabling or disabling features like Outlook Calendar integration. ```APIDOC PATCH /i/teams/{teamId}/features/{featureName} Description: Updates the status and lock status of a specific feature for a given team. Parameters: - Path: - teamId (string, required): The unique identifier of the team. - featureName (string, required): The name of the feature to update (e.g., 'outlookCalIntegration'). - Body (application/json): - status (string, required): The desired status for the feature (e.g., 'enabled', 'disabled'). - lockStatus (string, required): The lock status for the feature (e.g., 'unlocked', 'locked'). Example Request Body: { "status": "enabled", "lockStatus": "unlocked" } Example Response: (No specific response body defined, typically returns 200 OK on success) Error Conditions: - 404 Not Found: If the teamId or featureName does not exist. - 400 Bad Request: If the request body is malformed or contains invalid values. ```