dojo.md 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/courses/GENERATION_LOG.md +72 -0
- package/courses/api-error-handling/course.yaml +16 -0
- package/courses/api-error-handling/scenarios/level-1/error-response-format.yaml +131 -0
- package/courses/api-error-handling/scenarios/level-1/http-status-codes-basics.yaml +90 -0
- package/courses/api-error-handling/scenarios/level-1/rate-limiting-basics.yaml +135 -0
- package/courses/api-error-handling/scenarios/level-1/request-validation-errors.yaml +208 -0
- package/courses/api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +189 -0
- package/courses/api-error-handling/scenarios/level-2/idempotency-retry-logic.yaml +159 -0
- package/courses/api-error-handling/scenarios/level-2/rfc-7807-problem-details.yaml +178 -0
- package/courses/api-error-handling/scenarios/level-2/webhook-error-handling.yaml +211 -0
- package/courses/api-error-handling/scenarios/level-3/distributed-tracing-errors.yaml +275 -0
- package/courses/aws-lambda-debugging/course.yaml +11 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/api-gateway-integration.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/cloudwatch-logs-basics.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/cold-start-basics.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/environment-variable-issues.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/first-debugging-shift.yaml +73 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/handler-import-errors.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/iam-permission-errors.yaml +68 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/invocation-errors.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/lambda-timeout-errors.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-1/memory-and-oom.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/async-invocation-failures.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/cold-start-optimization.yaml +76 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/dynamodb-streams-debugging.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/lambda-concurrency-management.yaml +70 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/lambda-layers-debugging.yaml +76 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/sam-local-debugging.yaml +74 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/sqs-event-source.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/vpc-networking-issues.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-2/xray-tracing.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/advanced-debugging-shift.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/container-image-lambda.yaml +79 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/cross-account-invocation.yaml +72 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/eventbridge-patterns.yaml +79 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/iac-deployment-debugging.yaml +68 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/kinesis-stream-processing.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/lambda-at-edge.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/lambda-extensions-debugging.yaml +67 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/powertools-observability.yaml +79 -0
- package/courses/aws-lambda-debugging/scenarios/level-3/step-functions-debugging.yaml +80 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/cost-optimization-strategy.yaml +67 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/expert-debugging-shift.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/incident-management-serverless.yaml +61 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/multi-region-serverless.yaml +67 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/observability-platform-design.yaml +71 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-architecture-design.yaml +64 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-data-architecture.yaml +66 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-migration-strategy.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-security-design.yaml +60 -0
- package/courses/aws-lambda-debugging/scenarios/level-4/serverless-testing-strategy.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/board-serverless-strategy.yaml +63 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/consulting-serverless-adoption.yaml +57 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/industry-serverless-patterns.yaml +62 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/ma-serverless-integration.yaml +75 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/master-debugging-shift.yaml +61 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/organizational-serverless-transformation.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/regulatory-serverless.yaml +61 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/serverless-economics.yaml +65 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/serverless-future-technology.yaml +66 -0
- package/courses/aws-lambda-debugging/scenarios/level-5/serverless-platform-design.yaml +71 -0
- package/courses/docker-container-debugging/course.yaml +11 -0
- package/courses/docker-container-debugging/scenarios/level-1/container-exit-codes.yaml +59 -0
- package/courses/docker-container-debugging/scenarios/level-1/container-networking-basics.yaml +69 -0
- package/courses/docker-container-debugging/scenarios/level-1/docker-logs-debugging.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-1/dockerfile-build-failures.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-1/environment-variable-issues.yaml +74 -0
- package/courses/docker-container-debugging/scenarios/level-1/first-debugging-shift.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-1/image-pull-failures.yaml +68 -0
- package/courses/docker-container-debugging/scenarios/level-1/port-mapping-issues.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-1/resource-limits-oom.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-1/volume-mount-problems.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-2/container-health-checks.yaml +73 -0
- package/courses/docker-container-debugging/scenarios/level-2/docker-compose-debugging.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-2/docker-exec-debugging.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-2/image-layer-optimization.yaml +81 -0
- package/courses/docker-container-debugging/scenarios/level-2/intermediate-debugging-shift.yaml +73 -0
- package/courses/docker-container-debugging/scenarios/level-2/logging-and-log-rotation.yaml +76 -0
- package/courses/docker-container-debugging/scenarios/level-2/multi-stage-build-debugging.yaml +76 -0
- package/courses/docker-container-debugging/scenarios/level-2/network-debugging-tools.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-2/pid1-signal-handling.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-2/security-scanning-basics.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-3/advanced-debugging-shift.yaml +77 -0
- package/courses/docker-container-debugging/scenarios/level-3/buildkit-optimization.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-3/container-filesystem-debugging.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-3/container-security-hardening.yaml +74 -0
- package/courses/docker-container-debugging/scenarios/level-3/disk-space-management.yaml +74 -0
- package/courses/docker-container-debugging/scenarios/level-3/docker-api-automation.yaml +72 -0
- package/courses/docker-container-debugging/scenarios/level-3/docker-daemon-issues.yaml +73 -0
- package/courses/docker-container-debugging/scenarios/level-3/docker-in-docker-ci.yaml +69 -0
- package/courses/docker-container-debugging/scenarios/level-3/overlay-network-debugging.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-3/production-container-ops.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-4/cicd-pipeline-design.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-monitoring-observability.yaml +63 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-orchestration-strategy.yaml +62 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-performance-engineering.yaml +64 -0
- package/courses/docker-container-debugging/scenarios/level-4/container-security-architecture.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-4/enterprise-image-management.yaml +58 -0
- package/courses/docker-container-debugging/scenarios/level-4/expert-debugging-shift.yaml +63 -0
- package/courses/docker-container-debugging/scenarios/level-4/incident-response-containers.yaml +70 -0
- package/courses/docker-container-debugging/scenarios/level-4/multi-environment-management.yaml +65 -0
- package/courses/docker-container-debugging/scenarios/level-4/stateful-service-containers.yaml +65 -0
- package/courses/docker-container-debugging/scenarios/level-5/board-infrastructure-strategy.yaml +58 -0
- package/courses/docker-container-debugging/scenarios/level-5/consulting-container-strategy.yaml +61 -0
- package/courses/docker-container-debugging/scenarios/level-5/container-platform-architecture.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/container-platform-economics.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/container-technology-evolution.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/disaster-recovery-containers.yaml +66 -0
- package/courses/docker-container-debugging/scenarios/level-5/industry-container-patterns.yaml +71 -0
- package/courses/docker-container-debugging/scenarios/level-5/master-debugging-shift.yaml +62 -0
- package/courses/docker-container-debugging/scenarios/level-5/organizational-transformation.yaml +67 -0
- package/courses/docker-container-debugging/scenarios/level-5/regulatory-compliance-containers.yaml +61 -0
- package/courses/github-actions-cicd/course.yaml +10 -0
- package/courses/github-actions-cicd/scenarios/level-1/actions-and-runners.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-1/basic-workflow-syntax.yaml +52 -0
- package/courses/github-actions-cicd/scenarios/level-1/branch-protection-checks.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-1/environment-variables-secrets.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-1/first-cicd-shift.yaml +62 -0
- package/courses/github-actions-cicd/scenarios/level-1/job-dependencies-outputs.yaml +62 -0
- package/courses/github-actions-cicd/scenarios/level-1/simple-ci-pipeline.yaml +57 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-debugging.yaml +90 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-status-notifications.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-triggers.yaml +56 -0
- package/courses/github-actions-cicd/scenarios/level-2/concurrency-control.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-2/conditional-execution.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-2/custom-actions-development.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-2/dependency-caching.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-2/deployment-workflows.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-2/github-packages-publishing.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-2/intermediate-cicd-shift.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-2/matrix-builds.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-2/reusable-workflows.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-2/workflow-cost-optimization.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-3/advanced-cicd-shift.yaml +64 -0
- package/courses/github-actions-cicd/scenarios/level-3/compliance-automation.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-3/docker-action-development.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-3/github-environments.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-3/monorepo-ci.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-3/oidc-cloud-deployments.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-3/release-automation.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-3/security-hardening.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-3/self-hosted-runners.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-3/workflow-optimization.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-data-architecture.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-economics-roi.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-executive-communication.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-incident-response.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-org-design.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-platform-architecture.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-training-program.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-vendor-evaluation.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/enterprise-cicd-governance.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-4/expert-cicd-shift.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-ai-future.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-behavioral-science.yaml +70 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-board-strategy.yaml +56 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-consulting-engagement.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-industry-benchmarks.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-ma-integration.yaml +73 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-product-development.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-regulatory-landscape.yaml +72 -0
- package/courses/github-actions-cicd/scenarios/level-5/comprehensive-cicd-system.yaml +66 -0
- package/courses/github-actions-cicd/scenarios/level-5/master-cicd-shift.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-2/api-change-review.yaml +82 -0
- package/courses/github-pr-review/scenarios/level-2/automated-review-tooling.yaml +53 -0
- package/courses/github-pr-review/scenarios/level-2/cross-team-review.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-2/intermediate-review-shift.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-2/performance-review-patterns.yaml +99 -0
- package/courses/github-pr-review/scenarios/level-2/review-disagreement-resolution.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-2/review-metrics-analysis.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-2/review-turnaround-sla.yaml +54 -0
- package/courses/github-pr-review/scenarios/level-2/stacked-pr-review.yaml +65 -0
- package/courses/github-pr-review/scenarios/level-3/advanced-review-shift.yaml +65 -0
- package/courses/github-pr-review/scenarios/level-3/ai-powered-review.yaml +58 -0
- package/courses/github-pr-review/scenarios/level-3/compliance-review-process.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-3/cross-functional-review.yaml +60 -0
- package/courses/github-pr-review/scenarios/level-3/incident-driven-review.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-3/large-scale-review-operations.yaml +55 -0
- package/courses/github-pr-review/scenarios/level-3/monorepo-review-process.yaml +68 -0
- package/courses/github-pr-review/scenarios/level-3/review-automation-platform.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-3/review-culture-design.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-3/review-data-pipeline.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/enterprise-review-operations.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-4/expert-review-shift.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/review-data-architecture.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-4/review-economics-roi.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-4/review-executive-communication.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-4/review-incident-postmortem.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-4/review-org-design.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/review-platform-architecture.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-4/review-training-program.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-4/review-vendor-evaluation.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-5/comprehensive-review-system.yaml +68 -0
- package/courses/github-pr-review/scenarios/level-5/master-review-shift.yaml +73 -0
- package/courses/github-pr-review/scenarios/level-5/review-ai-future.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-5/review-behavioral-science.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-5/review-board-strategy.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-5/review-consulting-engagement.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-5/review-devtools-product.yaml +71 -0
- package/courses/github-pr-review/scenarios/level-5/review-industry-benchmarks.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-5/review-ma-integration.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-5/review-regulatory-landscape.yaml +78 -0
- package/courses/kubernetes-deployment-troubleshooting/course.yaml +12 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/configmap-secret-issues.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/crashloopbackoff.yaml +68 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/deployment-rollout.yaml +56 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/first-troubleshooting-shift.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/health-probe-failures.yaml +70 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/imagepullbackoff.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/kubectl-debugging-basics.yaml +56 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/oomkilled.yaml +70 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/pending-pods.yaml +68 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-1/service-not-reachable.yaml +66 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/dns-resolution-failures.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/helm-deployment-failures.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/hpa-scaling-issues.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/ingress-routing-issues.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/init-container-failures.yaml +63 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/intermediate-troubleshooting-shift.yaml +66 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/network-policy-blocking.yaml +67 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/persistent-volume-issues.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/rbac-permission-denied.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-2/resource-quota-limits.yaml +64 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/advanced-troubleshooting-shift.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/cluster-upgrade-failures.yaml +71 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/gitops-drift-detection.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/job-cronjob-failures.yaml +67 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/monitoring-alerting-gaps.yaml +64 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/multi-container-debugging.yaml +68 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/node-pressure-evictions.yaml +70 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/pod-disruption-budgets.yaml +59 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/service-mesh-debugging.yaml +64 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-3/statefulset-troubleshooting.yaml +69 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/capacity-planning.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/cost-optimization.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/disaster-recovery-design.yaml +56 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/executive-communication.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/expert-troubleshooting-shift.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/incident-management-process.yaml +59 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-cluster-operations.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/multi-tenancy-design.yaml +55 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/platform-engineering.yaml +59 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-4/security-hardening.yaml +58 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/behavioral-science.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/board-strategy.yaml +61 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/cloud-native-future.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/comprehensive-platform.yaml +57 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/consulting-engagement.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/industry-benchmarks.yaml +58 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/ma-integration.yaml +62 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/master-troubleshooting-shift.yaml +73 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/product-development.yaml +65 -0
- package/courses/kubernetes-deployment-troubleshooting/scenarios/level-5/regulatory-compliance.yaml +76 -0
- package/courses/mysql-query-optimization/course.yaml +11 -0
- package/courses/mysql-query-optimization/scenarios/level-1/buffer-pool-basics.yaml +65 -0
- package/courses/mysql-query-optimization/scenarios/level-1/explain-basics.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +78 -0
- package/courses/mysql-query-optimization/scenarios/level-1/innodb-index-fundamentals.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-1/join-basics.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-1/select-star-problems.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +65 -0
- package/courses/mysql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +65 -0
- package/courses/mysql-query-optimization/scenarios/level-2/buffer-pool-tuning.yaml +64 -0
- package/courses/mysql-query-optimization/scenarios/level-2/composite-index-design.yaml +71 -0
- package/courses/mysql-query-optimization/scenarios/level-2/covering-and-invisible-indexes.yaml +69 -0
- package/courses/mysql-query-optimization/scenarios/level-2/cte-and-window-functions.yaml +78 -0
- package/courses/mysql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-2/join-optimization.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-2/performance-schema-analysis.yaml +69 -0
- package/courses/mysql-query-optimization/scenarios/level-2/query-optimizer-hints.yaml +74 -0
- package/courses/mysql-query-optimization/scenarios/level-2/subquery-optimization.yaml +70 -0
- package/courses/mysql-query-optimization/scenarios/level-2/write-optimization.yaml +63 -0
- package/courses/mysql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
- package/courses/mysql-query-optimization/scenarios/level-3/connection-management.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-3/full-text-search.yaml +77 -0
- package/courses/mysql-query-optimization/scenarios/level-3/json-optimization.yaml +87 -0
- package/courses/mysql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +68 -0
- package/courses/mysql-query-optimization/scenarios/level-3/monitoring-alerting.yaml +63 -0
- package/courses/mysql-query-optimization/scenarios/level-3/online-schema-changes.yaml +79 -0
- package/courses/mysql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +83 -0
- package/courses/mysql-query-optimization/scenarios/level-3/query-profiling-deep-dive.yaml +84 -0
- package/courses/mysql-query-optimization/scenarios/level-3/replication-optimization.yaml +66 -0
- package/courses/mysql-query-optimization/scenarios/level-4/aurora-vs-rds-evaluation.yaml +61 -0
- package/courses/mysql-query-optimization/scenarios/level-4/data-architecture.yaml +62 -0
- package/courses/mysql-query-optimization/scenarios/level-4/database-migration-planning.yaml +59 -0
- package/courses/mysql-query-optimization/scenarios/level-4/enterprise-governance.yaml +50 -0
- package/courses/mysql-query-optimization/scenarios/level-4/executive-communication.yaml +54 -0
- package/courses/mysql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +67 -0
- package/courses/mysql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +60 -0
- package/courses/mysql-query-optimization/scenarios/level-4/optimizer-internals.yaml +62 -0
- package/courses/mysql-query-optimization/scenarios/level-4/performance-sla-design.yaml +52 -0
- package/courses/mysql-query-optimization/scenarios/level-4/read-replica-scaling.yaml +51 -0
- package/courses/mysql-query-optimization/scenarios/level-5/ai-database-future.yaml +45 -0
- package/courses/mysql-query-optimization/scenarios/level-5/behavioral-science.yaml +44 -0
- package/courses/mysql-query-optimization/scenarios/level-5/benchmark-design.yaml +47 -0
- package/courses/mysql-query-optimization/scenarios/level-5/board-strategy.yaml +48 -0
- package/courses/mysql-query-optimization/scenarios/level-5/comprehensive-platform.yaml +49 -0
- package/courses/mysql-query-optimization/scenarios/level-5/consulting-engagement.yaml +52 -0
- package/courses/mysql-query-optimization/scenarios/level-5/ma-database-integration.yaml +47 -0
- package/courses/mysql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +56 -0
- package/courses/mysql-query-optimization/scenarios/level-5/product-development.yaml +48 -0
- package/courses/mysql-query-optimization/scenarios/level-5/regulatory-compliance.yaml +48 -0
- package/courses/postgresql-query-optimization/course.yaml +11 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/explain-analyze-basics.yaml +80 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +77 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/index-fundamentals.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/join-basics.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/select-star-problems.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/vacuum-and-statistics.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/autovacuum-tuning.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/composite-index-design.yaml +81 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/covering-indexes.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/cte-optimization.yaml +83 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +66 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/join-optimization.yaml +72 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/partial-and-expression-indexes.yaml +75 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/query-planner-settings.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/subquery-optimization.yaml +67 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/window-function-optimization.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/connection-pooling.yaml +60 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/full-text-search-optimization.yaml +66 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/jsonb-optimization.yaml +88 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +80 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/materialized-view-optimization.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/parallel-query-execution.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/specialized-index-types.yaml +67 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/write-optimization.yaml +65 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/data-architecture-analytics.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/database-executive-communication.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/database-migration-planning.yaml +57 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/enterprise-database-governance.yaml +52 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/optimizer-internals.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/performance-sla-design.yaml +58 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/read-replica-optimization.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/vendor-evaluation.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/comprehensive-database-system.yaml +70 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-ai-future.yaml +81 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-behavioral-science.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-board-strategy.yaml +77 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-consulting-engagement.yaml +61 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-industry-benchmarks.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-ma-integration.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-product-development.yaml +72 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/database-regulatory-landscape.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-5/master-optimization-shift.yaml +66 -0
- package/courses/rest-api-error-handling/course.yaml +11 -0
- package/courses/rest-api-error-handling/scenarios/level-1/authentication-errors.yaml +71 -0
- package/courses/rest-api-error-handling/scenarios/level-1/content-negotiation-errors.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-1/error-logging-basics.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-1/error-response-format.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-1/first-error-handling-shift.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-1/http-status-codes.yaml +46 -0
- package/courses/rest-api-error-handling/scenarios/level-1/not-found-errors.yaml +52 -0
- package/courses/rest-api-error-handling/scenarios/level-1/rate-limiting-errors.yaml +56 -0
- package/courses/rest-api-error-handling/scenarios/level-1/request-validation-errors.yaml +59 -0
- package/courses/rest-api-error-handling/scenarios/level-1/server-error-handling.yaml +55 -0
- package/courses/rest-api-error-handling/scenarios/level-2/api-versioning-errors.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-2/batch-request-errors.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +52 -0
- package/courses/rest-api-error-handling/scenarios/level-2/error-code-taxonomy.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-2/error-monitoring-alerting.yaml +53 -0
- package/courses/rest-api-error-handling/scenarios/level-2/intermediate-error-shift.yaml +69 -0
- package/courses/rest-api-error-handling/scenarios/level-2/pagination-errors.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-2/retry-and-idempotency.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-2/rfc7807-problem-details.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-2/webhook-error-handling.yaml +55 -0
- package/courses/rest-api-error-handling/scenarios/level-3/advanced-error-shift.yaml +72 -0
- package/courses/rest-api-error-handling/scenarios/level-3/api-gateway-errors.yaml +71 -0
- package/courses/rest-api-error-handling/scenarios/level-3/async-api-errors.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-3/caching-error-scenarios.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-3/chaos-engineering-apis.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-3/database-error-handling.yaml +79 -0
- package/courses/rest-api-error-handling/scenarios/level-3/distributed-error-propagation.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-3/error-budgets-sre.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-3/error-correlation.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-3/graphql-vs-rest-errors.yaml +73 -0
- package/courses/rest-api-error-handling/scenarios/level-4/compliance-error-handling.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/enterprise-error-governance.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-analytics-platform.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-cost-optimization.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-executive-communication.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-handling-architecture.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-org-design.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-sla-design.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-training-program.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-4/expert-error-shift.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-5/comprehensive-error-system.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-ai-future.yaml +75 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-behavioral-science.yaml +73 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-board-strategy.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-consulting-engagement.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-industry-benchmarks.yaml +72 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-ma-integration.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-product-development.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-regulatory-landscape.yaml +80 -0
- package/courses/rest-api-error-handling/scenarios/level-5/master-error-shift.yaml +73 -0
- package/courses/terraform-infrastructure-setup/course.yaml +11 -0
- package/courses/terraform-infrastructure-setup/scenarios/level-1/terraform-init-errors.yaml +72 -0
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +6 -5
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +4 -0
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +6 -18
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/train.d.ts.map +1 -1
- package/dist/cli/commands/train.js +18 -18
- package/dist/cli/commands/train.js.map +1 -1
- package/dist/cli/index.js +93 -55
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/run-demo.js +2 -1
- package/dist/cli/run-demo.js.map +1 -1
- package/dist/cli/setup.d.ts +18 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +154 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/engine/agent-bridge.d.ts +5 -2
- package/dist/engine/agent-bridge.d.ts.map +1 -1
- package/dist/engine/agent-bridge.js +36 -9
- package/dist/engine/agent-bridge.js.map +1 -1
- package/dist/engine/loader.d.ts +21 -0
- package/dist/engine/loader.d.ts.map +1 -1
- package/dist/engine/loader.js +54 -1
- package/dist/engine/loader.js.map +1 -1
- package/dist/engine/training-loop.d.ts.map +1 -1
- package/dist/engine/training-loop.js +1 -0
- package/dist/engine/training-loop.js.map +1 -1
- package/dist/engine/training.d.ts.map +1 -1
- package/dist/engine/training.js +1 -0
- package/dist/engine/training.js.map +1 -1
- package/dist/generator/skill-generator.d.ts +1 -1
- package/dist/generator/skill-generator.d.ts.map +1 -1
- package/dist/generator/skill-generator.js +21 -2
- package/dist/generator/skill-generator.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +11 -26
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session-manager.d.ts +9 -4
- package/dist/mcp/session-manager.d.ts.map +1 -1
- package/dist/mcp/session-manager.js +65 -28
- package/dist/mcp/session-manager.js.map +1 -1
- package/dist/types/schemas.d.ts +38 -13
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +9 -5
- package/dist/types/schemas.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
name: "Request Validation Error Handling"
|
|
2
|
+
level: 1
|
|
3
|
+
difficulty: beginner
|
|
4
|
+
description: "Handle common validation errors: missing fields, invalid types, constraint violations"
|
|
5
|
+
|
|
6
|
+
context: |
|
|
7
|
+
Implement comprehensive input validation for a user registration endpoint.
|
|
8
|
+
Handle missing fields, invalid formats, constraint violations, and size limits.
|
|
9
|
+
|
|
10
|
+
scenario:
|
|
11
|
+
state:
|
|
12
|
+
existing_users:
|
|
13
|
+
- email: "john@example.com"
|
|
14
|
+
- email: "jane@example.com"
|
|
15
|
+
validation_rules:
|
|
16
|
+
email: "required, valid email format, unique"
|
|
17
|
+
password: "required, minimum 8 characters"
|
|
18
|
+
name: "required, non-empty string, max 100 characters"
|
|
19
|
+
age: "optional, integer, must be 18+"
|
|
20
|
+
|
|
21
|
+
endpoint: "POST /api/v1/users/register"
|
|
22
|
+
|
|
23
|
+
test_cases:
|
|
24
|
+
- name: "valid_registration"
|
|
25
|
+
request:
|
|
26
|
+
body:
|
|
27
|
+
email: "newuser@example.com"
|
|
28
|
+
password: "SecurePassword123"
|
|
29
|
+
name: "New User"
|
|
30
|
+
age: 25
|
|
31
|
+
expected_status: 201
|
|
32
|
+
expected_response:
|
|
33
|
+
user_id: "user_new_123"
|
|
34
|
+
email: "newuser@example.com"
|
|
35
|
+
|
|
36
|
+
- name: "missing_email"
|
|
37
|
+
request:
|
|
38
|
+
body:
|
|
39
|
+
password: "SecurePassword123"
|
|
40
|
+
name: "New User"
|
|
41
|
+
expected_status: 400
|
|
42
|
+
expected_response:
|
|
43
|
+
error:
|
|
44
|
+
code: "MISSING_REQUIRED_FIELD"
|
|
45
|
+
details:
|
|
46
|
+
field: "email"
|
|
47
|
+
|
|
48
|
+
- name: "missing_password"
|
|
49
|
+
request:
|
|
50
|
+
body:
|
|
51
|
+
email: "newuser@example.com"
|
|
52
|
+
name: "New User"
|
|
53
|
+
expected_status: 400
|
|
54
|
+
expected_response:
|
|
55
|
+
error:
|
|
56
|
+
code: "MISSING_REQUIRED_FIELD"
|
|
57
|
+
details:
|
|
58
|
+
field: "password"
|
|
59
|
+
|
|
60
|
+
- name: "invalid_email_format"
|
|
61
|
+
request:
|
|
62
|
+
body:
|
|
63
|
+
email: "not-an-email"
|
|
64
|
+
password: "SecurePassword123"
|
|
65
|
+
name: "New User"
|
|
66
|
+
expected_status: 400
|
|
67
|
+
expected_response:
|
|
68
|
+
error:
|
|
69
|
+
code: "INVALID_EMAIL_FORMAT"
|
|
70
|
+
message: "Email must be a valid email address"
|
|
71
|
+
|
|
72
|
+
- name: "password_too_short"
|
|
73
|
+
request:
|
|
74
|
+
body:
|
|
75
|
+
email: "newuser@example.com"
|
|
76
|
+
password: "short"
|
|
77
|
+
name: "New User"
|
|
78
|
+
expected_status: 400
|
|
79
|
+
expected_response:
|
|
80
|
+
error:
|
|
81
|
+
code: "VALIDATION_ERROR"
|
|
82
|
+
message: "Password must be at least 8 characters"
|
|
83
|
+
|
|
84
|
+
- name: "name_exceeds_max_length"
|
|
85
|
+
request:
|
|
86
|
+
body:
|
|
87
|
+
email: "newuser@example.com"
|
|
88
|
+
password: "SecurePassword123"
|
|
89
|
+
name: "A" * 101
|
|
90
|
+
expected_status: 400
|
|
91
|
+
expected_response:
|
|
92
|
+
error:
|
|
93
|
+
code: "VALIDATION_ERROR"
|
|
94
|
+
message: "Name must not exceed 100 characters"
|
|
95
|
+
|
|
96
|
+
- name: "empty_name"
|
|
97
|
+
request:
|
|
98
|
+
body:
|
|
99
|
+
email: "newuser@example.com"
|
|
100
|
+
password: "SecurePassword123"
|
|
101
|
+
name: ""
|
|
102
|
+
expected_status: 400
|
|
103
|
+
expected_response:
|
|
104
|
+
error:
|
|
105
|
+
code: "VALIDATION_ERROR"
|
|
106
|
+
message: "Name cannot be empty"
|
|
107
|
+
|
|
108
|
+
- name: "age_below_minimum"
|
|
109
|
+
request:
|
|
110
|
+
body:
|
|
111
|
+
email: "newuser@example.com"
|
|
112
|
+
password: "SecurePassword123"
|
|
113
|
+
name: "Young User"
|
|
114
|
+
age: 17
|
|
115
|
+
expected_status: 400
|
|
116
|
+
expected_response:
|
|
117
|
+
error:
|
|
118
|
+
code: "VALIDATION_ERROR"
|
|
119
|
+
message: "Age must be 18 or older"
|
|
120
|
+
|
|
121
|
+
- name: "age_invalid_type"
|
|
122
|
+
request:
|
|
123
|
+
body:
|
|
124
|
+
email: "newuser@example.com"
|
|
125
|
+
password: "SecurePassword123"
|
|
126
|
+
name: "User"
|
|
127
|
+
age: "twenty-five"
|
|
128
|
+
expected_status: 400
|
|
129
|
+
expected_response:
|
|
130
|
+
error:
|
|
131
|
+
code: "INVALID_FIELD_TYPE"
|
|
132
|
+
details:
|
|
133
|
+
field: "age"
|
|
134
|
+
expected_type: "integer"
|
|
135
|
+
received_type: "string"
|
|
136
|
+
|
|
137
|
+
- name: "duplicate_email"
|
|
138
|
+
request:
|
|
139
|
+
body:
|
|
140
|
+
email: "john@example.com"
|
|
141
|
+
password: "SecurePassword123"
|
|
142
|
+
name: "John Copy"
|
|
143
|
+
expected_status: 409
|
|
144
|
+
expected_response:
|
|
145
|
+
error:
|
|
146
|
+
code: "EMAIL_ALREADY_EXISTS"
|
|
147
|
+
message: "An account with this email already exists"
|
|
148
|
+
|
|
149
|
+
- name: "multiple_validation_errors"
|
|
150
|
+
request:
|
|
151
|
+
body:
|
|
152
|
+
password: "short"
|
|
153
|
+
name: ""
|
|
154
|
+
age: 10
|
|
155
|
+
expected_status: 400
|
|
156
|
+
expected_response:
|
|
157
|
+
error:
|
|
158
|
+
code: "VALIDATION_ERROR"
|
|
159
|
+
message: "Multiple validation errors"
|
|
160
|
+
details:
|
|
161
|
+
errors:
|
|
162
|
+
- field: "email"
|
|
163
|
+
code: "MISSING_REQUIRED_FIELD"
|
|
164
|
+
- field: "password"
|
|
165
|
+
code: "TOO_SHORT"
|
|
166
|
+
- field: "name"
|
|
167
|
+
code: "EMPTY"
|
|
168
|
+
|
|
169
|
+
assertions:
|
|
170
|
+
- type: "http_status"
|
|
171
|
+
description: "400 Bad Request for validation errors"
|
|
172
|
+
test: "all validation errors return 400 status"
|
|
173
|
+
|
|
174
|
+
- type: "api_called"
|
|
175
|
+
description: "Missing required fields identified"
|
|
176
|
+
test: "MISSING_REQUIRED_FIELD error for absent email"
|
|
177
|
+
|
|
178
|
+
- type: "api_called"
|
|
179
|
+
description: "Invalid format errors detected"
|
|
180
|
+
test: "INVALID_EMAIL_FORMAT error for malformed email"
|
|
181
|
+
|
|
182
|
+
- type: "api_called"
|
|
183
|
+
description: "Constraint violations reported"
|
|
184
|
+
test: "Password length constraint violation returns error"
|
|
185
|
+
|
|
186
|
+
- type: "http_status"
|
|
187
|
+
description: "409 Conflict for duplicate unique fields"
|
|
188
|
+
test: "duplicate email returns 409"
|
|
189
|
+
|
|
190
|
+
- type: "api_called"
|
|
191
|
+
description: "Multiple errors reported together"
|
|
192
|
+
test: "multiple validation errors returned as array"
|
|
193
|
+
|
|
194
|
+
learning_objectives:
|
|
195
|
+
- "Validate required vs optional fields"
|
|
196
|
+
- "Check data type correctness before processing"
|
|
197
|
+
- "Validate format constraints (email, URL, phone number)"
|
|
198
|
+
- "Enforce business rule constraints (min/max, uniqueness)"
|
|
199
|
+
- "Report multiple validation errors together"
|
|
200
|
+
- "Use 409 Conflict for duplicate unique constraints"
|
|
201
|
+
|
|
202
|
+
common_mistakes:
|
|
203
|
+
- "Failing to validate email format before storage"
|
|
204
|
+
- "Not checking for duplicate emails/unique constraints"
|
|
205
|
+
- "Accepting invalid data types without type checking"
|
|
206
|
+
- "Returning 200 OK with validation error message"
|
|
207
|
+
- "Only reporting first error instead of all validation issues"
|
|
208
|
+
- "Not providing enough detail about what validation failed"
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
name: "Circuit Breaker Pattern for Resilience"
|
|
2
|
+
level: 2
|
|
3
|
+
difficulty: intermediate
|
|
4
|
+
description: "Implement circuit breaker pattern to prevent cascading failures and graceful degradation"
|
|
5
|
+
|
|
6
|
+
context: |
|
|
7
|
+
Your API depends on an external payment provider. Implement a circuit breaker that
|
|
8
|
+
monitors failures. When failure rate exceeds threshold, trip the circuit to stop
|
|
9
|
+
requests for a cool-down period, preventing cascading failures.
|
|
10
|
+
|
|
11
|
+
scenario:
|
|
12
|
+
state:
|
|
13
|
+
circuit_breaker:
|
|
14
|
+
state: "CLOSED"
|
|
15
|
+
failure_count: 0
|
|
16
|
+
success_count: 0
|
|
17
|
+
failure_threshold: 5
|
|
18
|
+
success_threshold: 2
|
|
19
|
+
timeout_seconds: 30
|
|
20
|
+
payment_provider:
|
|
21
|
+
healthy: true
|
|
22
|
+
failure_rate: 0
|
|
23
|
+
|
|
24
|
+
endpoint: "POST /api/v1/charges"
|
|
25
|
+
|
|
26
|
+
test_cases:
|
|
27
|
+
- name: "circuit_closed_request_succeeds"
|
|
28
|
+
request:
|
|
29
|
+
body:
|
|
30
|
+
amount: 100
|
|
31
|
+
card_token: "tok_visa"
|
|
32
|
+
circuit_state: "CLOSED"
|
|
33
|
+
provider_status: "healthy"
|
|
34
|
+
expected_status: 200
|
|
35
|
+
expected_response:
|
|
36
|
+
charge_id: "charge_001"
|
|
37
|
+
status: "succeeded"
|
|
38
|
+
|
|
39
|
+
- name: "circuit_closed_provider_fails_once"
|
|
40
|
+
request:
|
|
41
|
+
body:
|
|
42
|
+
amount: 100
|
|
43
|
+
card_token: "tok_visa"
|
|
44
|
+
circuit_state: "CLOSED"
|
|
45
|
+
provider_status: "failing"
|
|
46
|
+
expected_status: 502
|
|
47
|
+
expected_response:
|
|
48
|
+
error:
|
|
49
|
+
code: "PAYMENT_PROVIDER_ERROR"
|
|
50
|
+
|
|
51
|
+
- name: "circuit_accumulates_failures"
|
|
52
|
+
request:
|
|
53
|
+
body:
|
|
54
|
+
amount: 100
|
|
55
|
+
card_token: "tok_visa"
|
|
56
|
+
circuit_state: "CLOSED"
|
|
57
|
+
provider_status: "failing"
|
|
58
|
+
consecutive_failures: 5
|
|
59
|
+
expected_status: 502
|
|
60
|
+
circuit_state_after: "OPEN"
|
|
61
|
+
|
|
62
|
+
- name: "circuit_open_request_fails_immediately"
|
|
63
|
+
request:
|
|
64
|
+
body:
|
|
65
|
+
amount: 100
|
|
66
|
+
card_token: "tok_visa"
|
|
67
|
+
circuit_state: "OPEN"
|
|
68
|
+
expected_status: 503
|
|
69
|
+
expected_response:
|
|
70
|
+
error:
|
|
71
|
+
code: "SERVICE_UNAVAILABLE"
|
|
72
|
+
message: "Payment service temporarily unavailable. Please retry later."
|
|
73
|
+
response_time_ms: "< 10"
|
|
74
|
+
|
|
75
|
+
- name: "circuit_returns_fallback_response"
|
|
76
|
+
request:
|
|
77
|
+
body:
|
|
78
|
+
amount: 100
|
|
79
|
+
card_token: "tok_visa"
|
|
80
|
+
circuit_state: "OPEN"
|
|
81
|
+
fallback_enabled: true
|
|
82
|
+
expected_status: 202
|
|
83
|
+
expected_response:
|
|
84
|
+
charge_id: "charge_002"
|
|
85
|
+
status: "pending"
|
|
86
|
+
message: "Charge queued for processing when service recovers"
|
|
87
|
+
|
|
88
|
+
- name: "circuit_half_open_test_request"
|
|
89
|
+
request:
|
|
90
|
+
body:
|
|
91
|
+
amount: 100
|
|
92
|
+
card_token: "tok_visa"
|
|
93
|
+
circuit_state: "HALF_OPEN"
|
|
94
|
+
provider_status: "healthy"
|
|
95
|
+
expected_status: 200
|
|
96
|
+
expected_response:
|
|
97
|
+
charge_id: "charge_003"
|
|
98
|
+
status: "succeeded"
|
|
99
|
+
circuit_state_after: "CLOSED"
|
|
100
|
+
|
|
101
|
+
- name: "circuit_half_open_test_fails_reopens"
|
|
102
|
+
request:
|
|
103
|
+
body:
|
|
104
|
+
amount: 100
|
|
105
|
+
card_token: "tok_visa"
|
|
106
|
+
circuit_state: "HALF_OPEN"
|
|
107
|
+
provider_status: "failing"
|
|
108
|
+
expected_status: 502
|
|
109
|
+
circuit_state_after: "OPEN"
|
|
110
|
+
|
|
111
|
+
- name: "circuit_timeout_moves_to_half_open"
|
|
112
|
+
circuit_state: "OPEN"
|
|
113
|
+
timeout_elapsed: 30
|
|
114
|
+
current_request: false
|
|
115
|
+
circuit_state_after: "HALF_OPEN"
|
|
116
|
+
|
|
117
|
+
assertions:
|
|
118
|
+
- type: "api_called"
|
|
119
|
+
description: "Circuit breaker monitors failure rate"
|
|
120
|
+
test: "failure_count increments on provider errors"
|
|
121
|
+
|
|
122
|
+
- type: "outcome"
|
|
123
|
+
description: "Circuit trips when threshold exceeded"
|
|
124
|
+
test: "circuit_accumulates_failures transitions to OPEN state"
|
|
125
|
+
|
|
126
|
+
- type: "api_called"
|
|
127
|
+
description: "Open circuit fails immediately without trying provider"
|
|
128
|
+
test: "circuit_open_request_fails_immediately responds quickly"
|
|
129
|
+
|
|
130
|
+
- type: "api_called"
|
|
131
|
+
description: "Fallback behavior when circuit open"
|
|
132
|
+
test: "circuit_returns_fallback_response provides degraded service"
|
|
133
|
+
|
|
134
|
+
- type: "api_called"
|
|
135
|
+
description: "Circuit half-open allows test request"
|
|
136
|
+
test: "circuit_half_open_test_request sent to provider"
|
|
137
|
+
|
|
138
|
+
- type: "outcome"
|
|
139
|
+
description: "Successful test request closes circuit"
|
|
140
|
+
test: "circuit_half_open_test_fails_reopens transitions correctly"
|
|
141
|
+
|
|
142
|
+
learning_objectives:
|
|
143
|
+
- "Understand circuit breaker states: CLOSED, OPEN, HALF_OPEN"
|
|
144
|
+
- "Monitor failures to detect persistent provider issues"
|
|
145
|
+
- "Trip circuit to prevent cascading failures"
|
|
146
|
+
- "Implement cool-down period for recovery"
|
|
147
|
+
- "Test recovery with half-open state"
|
|
148
|
+
- "Return appropriate status codes for circuit states"
|
|
149
|
+
- "Implement fallback strategies for open circuits"
|
|
150
|
+
|
|
151
|
+
circuit_breaker_states:
|
|
152
|
+
"CLOSED": "Normal operation, requests flow to provider"
|
|
153
|
+
"OPEN": "Too many failures, requests fail immediately, no provider calls"
|
|
154
|
+
"HALF_OPEN": "Cool-down period elapsed, allow test request to check if provider recovered"
|
|
155
|
+
|
|
156
|
+
state_transitions:
|
|
157
|
+
"CLOSED → OPEN": "When failure_count exceeds threshold"
|
|
158
|
+
"OPEN → HALF_OPEN": "When timeout_seconds elapsed"
|
|
159
|
+
"HALF_OPEN → CLOSED": "When test request succeeds"
|
|
160
|
+
"HALF_OPEN → OPEN": "When test request fails"
|
|
161
|
+
|
|
162
|
+
implementation_considerations:
|
|
163
|
+
"failure_detection": "Monitor 5xx errors and timeouts"
|
|
164
|
+
"failure_threshold": "Typically 5-10 consecutive failures"
|
|
165
|
+
"cool_down_period": "30-60 seconds typical"
|
|
166
|
+
"half_open_testing": "Allow single request through to test recovery"
|
|
167
|
+
"fallback_strategy": "Queue requests, return degraded response, or fail fast"
|
|
168
|
+
"metrics": "Track state transitions, time in each state"
|
|
169
|
+
|
|
170
|
+
fallback_strategies:
|
|
171
|
+
"fast_fail": "Return 503 Service Unavailable immediately"
|
|
172
|
+
"queue_requests": "Enqueue for async processing when provider recovers"
|
|
173
|
+
"degraded_mode": "Use cached data or return partial results"
|
|
174
|
+
"alternate_provider": "Failover to backup provider"
|
|
175
|
+
|
|
176
|
+
common_mistakes:
|
|
177
|
+
- "Not implementing circuit breaker for external dependencies"
|
|
178
|
+
- "Allowing too many failures before tripping circuit"
|
|
179
|
+
- "Cool-down period too short (allows rapid retries)"
|
|
180
|
+
- "Not monitoring time spent in OPEN state"
|
|
181
|
+
- "Failing to test recovery in HALF_OPEN state"
|
|
182
|
+
- "Not logging circuit state changes"
|
|
183
|
+
- "Returning ambiguous status codes (500 vs 503)"
|
|
184
|
+
|
|
185
|
+
libraries:
|
|
186
|
+
"hystrix": "Netflix Hystrix - Java circuit breaker library"
|
|
187
|
+
"polly": ".NET resilience and transient-fault-handling library"
|
|
188
|
+
"opossum": "Node.js circuit breaker"
|
|
189
|
+
"pybreaker": "Python implementation"
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
name: "Idempotency and Retry Logic"
|
|
2
|
+
level: 2
|
|
3
|
+
difficulty: intermediate
|
|
4
|
+
description: "Implement idempotent operations and safe retry strategies to prevent duplicate processing"
|
|
5
|
+
|
|
6
|
+
context: |
|
|
7
|
+
Design payment processing APIs that are idempotent. Clients send a unique idempotency
|
|
8
|
+
key with each request. If a retry arrives with the same key, return the same result
|
|
9
|
+
without processing again. This prevents double-charging when networks fail.
|
|
10
|
+
|
|
11
|
+
scenario:
|
|
12
|
+
state:
|
|
13
|
+
payments:
|
|
14
|
+
"pay_001": { customer_id: "cust_1", amount: 100, status: "completed" }
|
|
15
|
+
customers:
|
|
16
|
+
"cust_1": { balance: 1000 }
|
|
17
|
+
"cust_2": { balance: 500 }
|
|
18
|
+
idempotency_keys:
|
|
19
|
+
"idem_key_123": { payment_id: "pay_001", status: "completed", created_at: "2024-01-01T10:00:00Z" }
|
|
20
|
+
|
|
21
|
+
endpoint: "POST /api/v1/payments"
|
|
22
|
+
|
|
23
|
+
test_cases:
|
|
24
|
+
- name: "initial_payment_request"
|
|
25
|
+
request:
|
|
26
|
+
body:
|
|
27
|
+
customer_id: "cust_2"
|
|
28
|
+
amount: 50
|
|
29
|
+
headers:
|
|
30
|
+
Idempotency-Key: "idem_key_456"
|
|
31
|
+
expected_status: 201
|
|
32
|
+
expected_response:
|
|
33
|
+
payment_id: "pay_002"
|
|
34
|
+
customer_id: "cust_2"
|
|
35
|
+
amount: 50
|
|
36
|
+
status: "completed"
|
|
37
|
+
|
|
38
|
+
- name: "retry_same_idempotency_key_returns_same_result"
|
|
39
|
+
request:
|
|
40
|
+
body:
|
|
41
|
+
customer_id: "cust_2"
|
|
42
|
+
amount: 50
|
|
43
|
+
headers:
|
|
44
|
+
Idempotency-Key: "idem_key_456"
|
|
45
|
+
expected_status: 201
|
|
46
|
+
expected_response:
|
|
47
|
+
payment_id: "pay_002"
|
|
48
|
+
customer_id: "cust_2"
|
|
49
|
+
amount: 50
|
|
50
|
+
status: "completed"
|
|
51
|
+
|
|
52
|
+
- name: "duplicate_charge_prevented"
|
|
53
|
+
request:
|
|
54
|
+
body:
|
|
55
|
+
customer_id: "cust_2"
|
|
56
|
+
amount: 50
|
|
57
|
+
headers:
|
|
58
|
+
Idempotency-Key: "idem_key_456"
|
|
59
|
+
expected_effect: "customer balance unchanged (only charged once)"
|
|
60
|
+
|
|
61
|
+
- name: "different_key_different_charge"
|
|
62
|
+
request:
|
|
63
|
+
body:
|
|
64
|
+
customer_id: "cust_2"
|
|
65
|
+
amount: 50
|
|
66
|
+
headers:
|
|
67
|
+
Idempotency-Key: "idem_key_789"
|
|
68
|
+
expected_status: 201
|
|
69
|
+
expected_response:
|
|
70
|
+
payment_id: "pay_003"
|
|
71
|
+
|
|
72
|
+
- name: "missing_idempotency_key_warning"
|
|
73
|
+
request:
|
|
74
|
+
body:
|
|
75
|
+
customer_id: "cust_2"
|
|
76
|
+
amount: 50
|
|
77
|
+
expected_status: 201
|
|
78
|
+
expected_response:
|
|
79
|
+
warning: "Idempotency-Key not provided. Retries may result in duplicate charges."
|
|
80
|
+
|
|
81
|
+
- name: "request_in_progress"
|
|
82
|
+
request:
|
|
83
|
+
body:
|
|
84
|
+
customer_id: "cust_2"
|
|
85
|
+
amount: 50
|
|
86
|
+
headers:
|
|
87
|
+
Idempotency-Key: "idem_key_processing"
|
|
88
|
+
concurrent_request: true
|
|
89
|
+
expected_status: 409
|
|
90
|
+
expected_response:
|
|
91
|
+
error:
|
|
92
|
+
code: "REQUEST_IN_PROGRESS"
|
|
93
|
+
message: "Request with this Idempotency-Key is currently being processed"
|
|
94
|
+
|
|
95
|
+
assertions:
|
|
96
|
+
- type: "api_called"
|
|
97
|
+
description: "Idempotency-Key header required for non-idempotent operations"
|
|
98
|
+
test: "POST /payments accepts Idempotency-Key header"
|
|
99
|
+
|
|
100
|
+
- type: "api_called"
|
|
101
|
+
description: "Same idempotency key returns same result"
|
|
102
|
+
test: "retry_same_idempotency_key_returns_same_result succeeds"
|
|
103
|
+
|
|
104
|
+
- type: "outcome"
|
|
105
|
+
description: "Duplicate processing prevented"
|
|
106
|
+
test: "duplicate_charge_prevented prevents second charge"
|
|
107
|
+
|
|
108
|
+
- type: "api_called"
|
|
109
|
+
description: "Different keys processed as different requests"
|
|
110
|
+
test: "different_key_different_charge creates separate payment"
|
|
111
|
+
|
|
112
|
+
- type: "api_called"
|
|
113
|
+
description: "Concurrent requests with same key handled"
|
|
114
|
+
test: "request_in_progress returns 409 for concurrent calls"
|
|
115
|
+
|
|
116
|
+
learning_objectives:
|
|
117
|
+
- "Understand idempotency and why it's critical for financial operations"
|
|
118
|
+
- "Implement idempotency key tracking and storage"
|
|
119
|
+
- "Return consistent results for duplicate idempotent requests"
|
|
120
|
+
- "Prevent double-processing with idempotent operations"
|
|
121
|
+
- "Handle request-in-progress scenarios"
|
|
122
|
+
- "Design safe retry strategies with exponential backoff"
|
|
123
|
+
- "Distinguish between idempotent and non-idempotent operations"
|
|
124
|
+
|
|
125
|
+
idempotency_implementation:
|
|
126
|
+
"storage": "Idempotency keys stored with request ID, status, and result"
|
|
127
|
+
"cache_ttl": "Keep entries for 24 hours minimum for safety"
|
|
128
|
+
"duplicate_detection": "Check key before processing, return stored result if found"
|
|
129
|
+
"status_tracking": "Track PENDING, COMPLETED, FAILED states"
|
|
130
|
+
|
|
131
|
+
retry_strategy:
|
|
132
|
+
"idempotent_operations": "GET, PUT, DELETE - safe to retry with backoff"
|
|
133
|
+
"non_idempotent_operations": "POST typically requires idempotency key"
|
|
134
|
+
"backoff_pattern": "exponential: 1s, 2s, 4s, 8s, 16s"
|
|
135
|
+
"max_retries": "Typically 5-10 depending on SLA"
|
|
136
|
+
|
|
137
|
+
headers:
|
|
138
|
+
"Idempotency-Key": "Unique identifier for the logical operation (required for POST/PATCH)"
|
|
139
|
+
"Idempotency-Replay": "Boolean indicating if this is a replay of previous request"
|
|
140
|
+
|
|
141
|
+
common_mistakes:
|
|
142
|
+
- "Not implementing idempotency for payment operations"
|
|
143
|
+
- "Charging twice due to missing idempotency checks"
|
|
144
|
+
- "Not persisting idempotency keys long enough"
|
|
145
|
+
- "Retrying non-idempotent operations blindly"
|
|
146
|
+
- "Not informing clients of idempotency requirements"
|
|
147
|
+
- "Failing to handle requests in progress"
|
|
148
|
+
|
|
149
|
+
example_idempotent_operations: |
|
|
150
|
+
POST /api/v1/payments (with Idempotency-Key header)
|
|
151
|
+
POST /api/v1/orders (with Idempotency-Key header)
|
|
152
|
+
POST /api/v1/subscriptions (with Idempotency-Key header)
|
|
153
|
+
|
|
154
|
+
These modify state and must be idempotent to prevent duplicates.
|
|
155
|
+
|
|
156
|
+
Safe to retry without idempotency key:
|
|
157
|
+
GET /api/v1/users (read-only)
|
|
158
|
+
DELETE /api/v1/users/{id} (idempotent - deleting twice = same result)
|
|
159
|
+
PUT /api/v1/users/{id} (idempotent - updating twice with same data = same result)
|