{
  "resources": [
    {
      "id": "environment-1",
      "title": "Set Up IndyKite Environment: Project, Application, and Credentials",
      "description": "Create the foundational IndyKite environment components required before using any IndyKite product. This includes creating a project, application, application agent, credentials, and token introspect configuration.",
      "category": "Environment",
      "tags": [
        "Environment Setup",
        "Project Creation",
        "Application Agent",
        "Credentials",
        "Token Introspect"
      ],
      "api": "Environment",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/configs/v1/projects",
        "/configs/v1/applications",
        "/configs/v1/application-agents",
        "/configs/v1/application-agent-credentials",
        "/configs/v1/token-introspects"
      ],
      "relatedGuides": [
        "/guides/guide-environment",
        "/guides/guide-credentials",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Verify ServiceAccount credentials are valid and included as Bearer token in Authorization header"
        },
        {
          "code": "403",
          "message": "PERMISSION_DENIED",
          "solution": "Ensure ServiceAccount has sufficient permissions at the Organization level"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Check that the parent resource ID (organization, project, or application) exists"
        }
      ],
      "links": {
        "html": "/resources/environment-1",
        "markdown": "/resources/environment-1.md",
        "json": "/resources/environment-1.json"
      }
    },
    {
      "id": "capture-1",
      "title": "Ingest Data into the IndyKite Knowledge Graph (IKG)",
      "description": "Add nodes (entities) and relationships to the IndyKite Knowledge Graph using the Capture API. This is the foundation for all graph-based queries and authorization.",
      "category": "Capture",
      "tags": [
        "Data Ingestion",
        "Nodes",
        "Relationships",
        "Knowledge Graph",
        "Capture API"
      ],
      "api": "Capture",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships"
      ],
      "relatedGuides": [
        "/guides/guide-sandbox",
        "/guides/guide-environment"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check X-IK-ClientKey header contains valid AppAgent credentials"
        },
        {
          "code": "400",
          "message": "INVALID_ARGUMENT",
          "solution": "Verify node/relationship structure: external_id, type, and properties are required"
        }
      ],
      "links": {
        "html": "/resources/capture-1",
        "markdown": "/resources/capture-1.md",
        "json": "/resources/capture-1.json"
      }
    },
    {
      "id": "ciq-basic",
      "title": "ContX IQ: Query License Numbers a Person Can Access",
      "description": "Query the IndyKite Knowledge Graph (IKG) to retrieve all vehicle license numbers that a specific person is authorized to view based on their contractual relationships.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "ContX IQ Execution",
        "Read Authorization",
        "Graph Traversal"
      ],
      "api": "ContX IQ",
      "language": "Python",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the knowledge query ID exists and belongs to your project"
        },
        {
          "code": "400",
          "message": "INVALID_ARGUMENT",
          "solution": "Check that all required input parameters are provided in the execution request"
        }
      ],
      "links": {
        "html": "/resources/ciq-basic",
        "markdown": "/resources/ciq-basic.md",
        "json": "/resources/ciq-basic.json"
      }
    },
    {
      "id": "ciq-2",
      "title": "ContX IQ: Retrieve Payment Methods for Contracted Vehicle Users",
      "description": "Query the IndyKite Knowledge Graph to list all payment methods belonging to people who have active contracts for vehicles. This demonstrates linking an Application to graph data and querying through authorized relationships.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "ContX IQ Execution",
        "Write Query",
        "Application Linking",
        "Payment Data"
      ],
      "api": "ContX IQ",
      "language": "Python",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the knowledge query ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-2",
        "markdown": "/resources/ciq-2.md",
        "json": "/resources/ciq-2.json"
      }
    },
    {
      "id": "ciq-3",
      "title": "ContX IQ: Grant Unrestricted READ Access to a Node Category",
      "description": "Create a policy that allows any authenticated request to READ all nodes of a specific type (e.g., all LicenseNumber nodes) without requiring relationship-based authorization.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "ContX IQ Execution",
        "Unrestricted Read",
        "Category Access"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-3",
        "markdown": "/resources/ciq-3.md",
        "json": "/resources/ciq-3.json"
      }
    },
    {
      "id": "ciq-4",
      "title": "ContX IQ: Create Nodes and Relationships via Authorized Write Query",
      "description": "Demonstrates how to create new Contract nodes and relationships (COVERS, ACCEPTED) through an authorized ContX IQ write query. The Application can only create contracts for vehicles owned by companies it has agreements with.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "ContX IQ Execution",
        "Write Operations",
        "Node Creation",
        "Relationship Creation"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-4",
        "markdown": "/resources/ciq-4.md",
        "json": "/resources/ciq-4.json"
      }
    },
    {
      "id": "ciq-5",
      "title": "ContX IQ: Upsert Relationships Between Existing Nodes",
      "description": "Create or update (upsert) relationships between existing nodes in the graph. This example demonstrates using the allowed_upserts.relationships policy directive to authorize ACCEPTED relationships between Person and Contract nodes.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "ContX IQ Execution",
        "Upsert",
        "Relationship Creation",
        "Write Operations"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-5",
        "markdown": "/resources/ciq-5.md",
        "json": "/resources/ciq-5.json"
      }
    },
    {
      "id": "ciq-6",
      "title": "ContX IQ: Delete Nodes and Their Relationships via Authorized Query",
      "description": "Demonstrates authorized node deletion in the IndyKite Knowledge Graph. When a node is deleted, all its relationships are automatically removed. This example shows deleting Contract nodes for a specific Person.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "ContX IQ Execution",
        "Delete Operations",
        "Node Deletion",
        "Cascade Delete"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-6",
        "markdown": "/resources/ciq-6.md",
        "json": "/resources/ciq-6.json"
      }
    },
    {
      "id": "ciq-7",
      "title": "ContX IQ: Loyalty Program - Retrieve Payment Method from License Plate",
      "description": "Real-world loyalty program scenario: Given a vehicle's license plate number, retrieve the credit card associated with an authorized user. Demonstrates multi-condition authorization with consent validation and loyalty plan membership checks.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "ContX IQ Execution",
        "Loyalty Program",
        "Consent Validation",
        "Complex Authorization"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-7",
        "markdown": "/resources/ciq-7.md",
        "json": "/resources/ciq-7.json"
      }
    },
    {
      "id": "authz-1",
      "title": "KBAC: Relationship-Based Authorization with authZEN API",
      "description": "Create a Knowledge-Based Access Control (KBAC) policy and execute authZEN-compliant authorization queries. This example demonstrates evaluation (can X do Y to Z?) and search operations (who can? what can? which resources?).",
      "category": "KBAC",
      "tags": [
        "KBAC Policy",
        "authZEN",
        "Authorization",
        "Evaluation",
        "Action Search",
        "Resource Search",
        "Subject Search",
        "Access Control"
      ],
      "api": "KBAC",
      "language": "Python",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/kbac/v1/is-authorized"
      ],
      "relatedGuides": [
        "/guides/guide-kbac",
        "/guides/guide-dynamic-authz",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check X-IK-ClientKey header contains valid AppAgent credentials"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the policy exists and the subject/resource nodes exist in the IKG"
        }
      ],
      "links": {
        "html": "/resources/authz-1",
        "markdown": "/resources/authz-1.md",
        "json": "/resources/authz-1.json"
      }
    },
    {
      "id": "authz-2",
      "title": "KBAC: Batch Authorization with Multiple Evaluations (Boxcarring)",
      "description": "Evaluate multiple authorization decisions in a single API call using the authZEN Access Evaluations endpoint. This pattern, known as 'boxcarring', reduces network overhead when checking many permissions at once.",
      "category": "KBAC",
      "tags": [
        "KBAC Policy",
        "authZEN",
        "Batch Evaluation",
        "Boxcarring",
        "Multi-Evaluation",
        "Performance Optimization"
      ],
      "api": "KBAC",
      "language": "Python",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/kbac/v1/is-authorized"
      ],
      "relatedGuides": [
        "/guides/guide-kbac",
        "/guides/guide-dynamic-authz",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check X-IK-ClientKey header contains valid AppAgent credentials"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the policy exists and the subject/resource nodes exist in the IKG"
        }
      ],
      "links": {
        "html": "/resources/authz-2",
        "markdown": "/resources/authz-2.md",
        "json": "/resources/authz-2.json"
      }
    },
    {
      "id": "authz-3",
      "title": "KBAC: Step-Up Authentication Advice in Authorization Responses",
      "description": "Demonstrates authZEN 'advice' - when authorization is denied due to insufficient authentication level, the response includes guidance on what authentication step-up is needed to gain access.",
      "category": "KBAC",
      "tags": [
        "KBAC Policy",
        "authZEN",
        "Step-Up Authentication",
        "Advice",
        "MFA",
        "Authentication Level",
        "Conditional Access"
      ],
      "api": "KBAC",
      "language": "Python",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/kbac/v1/is-authorized"
      ],
      "relatedGuides": [
        "/guides/guide-kbac",
        "/guides/guide-dynamic-authz",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check X-IK-ClientKey header contains valid AppAgent credentials"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the policy exists and the subject/resource nodes exist in the IKG"
        }
      ],
      "links": {
        "html": "/resources/authz-3",
        "markdown": "/resources/authz-3.md",
        "json": "/resources/authz-3.json"
      }
    },
    {
      "id": "cred-1",
      "title": "Token Introspect: Link External Identity Tokens to Graph Nodes",
      "description": "Configure Token Introspect to validate external identity tokens (e.g., Auth0, Okta) and automatically link them to Person nodes in the knowledge graph via _SAME_AS relationships.",
      "category": "Token Introspect",
      "tags": [
        "Token Introspect",
        "Identity Federation",
        "OAuth",
        "JWT",
        "Auth0",
        "Identity Linking",
        "SAME_AS"
      ],
      "api": "Token Introspect",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/configs/v1/application-agent-credentials"
      ],
      "relatedGuides": [
        "/guides/guide-credentials",
        "/guides/guide-environment"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Verify ServiceAccount credentials are valid"
        }
      ],
      "links": {
        "html": "/resources/cred-1",
        "markdown": "/resources/cred-1.md",
        "json": "/resources/cred-1.json"
      }
    },
    {
      "id": "ciq-8",
      "title": "ContX IQ: Connect System Nodes (_Application) to Business Data",
      "description": "Learn how to link auto-generated system nodes (_Application, _AppAgent) to your business data in the knowledge graph. This is essential for using the Application as an authorized subject in ContX IQ queries.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "Application Linking",
        "_Application Node",
        "System Integration",
        "Write Query"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-8",
        "markdown": "/resources/ciq-8.md",
        "json": "/resources/ciq-8.json"
      }
    },
    {
      "id": "ciq-9",
      "title": "ContX IQ: Complete CRUD Workflow with _Application as Subject",
      "description": "Comprehensive example showing how an Application can read resources, create relationships to those resources, and then create new nodes. Demonstrates progressive authorization as the graph structure changes.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "CRUD Operations",
        "_Application Subject",
        "Progressive Authorization",
        "Read and Write"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-9",
        "markdown": "/resources/ciq-9.md",
        "json": "/resources/ciq-9.json"
      }
    },
    {
      "id": "ciq-10",
      "title": "ContX IQ: Role-Based Access Control with User Tokens and Organizations",
      "description": "Advanced scenario using user access tokens as subjects for role-based authorization. Members can read Events, Admins can create Events. Demonstrates Token Introspect integration with ContX IQ policies.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "User Subject",
        "Role-Based Access",
        "Token Introspect",
        "Organization",
        "Events"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-10",
        "markdown": "/resources/ciq-10.md",
        "json": "/resources/ciq-10.json"
      }
    },
    {
      "id": "ciq-11",
      "title": "ContX IQ: User Consent Management - Grant and Revoke Payment Access",
      "description": "Demonstrates user-controlled consent workflows where a Person can authorize a Company to access their payment method, and later revoke that access. Uses user tokens as subjects for self-service data governance.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "Consent Management",
        "User Subject",
        "Grant Access",
        "Revoke Access",
        "Payment Method",
        "GDPR"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-11",
        "markdown": "/resources/ciq-11.md",
        "json": "/resources/ciq-11.json"
      }
    },
    {
      "id": "ciq-12",
      "title": "ContX IQ: Step-Up Authentication Based on auth_time Claim",
      "description": "Enforce re-authentication for sensitive operations by checking the token's auth_time claim. If the user authenticated more than one hour ago, return an advice requesting fresh authentication.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "Step-Up Authentication",
        "auth_time",
        "Session Freshness",
        "Security",
        "Advice"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-12",
        "markdown": "/resources/ciq-12.md",
        "json": "/resources/ciq-12.json"
      }
    },
    {
      "id": "ciq-13",
      "title": "ContX IQ: Step-Up Authentication Based on Token Issue Time (iat Claim)",
      "description": "Enforce token freshness by checking the iat (issued at) claim. If the token was issued more than one hour ago, return an advice requesting a new token. Different from auth_time - this checks token age, not authentication age.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "Step-Up Authentication",
        "iat Claim",
        "Token Freshness",
        "Security",
        "Advice"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-13",
        "markdown": "/resources/ciq-13.md",
        "json": "/resources/ciq-13.json"
      }
    },
    {
      "id": "ciq-14",
      "title": "ContX IQ: Query External Data Sources via Data Resolver",
      "description": "Demonstrates fetching data from external systems (APIs, databases) during ContX IQ query execution. The External Data Resolver retrieves information not stored in the IKG, combining graph data with real-time external lookups.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "External Data",
        "Data Resolver",
        "API Integration",
        "VIN Lookup",
        "Hybrid Data"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-14",
        "markdown": "/resources/ciq-14.md",
        "json": "/resources/ciq-14.json"
      }
    },
    {
      "id": "event-1",
      "title": "Outbound Events: Configure Kafka Event Streaming",
      "description": "Set up real-time event streaming from IndyKite to Kafka (Confluent). Receive notifications when graph data changes, configurations are modified, or specific actions occur.",
      "category": "Outbound Events",
      "tags": [
        "Outbound Events",
        "Kafka",
        "Confluent",
        "Event Streaming",
        "Webhooks",
        "Real-time"
      ],
      "api": "Outbound Events",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/configs/v1/event-sinks"
      ],
      "relatedGuides": [
        "/guides/guide-outbound-events",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Verify ServiceAccount credentials are valid"
        },
        {
          "code": "400",
          "message": "INVALID_ARGUMENT",
          "solution": "Check event sink configuration format and destination URL"
        }
      ],
      "links": {
        "html": "/resources/event-1",
        "markdown": "/resources/event-1.md",
        "json": "/resources/event-1.json"
      }
    },
    {
      "id": "event-2",
      "title": "Outbound Events: Stream Graph Data Changes to Kafka",
      "description": "Configure event streaming for Knowledge Graph changes. Receive real-time notifications when specific node types are created, updated, or deleted. Filter by node labels and properties.",
      "category": "Outbound Events",
      "tags": [
        "Outbound Events",
        "Kafka",
        "Capture Events",
        "Node Changes",
        "Graph Streaming",
        "CDC"
      ],
      "api": "Outbound Events",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/configs/v1/event-sinks"
      ],
      "relatedGuides": [
        "/guides/guide-outbound-events",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Verify ServiceAccount credentials are valid"
        },
        {
          "code": "400",
          "message": "INVALID_ARGUMENT",
          "solution": "Check event sink configuration format and destination URL"
        }
      ],
      "links": {
        "html": "/resources/event-2",
        "markdown": "/resources/event-2.md",
        "json": "/resources/event-2.json"
      }
    },
    {
      "id": "event-3",
      "title": "Outbound Events: Stream to Azure Event Grid",
      "description": "Configure event streaming to Azure Event Grid for serverless event processing. Trigger Azure Functions, Logic Apps, or other Azure services when graph data changes.",
      "category": "Outbound Events",
      "tags": [
        "Outbound Events",
        "Azure Event Grid",
        "Azure",
        "Serverless",
        "Event-Driven"
      ],
      "api": "Outbound Events",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/configs/v1/event-sinks"
      ],
      "relatedGuides": [
        "/guides/guide-outbound-events",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Verify ServiceAccount credentials are valid"
        },
        {
          "code": "400",
          "message": "INVALID_ARGUMENT",
          "solution": "Check event sink configuration format and destination URL"
        }
      ],
      "links": {
        "html": "/resources/event-3",
        "markdown": "/resources/event-3.md",
        "json": "/resources/event-3.json"
      }
    },
    {
      "id": "event-4",
      "title": "Outbound Events: Stream to Azure Service Bus",
      "description": "Configure event streaming to Azure Service Bus for enterprise messaging patterns. Enable reliable message delivery with queues and topics for decoupled, scalable architectures.",
      "category": "Outbound Events",
      "tags": [
        "Outbound Events",
        "Azure Service Bus",
        "Azure",
        "Enterprise Messaging",
        "Message Queue"
      ],
      "api": "Outbound Events",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/configs/v1/event-sinks"
      ],
      "relatedGuides": [
        "/guides/guide-outbound-events",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Verify ServiceAccount credentials are valid"
        },
        {
          "code": "400",
          "message": "INVALID_ARGUMENT",
          "solution": "Check event sink configuration format and destination URL"
        }
      ],
      "links": {
        "html": "/resources/event-4",
        "markdown": "/resources/event-4.md",
        "json": "/resources/event-4.json"
      }
    },
    {
      "id": "ciq-15",
      "title": "ContX IQ: Manage Node Property Metadata",
      "description": "Add, update, and query metadata on node properties. Metadata provides additional context like timestamps, sources, confidence scores, or audit information for individual property values.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "Metadata",
        "Property Attributes",
        "Data Provenance",
        "Audit Trail"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-15",
        "markdown": "/resources/ciq-15.md",
        "json": "/resources/ciq-15.json"
      }
    },
    {
      "id": "ciq-16",
      "title": "ContX IQ: Delete Node Properties and Relationship Properties",
      "description": "Demonstrates granular delete operations: delete entire nodes, specific properties from nodes, and specific properties from relationships. Useful for data cleanup, GDPR right-to-erasure, and selective data removal.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "Delete Properties",
        "Property Removal",
        "Data Cleanup",
        "GDPR Erasure"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-16",
        "markdown": "/resources/ciq-16.md",
        "json": "/resources/ciq-16.json"
      }
    },
    {
      "id": "ciq-17",
      "title": "ContX IQ: Application as Service - Create Person Linked to Multiple Nodes",
      "description": "Demonstrates service-to-service data creation where an Application (not a user) creates new Person nodes and links them to existing Country and Company nodes. Common pattern for system integrations and automated data pipelines.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "Service Account",
        "_Application Subject",
        "Node Creation",
        "Multi-Relationship"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-17",
        "markdown": "/resources/ciq-17.md",
        "json": "/resources/ciq-17.json"
      }
    },
    {
      "id": "ciq-18",
      "title": "ContX IQ: Wildcard Property Retrieval - Fetch All Properties",
      "description": "Use wildcard syntax to retrieve all properties of a node or relationship without explicitly listing each one. Simplifies queries when you need complete data snapshots or don't know all property names in advance.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "Wildcard Properties",
        "Dynamic Schema",
        "All Properties",
        "Flexible Queries"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-18",
        "markdown": "/resources/ciq-18.md",
        "json": "/resources/ciq-18.json"
      }
    },
    {
      "id": "ciq-19",
      "title": "ContX IQ: Retrieve All Directly Connected Nodes for a User",
      "description": "Query all nodes that have a direct relationship with a specified User node, regardless of relationship type or direction. Useful for user profile views, data export, or understanding a user's complete data footprint.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "Graph Traversal",
        "Related Nodes",
        "User Data",
        "Direct Relationships"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-19",
        "markdown": "/resources/ciq-19.md",
        "json": "/resources/ciq-19.json"
      }
    },
    {
      "id": "ciq-20",
      "title": "ContX IQ: Filter Data Using IN Array Operator with User Subject",
      "description": "Query Contract nodes using the IN operator to filter by array values in policy conditions. Demonstrates how to check if a value exists within an array property during authorization.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "ContX IQ Execution",
        "IN Operator",
        "Array Filter",
        "User Subject"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-20",
        "markdown": "/resources/ciq-20.md",
        "json": "/resources/ciq-20.json"
      }
    },
    {
      "id": "ciq-21",
      "title": "ContX IQ: Aggregate Data Using WHERE, WITH, and COUNT Operators",
      "description": "Demonstrates advanced Cypher query patterns including WHERE filtering, WITH for intermediate results, and COUNT for aggregation. Returns Person data with contract counts.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "ContX IQ Execution",
        "Aggregation",
        "COUNT",
        "WHERE",
        "WITH"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-21",
        "markdown": "/resources/ciq-21.md",
        "json": "/resources/ciq-21.json"
      }
    },
    {
      "id": "ciq-22",
      "title": "ContX IQ: Check Resource Availability Using OPTIONAL MATCH and CASE Expression",
      "description": "Demonstrates OPTIONAL MATCH for pattern matching that doesn't fail when no match exists, combined with CASE expressions for conditional logic. Example: Check if a subdomain is available for registration.",
      "category": "ContX IQ",
      "tags": [
        "ContX IQ Policy",
        "ContX IQ Query",
        "ContX IQ Execution",
        "OPTIONAL MATCH",
        "CASE",
        "Availability Check",
        "_Application Subject"
      ],
      "api": "ContX IQ",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [
        "/capture/v1/nodes",
        "/capture/v1/relationships",
        "/configs/v1/authorization-policies",
        "/configs/v1/knowledge-queries",
        "/contx-iq/v1/execute"
      ],
      "relatedGuides": [
        "/guides/guide-contx-iq",
        "/guides/guide-sandbox"
      ],
      "commonErrors": [
        {
          "code": "401",
          "message": "UNAUTHENTICATED",
          "solution": "Check credentials: ServiceAccount Bearer token for config APIs, X-IK-ClientKey for execution"
        },
        {
          "code": "404",
          "message": "NOT_FOUND",
          "solution": "Verify the query/policy ID exists and belongs to your project"
        }
      ],
      "links": {
        "html": "/resources/ciq-22",
        "markdown": "/resources/ciq-22.md",
        "json": "/resources/ciq-22.json"
      }
    },
    {
      "id": "mcp-1",
      "title": "MCP Server: Initialize Sessions and Execute Tools via HTTP",
      "description": "Demonstrates how to interact with the IndyKite MCP (Model Context Protocol) server using HTTP requests. Covers session initialization, listing resources and tools, and executing authorization queries through MCP tools.",
      "category": "MCP",
      "tags": [
        "MCP",
        "Model Context Protocol",
        "ContX IQ",
        "KBAC",
        "authZEN",
        "AI Integration",
        "LLM Tools"
      ],
      "api": "MCP",
      "language": "Json",
      "lastUpdated": "2026-03-20",
      "openApiEndpoints": [],
      "relatedGuides": [
        "/guides/guide-mcp"
      ],
      "commonErrors": [],
      "links": {
        "html": "/resources/mcp-1",
        "markdown": "/resources/mcp-1.md",
        "json": "/resources/mcp-1.json"
      }
    }
  ]
}