When to Use - Creating an Aura instance (CLI, REST API, Python, Terraform) - Pausing, resuming, resizing, or deleting an instance - Downloading initial credentials from creation response - Polling instance status: → - Setting up CI/CD provisioning or teardown pipelines - Choosing instance tier (Free vs Professional vs Business Critical vs VDC) When NOT to Use - Cypher queries against running DB → - GDS algorithms on Aura → (Pro with plugin) or (serverless) - neo4j-admin / cypher-shell → - Application driver setup → use a language driver skill (python, javascript, java, go, dotnet) --- Instanc…

.gitignore 2>/dev/null || echo '.env' >> .gitignore\n\n# Verify connectivity\ncypher-shell -a \"$CONNECTION_URI\" -u neo4j -p \"$PASSWORD\" \"RETURN 'connected' AS status\"\n```\n\n---\n\n## Step 5 — Lifecycle Operations\n\nAll operations require instance in the correct state. Wrong-state ops return 4xx error.\n\n### Pause\nRequired state: `running`\n```bash\naura-cli instance pause --instance-id \"$INSTANCE_ID\"\npoll_status \"$INSTANCE_ID\" \"paused\" 600\n```\n\n### Resume\nRequired state: `paused`\n```bash\naura-cli instance resume --instance-id \"$INSTANCE_ID\"\npoll_status \"$INSTANCE_ID\" \"running\" 900 # resume can take longer\n```\n\n### Resize (Professional+ only — NOT Free)\nRequired state: `running`; instance remains available during resize.\n```bash\n# REST only — CLI resize not available in v1.7\ncurl -s -X PATCH \"https://api.neo4j.io/v1/instances/$INSTANCE_ID\" \\\n -H \"Authorization: Bearer $TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"memory\": \"8GB\"}'\npoll_status \"$INSTANCE_ID\" \"running\" 600\n# Cannot reduce below current usage level\n```\n\n### Delete\nIRREVERSIBLE. Export snapshots first if data needed.\n```bash\naura-cli instance delete --instance-id \"$INSTANCE_ID\"\n# No poll needed — immediate\n```\n\nREST:\n```bash\ncurl -s -X DELETE \"https://api.neo4j.io/v1/instances/$INSTANCE_ID\" \\\n -H \"Authorization: Bearer $TOKEN\"\n```\n\n---\n\n## Python CI/CD Provisioning Script\n\n```python\nimport os, time, requests\n\nCLIENT_ID = os.environ[\"AURA_CLIENT_ID\"]\nCLIENT_SECRET = os.environ[\"AURA_CLIENT_SECRET\"]\nBASE = \"https://api.neo4j.io/v1\"\n\ndef get_token() -> str:\n r = requests.post(\n \"https://api.neo4j.io/oauth/token\",\n auth=(CLIENT_ID, CLIENT_SECRET),\n data={\"grant_type\": \"client_credentials\"},\n )\n r.raise_for_status()\n return r.json()[\"access_token\"]\n\ndef auth_headers(token: str) -> dict:\n return {\"Authorization\": f\"Bearer {token}\", \"Content-Type\": \"application/json\"}\n\ndef create_instance(token: str, tenant_id: str, **kwargs) -> dict:\n payload = {\"tenant_id\": tenant_id, \"version\": \"5\", **kwargs}\n r = requests.post(f\"{BASE}/instances\", headers=auth_headers(token), json=payload)\n r.raise_for_status()\n return r.json()[\"data\"] # contains id, password, connection_url\n\ndef poll_status(token: str, instance_id: str, target: str, timeout: int = 600) -> None:\n deadline = time.time() + timeout\n while time.time() \u003c deadline:\n r = requests.get(f\"{BASE}/instances/{instance_id}\", headers=auth_headers(token))\n r.raise_for_status()\n status = r.json()[\"data\"][\"status\"]\n print(f\" status={status}\")\n if status == target:\n return\n if status == \"destroying\":\n raise RuntimeError(\"Instance destroyed unexpectedly\")\n time.sleep(10)\n raise TimeoutError(f\"Instance {instance_id} did not reach '{target}' in {timeout}s\")\n\n# --- usage ---\ntoken = get_token()\ninstance = create_instance(\n token,\n tenant_id = os.environ[\"AURA_TENANT_ID\"],\n name = \"ci-test-instance\",\n cloud_provider = \"aws\",\n region = \"us-east-1\",\n type = \"professional-db\",\n memory = \"2GB\",\n)\n# SAVE CREDENTIALS IMMEDIATELY — password never retrievable again\nprint(f\"ID: {instance['id']}\")\nprint(f\"URI: neo4j+s://{instance['id']}.databases.neo4j.io\")\nprint(f\"Password: {instance['password']}\") # log to secure vault NOW\n\npoll_status(token, instance[\"id\"], \"running\", timeout=600)\nprint(\"Instance ready.\")\n```\n\n---\n\n## Region Codes\n\n### AWS\n| Region code | Location |\n|---|---|\n| `us-east-1` | N. Virginia |\n| `us-east-2` | Ohio |\n| `us-west-2` | Oregon |\n| `eu-west-1` | Ireland |\n| `eu-west-3` | Paris |\n| `eu-central-1` | Frankfurt |\n| `ap-southeast-1` | Singapore |\n| `ap-southeast-2` | Sydney |\n| `ap-south-1` | Mumbai |\n| `sa-east-1` | São Paulo |\n\n### GCP\n| Region code | Location |\n|---|---|\n| `europe-west1` | Belgium |\n| `europe-west3` | Frankfurt |\n| `europe-west4` | Netherlands |\n| `us-central1` | Iowa |\n| `us-east1` | S. Carolina |\n| `us-east4` | N. Virginia |\n| `asia-east1` | Taiwan |\n| `asia-northeast1` | Tokyo |\n| `asia-southeast1` | Singapore |\n| `australia-southeast1` | Sydney |\n\n### Azure\n| Region code | Location |\n|---|---|\n| `eastus` | E. US |\n| `eastus2` | E. US 2 |\n| `westeurope` | Netherlands |\n| `northeurope` | Ireland |\n| `uksouth` | London |\n| `southeastasia` | Singapore |\n| `brazilsouth` | Brazil |\n| `koreacentral` | Korea |\n\nEnterprise tiers (Business Critical, VDC) add 20+ additional regions per provider. Check console for full list.\nFree tier: GCP only; limited subset of regions.\n\n---\n\n## Terraform Provider\n\n```hcl\nterraform {\n required_providers {\n aura = {\n source = \"neo4j/neo4j-aura\"\n }\n }\n}\n\nprovider \"aura\" {\n client_id = var.aura_client_id # or AURA_CLIENT_ID env var\n client_secret = var.aura_client_secret # or AURA_CLIENT_SECRET env var\n}\n\nresource \"aura_instance\" \"db\" {\n name = \"prod-db\"\n type = \"professional-db\"\n cloud_provider = \"gcp\"\n region = \"europe-west1\"\n memory = \"4GB\"\n tenant_id = var.aura_tenant_id\n}\n\noutput \"neo4j_uri\" {\n value = \"neo4j+s://${aura_instance.db.id}.databases.neo4j.io\"\n sensitive = false\n}\noutput \"neo4j_password\" {\n value = aura_instance.db.password\n sensitive = true\n}\n```\n\nAfter `terraform apply`: poll status before marking infra ready — Terraform resource creation returns when API call completes, not when DB is `running`.\n\n---\n\n## Common Errors\n\n| Error | Cause | Fix |\n|---|---|---|\n| `403 Forbidden` after working | Token expired (1 h TTL) | Re-run `get_token()` |\n| `409 Conflict` on create | Name already exists in tenant | Change name or delete existing |\n| `422` on pause | Instance not `running` | Check status; wait for ongoing op to finish |\n| `422` on resume | Instance not `paused` | Check status |\n| `422` on resize | Below current usage | Reduce data first; can't shrink below usage |\n| Region not found | Tier doesn't support that region | Use `Free` tier on GCP only; Pro/BC on all 3 clouds |\n| Credentials lost after create | Password only returned at create time | Delete + recreate — no reset exists |\n| `429 Too Many Requests` | Rate limit hit (25 req/min Free, 125 req/min Pro+) | Add `time.sleep(2)` between polling calls |\n| `instance list` returns empty | Wrong credential active | `aura-cli credential use --name \u003cname>` |\n\n---\n\n## API Rate Limits\n\n| Tier | Requests/minute |\n|---|---|\n| Free / Pro Trial (no billing) | 25 |\n| Pro with billing, BC, VDC | 125 |\n\nPoll interval: ≥10 s to stay within limits on Free; 5 s safe on Pro+.\nOn `Retry-After` header in 5xx response: wait that many seconds before retry.\n\n---\n\n## Security Rules\n\n- Write initial credentials to `.env`; verify `.env` in `.gitignore` before proceeding\n- Never print `PASSWORD` in CI logs — write to secrets vault (AWS Secrets Manager, GitHub secret, Vault)\n- Use `from_env()` / `os.environ` — never hardcode credentials\n- If `.env` absent: `python-dotenv` `load_dotenv()` auto-loads; do NOT prompt user unless loading fails\n\n---\n\n## WebFetch — Current Docs\n\n| Need | URL |\n|---|---|\n| REST API spec (OpenAPI) | `https://neo4j.com/docs/aura/platform/api/specification/` |\n| CLI reference | `https://neo4j.com/docs/aura/aura-cli/` |\n| Region list | `https://neo4j.com/docs/aura/managing-instances/regions/` |\n| Auth details | `https://neo4j.com/docs/aura/api/authentication/` |\n| Instance actions | `https://neo4j.com/docs/aura/managing-instances/instance-actions/` |\n\n---\n\n## Checklist\n- [ ] `.env` created with URI/user/password; `.env` in `.gitignore`\n- [ ] Initial credentials saved to secure storage immediately after create\n- [ ] `poll_status` called after create — do NOT connect before status = `running`\n- [ ] `poll_status` called after pause/resume\n- [ ] Correct tier selected (Free for dev, Pro+ for production, BC for HA)\n- [ ] Region confirmed available for chosen tier and cloud provider\n- [ ] Tenant ID provided for all create/list operations (required in multi-tenant orgs)\n- [ ] Token refreshed if > 1 h old (or 403 received)\n- [ ] Delete confirmed by user — data loss is permanent, no recovery\n---","attachment_filenames":["README.md","references/aura-agent.md","references/aura-monitoring.md","references/aura-tiers.md","references/data-importer.md"],"attachments":[{"filename":"README.md","content":"> **Status: Draft / WIP**\n\n# neo4j-aura-provisioning-skill\n\nGuides agents through programmatic provisioning of Neo4j Aura instances: aura-cli, Aura REST API, instance lifecycle management, and CI/CD credential handling.\n\n**Install:**\n```bash\nnpx skills add https://github.com/neo4j-contrib/neo4j-skills --skill neo4j-aura-provisioning-skill\n```\n\nOr paste this link into your coding assistant:\nhttps://github.com/neo4j-contrib/neo4j-skills/tree/main/neo4j-aura-provisioning-skill\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":479,"content_sha256":"8904ba19dcdf493b7233fb190943481cbdab777980a6ae1097c88ab631435428"},{"filename":"references/aura-agent.md","content":"# Aura Agent (No-Code AI Agent)\n\nNo/low-code platform in the Aura Console for building AI agents that query AuraDB with natural language.\n\n## When to Use\n\nUse Aura Agent for: retrieval assistants over graph data without app code, natural language queries from the console, prototyping agent behavior.\n\nUse LangChain/LangGraph/etc. for: custom orchestration, multi-agent coordination, production deployment outside Aura console.\n\n## Prerequisites\n\nIn organization settings, both must be enabled:\n- **Generative AI assistance**\n- **Aura Agent**\n\n**Tool authentication** must be enabled for the project (default ON for orgs created after May 2025; enable manually for older orgs).\n\n## How It Works\n\nAgent loop: interpret user input → plan tools → execute tools (read-only graph queries) → generate response.\n\n## Tool Types\n\n| Tool | Description | Use when |\n|---|---|---|\n| **Cypher Template** | Parameterized Cypher — agent extracts params from question | Known, repeatable query patterns |\n| **Similarity Search** | Vector search using a vector index + embeddings | Semantic similarity (\"products similar to X\") |\n| **Text2Cypher** | LLM generates Cypher at runtime from natural language | Ad-hoc questions not covered by templates |\n\nAll tools are **read-only**. Agent cannot write to the database.\n\nSimilarity Search requires: vector index on AuraDB instance + embeddings stored on nodes.\n\n## MCP Endpoint\n\nAgents can be exposed as MCP servers for use with external clients (Cursor, Claude Desktop, etc.):\n\n1. Select agent → `...` menu → Configure\n2. Under Access, select **External**\n3. Enable **MCP server** toggle → click \"Update agent\"\n4. Copy MCP endpoint: `...` menu → \"Copy MCP server endpoint\"\n\nMCP config for Cursor (`~/.cursor/mcp.json`):\n```json\n{\n \"mcpServers\": {\n \"my-aura-agent\": {\n \"url\": \"\u003cyour-mcp-url>\",\n \"transport\": \"http\"\n }\n }\n}\n```\n\nAuthentication: OAuth2 via Aura console. First connection prompts browser login → \"Continue with Neo4j Aura\" → Accept.\n\nRestart client after adding MCP endpoint (Cursor, Claude Desktop, etc.).\n\nFor Claude Desktop and other clients: see https://neo4j.com/docs/aura/aura-agent/\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":2171,"content_sha256":"b3d70c5ae9952a09f0eaedb3d78ce2666acb9371cfa1ab6b63233e6a80b3b44d"},{"filename":"references/aura-monitoring.md","content":"# Aura Monitoring and Metrics\n\n## Accessing Metrics\n\nQuick view: expand **Metrics** section at bottom of instance card (shows CPU, Storage, Query Rate for last 24h).\nFull dashboard: instance card → \"View all metrics\" button, or Operations → Metrics in left menu.\n\n## Metrics Dashboard Tabs\n\n**Resources tab:**\n- CPU Usage — min/max/avg % of CPU capacity\n- Storage — % disk used\n- Out of Memory Errors — count; **critical metric**, monitor closely\n\n**Instance tab:**\n- Heap — min/max/avg heap memory for query execution\n- Page Cache — % time data found in memory (higher = better; low = disk reads hurting performance)\n- Page Cache Evictions — times/min data swapped out; frequent spikes = page cache too small\n- Bolt Connections — active Cypher transaction connections\n- Garbage Collection — % time freeing memory; high = memory strain\n\n**Database tab:**\n- Store Size, Query Metrics, Transaction counts, Checkpoint/Replan stats\n\n## External Monitoring (Prometheus)\n\nAura exposes a Prometheus-compatible endpoint per project:\n\n```\nhttps://customer-metrics-api.neo4j.io/api/v1/\u003cproject-id>/\u003cmetrics-id>/metrics\n```\n\nAuthentication: OAuth2 with Client ID + Client Secret from Metrics Integration settings.\nToken URL: `https://api.neo4j.io/oauth/token`\n\nPrometheus config:\n```yaml\n- job_name: 'aura-metrics'\n scrape_timeout: 30s\n metrics_path: '/api/v1/\u003cproject-id>/\u003cmetrics-id>/metrics'\n scheme: 'https'\n static_configs:\n - targets: ['customer-metrics-api.neo4j.io']\n oauth2:\n client_id: '\u003cAURA_CLIENT_ID>'\n client_secret: '\u003cAURA_CLIENT_SECRET>'\n token_url: 'https://api.neo4j.io/oauth/token'\n```\n\nAccess: project Settings → Metrics Integration.\n\nKeep Client Secret secure — grants access to the entire organization.\n\n## Backup and Restore\n\nSnapshots: automatic per tier schedule (see aura-tiers.md) + on-demand manual snapshots.\nRestore: creates a new instance from snapshot (does not overwrite existing instance).\nLocal backup: download `.dump` file from console for offline storage.\n\n## Query Logs\n\nAccess: Operations → Query Logs.\nContains: query text, duration, plan, user.\nUse for: identifying slow queries, security review of query patterns.\nSecurity logs: separate tab — tracks auth events, role changes.\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":2255,"content_sha256":"0ed5e6a9225e8710f69fa9e2816d4d514bf090219df424931aba54dfa3e8cab4"},{"filename":"references/aura-tiers.md","content":"# Aura Tiers and Connection Details\n\n## Tier Comparison\n\n| Tier | Limits | Cloud | Backups | HA | Use case |\n|---|---|---|---|---|---|\n| **Free** | 200K nodes, 400K rels | GCP us-central1 only | On-demand snapshots only | No | Learning, prototyping |\n| **Professional** | Flexible sizing | AWS/GCP/Azure multi-region | Daily, 7-day retention | No | Production moderate |\n| **Business Critical** | Flexible sizing | AWS/GCP/Azure multi-region | Daily, 7-day retention | 99.95% SLA | Enterprise |\n| **Virtual Dedicated Cloud** | Flexible sizing | Dedicated infrastructure | Hourly, 60-day retention | Yes + CMEK, VPC | Compliance/security |\n\nFree auto-pauses after 72h inactivity. Professional/BC/VDC include 7-day free trial (extendable 7 more days).\n\n## Connection String Format\n\nURI pattern (all tiers):\n```\nNEO4J_URI=neo4j+s://\u003cinstance-id>.databases.neo4j.io\nNEO4J_USERNAME=neo4j\nNEO4J_PASSWORD=\u003cpassword from credentials file>\nNEO4J_DATABASE=neo4j\nAURA_INSTANCEID=\u003cinstance-id>\n```\n\n- URI uses `neo4j+s://` (TLS enforced) — never `bolt://` or `neo4j://` for Aura\n- Instance ID is fixed at creation; cannot be changed\n- Cloud provider and region are fixed at creation — changing either requires a new instance\n- Password can be changed later via console; name and size (paid tiers) also changeable\n\n## Fixed vs Changeable Settings\n\nFixed at creation (new instance required to change):\n- Cloud provider (AWS, GCP, Azure)\n- Region/location\n- Instance ID\n\nChangeable later:\n- Instance name\n- Memory and storage size (paid tiers)\n- Password\n\n## User Roles\n\n| Role | Access |\n|---|---|\n| Organisation Admin | Full access to all projects, instances, billing, users |\n| Project Admin | Full access within project; manage users + settings |\n| Project Member | Read/write to instances; cannot manage users/settings |\n| Project Viewer | Read-only; no changes |\n| Metrics Reader | View metrics only; no DB changes |\n\nInvite users: Project Settings → Users → Invite Users.\n\n## Aura Shared Responsibility\n\nNeo4j manages: infrastructure, DB maintenance, backups, scaling, security/encryption.\nUser manages: data modeling, application code, query optimization, monitoring response.\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":2178,"content_sha256":"71ab852a3302f02032ba909cbde26c689cf2402a774ba63574bd49646f833cd3"},{"filename":"references/data-importer.md","content":"# Aura Data Importer (GUI Import Tool)\n\nData Importer is built into the Aura console. Access: instance → **Import** in left sidebar.\nNo Cypher required — visual drag-and-drop CSV-to-graph mapping.\n\n## Workflow\n\n1. **Add data source** — click \"New data source\" → CSV or TSV → upload file\n2. **Create node labels** — click \"Add node label\" → set label name → \"Map from table\" → select columns\n3. **Set unique identifier** — click key icon next to ID property → auto-creates unique constraint + index\n4. **Create relationships** — hover edge of source node → drag to target node → set type → map From/To ID columns\n5. **Add relationship properties** — select relationship → \"Map from table\" → select extra columns\n6. **Run import** — click \"Run import\" → enter DB credentials if prompted → wait for summary\n7. **Save model** — name the model → \"Save\" (reusable for future imports)\n\n## Key Behaviors\n\n- Setting a unique identifier **automatically creates a constraint and index** — enables MERGE semantics on re-import\n- Type mismatch: if Data Importer can't convert a value (e.g. text in Integer column), import continues but that node won't have the property — check counts\n- Single CSV file can source both nodes AND relationships (denormalized data): map same file to node label and relationship; set From/To ID columns\n- Models saved at project level; reusable across instances\n- Download model + data: `...` menu → \"Download model (with data)\"; restore via \"Open model (with data)\"\n- Clear existing model: `...` menu → \"Clear all\"\n\n## Common Mistakes\n\n| Mistake | Consequence | Fix |\n|---|---|---|\n| No unique identifier set | Duplicates on re-import; can't create relationships | Always set key icon before importing |\n| Keeping FK columns as node properties | Graph has no relationships | Map FK columns to relationship definitions |\n| Wrong data type | Properties silently missing | Check column types; verify node counts post-import |\n| Nodes before constraints | Constraint creation fails on existing duplicates | Unique ID in Data Importer creates constraint first automatically |\n\n## Verify After Import\n\n```cypher\n// Node counts by label\nMATCH (n) RETURN labels(n)[0] AS label, count(*) AS cnt ORDER BY cnt DESC\n\n// Relationship counts\nMATCH ()-[r]->() RETURN type(r) AS rel, count(*) AS cnt ORDER BY cnt DESC\n\n// Sample data\nMATCH (n:Movie) RETURN n LIMIT 5\n```\n\n## Data Importer vs LOAD CSV\n\nUse Data Importer when: GUI workflow preferred, one-time or occasional import, CSV files available.\nUse LOAD CSV (Cypher) when: complex transformations, batched large imports, CI/CD pipelines, incremental sync.\nUse `neo4j-import-skill` for bulk `neo4j-admin import` (offline, fastest for millions of rows).\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":2765,"content_sha256":"f7469f701520ca64bffbf945314a25040d73210260c5ade374373735562cb579"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":2},"content":[{"text":"When to Use","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Creating an Aura instance (CLI, REST API, Python, Terraform)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Pausing, resuming, resizing, or deleting an instance","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Downloading initial credentials from creation response","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Polling instance status: ","type":"text"},{"text":"creating","type":"text","marks":[{"type":"code_inline"}]},{"text":" → ","type":"text"},{"text":"running","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Setting up CI/CD provisioning or teardown pipelines","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Choosing instance tier (Free vs Professional vs Business Critical vs VDC)","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"When NOT to Use","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Cypher queries against running DB","type":"text","marks":[{"type":"strong"}]},{"text":" → ","type":"text"},{"text":"neo4j-cypher-skill","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"GDS algorithms on Aura","type":"text","marks":[{"type":"strong"}]},{"text":" → ","type":"text"},{"text":"neo4j-gds-skill","type":"text","marks":[{"type":"code_inline"}]},{"text":" (Pro with plugin) or ","type":"text"},{"text":"neo4j-aura-graph-analytics-skill","type":"text","marks":[{"type":"code_inline"}]},{"text":" (serverless)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"neo4j-admin / cypher-shell","type":"text","marks":[{"type":"strong"}]},{"text":" → ","type":"text"},{"text":"neo4j-cli-tools-skill","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Application driver setup","type":"text","marks":[{"type":"strong"}]},{"text":" → use a language driver skill (python, javascript, java, go, dotnet)","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Instance Tier Decision Table","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Tier","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"API type code","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Memory","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"GDS","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Replicas","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Use when","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"AuraDB Free","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"free-db","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"1 GB","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Dev/demo; ≤200k nodes/400k rels","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"AuraDB Professional","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"professional-db","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"2–64 GB","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"plugin available","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Production workloads","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"AuraDB Business Critical","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"business-critical","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"4–384 GB","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"plugin available","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"HA, multi-AZ, SLA","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"AuraDB VDC","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"enterprise-db","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"custom","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Dedicated infra, compliance","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"AuraDS Professional","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"professional-ds","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"2–64 GB","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅ built-in","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Data science / GDS","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"AuraDS Enterprise","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"enterprise-ds","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"custom","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Enterprise GDS","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"AuraDB Free limits","type":"text","marks":[{"type":"strong"}]},{"text":": 200k nodes, 400k rels; auto-pauses after 72 h inactivity; deleted if paused >30 days; no resize.","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Auth Setup","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"CLI (aura-cli v1.7+)","type":"text"}]},{"type":"paragraph","content":[{"text":"Install (binary, not pip):","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# macOS\ncurl -L https://github.com/neo4j/aura-cli/releases/latest/download/aura-cli-darwin-amd64.tar.gz | tar xz\nsudo mv aura-cli /usr/local/bin/\naura-cli -v # verify","type":"text"}]},{"type":"paragraph","content":[{"text":"Add credentials (from console.neo4j.io → Account Settings → API Credentials):","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aura-cli credential add \\\n --name \"my-creds\" \\\n --client-id \"$AURA_CLIENT_ID\" \\\n --client-secret \"$AURA_CLIENT_SECRET\"\naura-cli credential use --name \"my-creds\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Verify:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aura-cli instance list --output table","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"REST API — Get Bearer Token","type":"text"}]},{"type":"paragraph","content":[{"text":"Token endpoint: ","type":"text"},{"text":"POST https://api.neo4j.io/oauth/token","type":"text","marks":[{"type":"code_inline"}]},{"text":" Token expires: ","type":"text"},{"text":"3600 s (1 h)","type":"text","marks":[{"type":"strong"}]},{"text":". On 403 → refresh token.","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"TOKEN=$(curl -s --request POST 'https://api.neo4j.io/oauth/token' \\\n --user \"${AURA_CLIENT_ID}:${AURA_CLIENT_SECRET}\" \\\n --header 'Content-Type: application/x-www-form-urlencoded' \\\n --data-urlencode 'grant_type=client_credentials' \\\n | jq -r '.access_token')\necho \"Token: ${TOKEN:0:20}...\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Use in all subsequent calls: ","type":"text"},{"text":"--header \"Authorization: Bearer $TOKEN\"","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 1 — List Tenants (Projects)","type":"text"}]},{"type":"paragraph","content":[{"text":"CLI:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aura-cli tenants list --output table\n# Copy TENANT_ID for create operations","type":"text"}]},{"type":"paragraph","content":[{"text":"REST:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -s https://api.neo4j.io/v1/tenants \\\n -H \"Authorization: Bearer $TOKEN\" | jq '.data[] | {id, name}'","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 2 — Create Instance","type":"text"}]},{"type":"paragraph","content":[{"text":"CRITICAL: ","type":"text"},{"text":"Capture output immediately.","type":"text","marks":[{"type":"strong"}]},{"text":" Initial password shown ONCE — never retrievable again. If lost: delete and recreate. Store ","type":"text"},{"text":"aura-creds.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" before doing anything else.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"CLI","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aura-cli instance create \\\n --name \"my-instance\" \\\n --cloud-provider gcp \\\n --region europe-west1 \\\n --type professional-db \\\n --tenant-id \"$TENANT_ID\" \\\n --output json | tee aura-creds.json\n\n# Extract for .env\nINSTANCE_ID=$(jq -r '.id' aura-creds.json)\nPASSWORD=$(jq -r '.password' aura-creds.json)","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"REST API (full create)","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"RESPONSE=$(curl -s -X POST https://api.neo4j.io/v1/instances \\\n -H \"Authorization: Bearer $TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"my-instance\",\n \"cloud_provider\": \"gcp\",\n \"region\": \"europe-west1\",\n \"type\": \"professional-db\",\n \"tenant_id\": \"'\"$TENANT_ID\"'\",\n \"memory\": \"4GB\",\n \"version\": \"5\"\n }')\necho \"$RESPONSE\" | tee aura-creds.json\nINSTANCE_ID=$(echo \"$RESPONSE\" | jq -r '.data.id')\nPASSWORD=$(echo \"$RESPONSE\" | jq -r '.data.password')","type":"text"}]},{"type":"paragraph","content":[{"text":"Instance create request body fields:","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Field","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Required","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Values","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"name","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"any string","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"cloud_provider","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gcp","type":"text","marks":[{"type":"code_inline"}]},{"text":" ","type":"text"},{"text":"aws","type":"text","marks":[{"type":"code_inline"}]},{"text":" ","type":"text"},{"text":"azure","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"region","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"see region table","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"type","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"see tier table","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"tenant_id","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"from tenant list","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"memory","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✗","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"1GB","type":"text","marks":[{"type":"code_inline"}]},{"text":" ","type":"text"},{"text":"2GB","type":"text","marks":[{"type":"code_inline"}]},{"text":" ","type":"text"},{"text":"4GB","type":"text","marks":[{"type":"code_inline"}]},{"text":" ","type":"text"},{"text":"8GB","type":"text","marks":[{"type":"code_inline"}]},{"text":" … ","type":"text"},{"text":"384GB","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"version","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✗","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"5","type":"text","marks":[{"type":"code_inline"}]},{"text":" (default)","type":"text"}]}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 3 — Poll Until RUNNING (CRITICAL — All Ops Are Async)","type":"text"}]},{"type":"paragraph","content":[{"text":"ALL lifecycle operations (create, pause, resume, resize) are async. Do NOT attempt connection or next operation until status = ","type":"text"},{"text":"running","type":"text","marks":[{"type":"code_inline"}]},{"text":" (or ","type":"text"},{"text":"paused","type":"text","marks":[{"type":"code_inline"}]},{"text":" for pause op).","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"poll_status() {\n local INSTANCE_ID=$1 TARGET=$2 MAX_WAIT=${3:-600}\n local ELAPSED=0 STATUS\n echo \"Polling for status=$TARGET (max ${MAX_WAIT}s)...\"\n while [ $ELAPSED -lt $MAX_WAIT ]; do\n STATUS=$(aura-cli instance get --instance-id \"$INSTANCE_ID\" --output json \\\n | jq -r '.status' 2>/dev/null)\n echo \" [${ELAPSED}s] status=$STATUS\"\n [ \"$STATUS\" = \"$TARGET\" ] && echo \"Ready.\" && return 0\n [ \"$STATUS\" = \"destroying\" ] && echo \"ERROR: instance is being destroyed\" && return 1\n sleep 10; ELAPSED=$((ELAPSED + 10))\n done\n echo \"TIMEOUT after ${MAX_WAIT}s — last status: $STATUS\" && return 1\n}\n\npoll_status \"$INSTANCE_ID\" \"running\" 600","type":"text"}]},{"type":"paragraph","content":[{"text":"REST equivalent:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"while true; do\n STATUS=$(curl -s \"https://api.neo4j.io/v1/instances/$INSTANCE_ID\" \\\n -H \"Authorization: Bearer $TOKEN\" | jq -r '.data.status')\n [ \"$STATUS\" = \"running\" ] && break\n sleep 10\ndone","type":"text"}]},{"type":"paragraph","content":[{"text":"Status lifecycle:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"creating → running → pausing → paused → resuming → running\n ↘ destroying → (gone)","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 4 — Write .env and Verify","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"CONNECTION_URI=\"neo4j+s://${INSTANCE_ID}.databases.neo4j.io\"\n\ncat > .env \u003c\u003cEOF\nNEO4J_URI=${CONNECTION_URI}\nNEO4J_USERNAME=neo4j\nNEO4J_PASSWORD=${PASSWORD}\nNEO4J_DATABASE=neo4j\nAURA_INSTANCE_ID=${INSTANCE_ID}\nEOF\n\n# Ensure .env never committed\ngrep -q '^\\.env

When to Use - Creating an Aura instance (CLI, REST API, Python, Terraform) - Pausing, resuming, resizing, or deleting an instance - Downloading initial credentials from creation response - Polling instance status: → - Setting up CI/CD provisioning or teardown pipelines - Choosing instance tier (Free vs Professional vs Business Critical vs VDC) When NOT to Use - Cypher queries against running DB → - GDS algorithms on Aura → (Pro with plugin) or (serverless) - neo4j-admin / cypher-shell → - Application driver setup → use a language driver skill (python, javascript, java, go, dotnet) --- Instanc…

.gitignore 2>/dev/null || echo '.env' >> .gitignore\n\n# Verify connectivity\ncypher-shell -a \"$CONNECTION_URI\" -u neo4j -p \"$PASSWORD\" \"RETURN 'connected' AS status\"","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 5 — Lifecycle Operations","type":"text"}]},{"type":"paragraph","content":[{"text":"All operations require instance in the correct state. Wrong-state ops return 4xx error.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Pause","type":"text"}]},{"type":"paragraph","content":[{"text":"Required state: ","type":"text"},{"text":"running","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aura-cli instance pause --instance-id \"$INSTANCE_ID\"\npoll_status \"$INSTANCE_ID\" \"paused\" 600","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Resume","type":"text"}]},{"type":"paragraph","content":[{"text":"Required state: ","type":"text"},{"text":"paused","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aura-cli instance resume --instance-id \"$INSTANCE_ID\"\npoll_status \"$INSTANCE_ID\" \"running\" 900 # resume can take longer","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Resize (Professional+ only — NOT Free)","type":"text"}]},{"type":"paragraph","content":[{"text":"Required state: ","type":"text"},{"text":"running","type":"text","marks":[{"type":"code_inline"}]},{"text":"; instance remains available during resize.","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# REST only — CLI resize not available in v1.7\ncurl -s -X PATCH \"https://api.neo4j.io/v1/instances/$INSTANCE_ID\" \\\n -H \"Authorization: Bearer $TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"memory\": \"8GB\"}'\npoll_status \"$INSTANCE_ID\" \"running\" 600\n# Cannot reduce below current usage level","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Delete","type":"text"}]},{"type":"paragraph","content":[{"text":"IRREVERSIBLE. Export snapshots first if data needed.","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"aura-cli instance delete --instance-id \"$INSTANCE_ID\"\n# No poll needed — immediate","type":"text"}]},{"type":"paragraph","content":[{"text":"REST:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"curl -s -X DELETE \"https://api.neo4j.io/v1/instances/$INSTANCE_ID\" \\\n -H \"Authorization: Bearer $TOKEN\"","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Python CI/CD Provisioning Script","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"python"},"content":[{"text":"import os, time, requests\n\nCLIENT_ID = os.environ[\"AURA_CLIENT_ID\"]\nCLIENT_SECRET = os.environ[\"AURA_CLIENT_SECRET\"]\nBASE = \"https://api.neo4j.io/v1\"\n\ndef get_token() -> str:\n r = requests.post(\n \"https://api.neo4j.io/oauth/token\",\n auth=(CLIENT_ID, CLIENT_SECRET),\n data={\"grant_type\": \"client_credentials\"},\n )\n r.raise_for_status()\n return r.json()[\"access_token\"]\n\ndef auth_headers(token: str) -> dict:\n return {\"Authorization\": f\"Bearer {token}\", \"Content-Type\": \"application/json\"}\n\ndef create_instance(token: str, tenant_id: str, **kwargs) -> dict:\n payload = {\"tenant_id\": tenant_id, \"version\": \"5\", **kwargs}\n r = requests.post(f\"{BASE}/instances\", headers=auth_headers(token), json=payload)\n r.raise_for_status()\n return r.json()[\"data\"] # contains id, password, connection_url\n\ndef poll_status(token: str, instance_id: str, target: str, timeout: int = 600) -> None:\n deadline = time.time() + timeout\n while time.time() \u003c deadline:\n r = requests.get(f\"{BASE}/instances/{instance_id}\", headers=auth_headers(token))\n r.raise_for_status()\n status = r.json()[\"data\"][\"status\"]\n print(f\" status={status}\")\n if status == target:\n return\n if status == \"destroying\":\n raise RuntimeError(\"Instance destroyed unexpectedly\")\n time.sleep(10)\n raise TimeoutError(f\"Instance {instance_id} did not reach '{target}' in {timeout}s\")\n\n# --- usage ---\ntoken = get_token()\ninstance = create_instance(\n token,\n tenant_id = os.environ[\"AURA_TENANT_ID\"],\n name = \"ci-test-instance\",\n cloud_provider = \"aws\",\n region = \"us-east-1\",\n type = \"professional-db\",\n memory = \"2GB\",\n)\n# SAVE CREDENTIALS IMMEDIATELY — password never retrievable again\nprint(f\"ID: {instance['id']}\")\nprint(f\"URI: neo4j+s://{instance['id']}.databases.neo4j.io\")\nprint(f\"Password: {instance['password']}\") # log to secure vault NOW\n\npoll_status(token, instance[\"id\"], \"running\", timeout=600)\nprint(\"Instance ready.\")","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Region Codes","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"AWS","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Region code","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Location","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"us-east-1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"N. Virginia","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"us-east-2","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Ohio","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"us-west-2","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Oregon","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"eu-west-1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Ireland","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"eu-west-3","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Paris","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"eu-central-1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Frankfurt","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ap-southeast-1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Singapore","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ap-southeast-2","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Sydney","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ap-south-1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Mumbai","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"sa-east-1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"São Paulo","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"GCP","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Region code","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Location","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"europe-west1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Belgium","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"europe-west3","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Frankfurt","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"europe-west4","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Netherlands","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"us-central1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Iowa","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"us-east1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"S. Carolina","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"us-east4","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"N. Virginia","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"asia-east1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Taiwan","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"asia-northeast1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Tokyo","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"asia-southeast1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Singapore","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"australia-southeast1","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Sydney","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Azure","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Region code","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Location","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"eastus","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"E. US","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"eastus2","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"E. US 2","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"westeurope","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Netherlands","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"northeurope","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Ireland","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"uksouth","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"London","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"southeastasia","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Singapore","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"brazilsouth","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Brazil","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"koreacentral","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Korea","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"Enterprise tiers (Business Critical, VDC) add 20+ additional regions per provider. Check console for full list. Free tier: GCP only; limited subset of regions.","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Terraform Provider","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"hcl"},"content":[{"text":"terraform {\n required_providers {\n aura = {\n source = \"neo4j/neo4j-aura\"\n }\n }\n}\n\nprovider \"aura\" {\n client_id = var.aura_client_id # or AURA_CLIENT_ID env var\n client_secret = var.aura_client_secret # or AURA_CLIENT_SECRET env var\n}\n\nresource \"aura_instance\" \"db\" {\n name = \"prod-db\"\n type = \"professional-db\"\n cloud_provider = \"gcp\"\n region = \"europe-west1\"\n memory = \"4GB\"\n tenant_id = var.aura_tenant_id\n}\n\noutput \"neo4j_uri\" {\n value = \"neo4j+s://${aura_instance.db.id}.databases.neo4j.io\"\n sensitive = false\n}\noutput \"neo4j_password\" {\n value = aura_instance.db.password\n sensitive = true\n}","type":"text"}]},{"type":"paragraph","content":[{"text":"After ","type":"text"},{"text":"terraform apply","type":"text","marks":[{"type":"code_inline"}]},{"text":": poll status before marking infra ready — Terraform resource creation returns when API call completes, not when DB is ","type":"text"},{"text":"running","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Common Errors","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Error","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Cause","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Fix","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"403 Forbidden","type":"text","marks":[{"type":"code_inline"}]},{"text":" after working","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Token expired (1 h TTL)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Re-run ","type":"text"},{"text":"get_token()","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"409 Conflict","type":"text","marks":[{"type":"code_inline"}]},{"text":" on create","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Name already exists in tenant","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Change name or delete existing","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"422","type":"text","marks":[{"type":"code_inline"}]},{"text":" on pause","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Instance not ","type":"text"},{"text":"running","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Check status; wait for ongoing op to finish","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"422","type":"text","marks":[{"type":"code_inline"}]},{"text":" on resume","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Instance not ","type":"text"},{"text":"paused","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Check status","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"422","type":"text","marks":[{"type":"code_inline"}]},{"text":" on resize","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Below current usage","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Reduce data first; can't shrink below usage","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Region not found","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Tier doesn't support that region","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Use ","type":"text"},{"text":"Free","type":"text","marks":[{"type":"code_inline"}]},{"text":" tier on GCP only; Pro/BC on all 3 clouds","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Credentials lost after create","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Password only returned at create time","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Delete + recreate — no reset exists","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"429 Too Many Requests","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Rate limit hit (25 req/min Free, 125 req/min Pro+)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Add ","type":"text"},{"text":"time.sleep(2)","type":"text","marks":[{"type":"code_inline"}]},{"text":" between polling calls","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"instance list","type":"text","marks":[{"type":"code_inline"}]},{"text":" returns empty","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Wrong credential active","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"aura-cli credential use --name \u003cname>","type":"text","marks":[{"type":"code_inline"}]}]}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"API Rate Limits","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Tier","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Requests/minute","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Free / Pro Trial (no billing)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"25","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Pro with billing, BC, VDC","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"125","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"Poll interval: ≥10 s to stay within limits on Free; 5 s safe on Pro+. On ","type":"text"},{"text":"Retry-After","type":"text","marks":[{"type":"code_inline"}]},{"text":" header in 5xx response: wait that many seconds before retry.","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Security Rules","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Write initial credentials to ","type":"text"},{"text":".env","type":"text","marks":[{"type":"code_inline"}]},{"text":"; verify ","type":"text"},{"text":".env","type":"text","marks":[{"type":"code_inline"}]},{"text":" in ","type":"text"},{"text":".gitignore","type":"text","marks":[{"type":"code_inline"}]},{"text":" before proceeding","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Never print ","type":"text"},{"text":"PASSWORD","type":"text","marks":[{"type":"code_inline"}]},{"text":" in CI logs — write to secrets vault (AWS Secrets Manager, GitHub secret, Vault)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Use ","type":"text"},{"text":"from_env()","type":"text","marks":[{"type":"code_inline"}]},{"text":" / ","type":"text"},{"text":"os.environ","type":"text","marks":[{"type":"code_inline"}]},{"text":" — never hardcode credentials","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"If ","type":"text"},{"text":".env","type":"text","marks":[{"type":"code_inline"}]},{"text":" absent: ","type":"text"},{"text":"python-dotenv","type":"text","marks":[{"type":"code_inline"}]},{"text":" ","type":"text"},{"text":"load_dotenv()","type":"text","marks":[{"type":"code_inline"}]},{"text":" auto-loads; do NOT prompt user unless loading fails","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"WebFetch — Current Docs","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Need","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"URL","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"REST API spec (OpenAPI)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"https://neo4j.com/docs/aura/platform/api/specification/","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"CLI reference","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"https://neo4j.com/docs/aura/aura-cli/","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Region list","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"https://neo4j.com/docs/aura/managing-instances/regions/","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Auth details","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"https://neo4j.com/docs/aura/api/authentication/","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Instance actions","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"https://neo4j.com/docs/aura/managing-instances/instance-actions/","type":"text","marks":[{"type":"code_inline"}]}]}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Checklist","type":"text"}]},{"type":"checkbox_list","attrs":{"id":null},"content":[{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":".env","type":"text","marks":[{"type":"code_inline"}]},{"text":" created with URI/user/password; ","type":"text"},{"text":".env","type":"text","marks":[{"type":"code_inline"}]},{"text":" in ","type":"text"},{"text":".gitignore","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Initial credentials saved to secure storage immediately after create","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"poll_status","type":"text","marks":[{"type":"code_inline"}]},{"text":" called after create — do NOT connect before status = ","type":"text"},{"text":"running","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"poll_status","type":"text","marks":[{"type":"code_inline"}]},{"text":" called after pause/resume","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Correct tier selected (Free for dev, Pro+ for production, BC for HA)","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Region confirmed available for chosen tier and cloud provider","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Tenant ID provided for all create/list operations (required in multi-tenant orgs)","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Token refreshed if > 1 h old (or 403 received)","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Delete confirmed by user — data loss is permanent, no recovery","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"neo4j-aura-provisioning-skill","author":"@skillopedia","source":{"stars":76,"repo_name":"neo4j-skills","origin_url":"https://github.com/neo4j-contrib/neo4j-skills/blob/HEAD/neo4j-aura-provisioning-skill/SKILL.md","repo_owner":"neo4j-contrib","body_sha256":"a4edc4c0bbe629c82d75f17c81a224f50944fc0f9354c189b822a473928f416d","cluster_key":"4994b9fc18e804972f6abc967c5a7cfc81141d824ec5907b2ff3bb44d5fd24ed","clean_bundle":{"format":"clean-skill-bundle-v1","source":"neo4j-contrib/neo4j-skills/neo4j-aura-provisioning-skill/SKILL.md","attachments":[{"id":"eccf0d89-9f95-56d3-9f84-d20b409b7815","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/eccf0d89-9f95-56d3-9f84-d20b409b7815/attachment.md","path":"README.md","size":479,"sha256":"8904ba19dcdf493b7233fb190943481cbdab777980a6ae1097c88ab631435428","contentType":"text/markdown; charset=utf-8"},{"id":"a39d4782-5e88-5aac-91ab-5d786b630ecf","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/a39d4782-5e88-5aac-91ab-5d786b630ecf/attachment.md","path":"references/aura-agent.md","size":2171,"sha256":"b3d70c5ae9952a09f0eaedb3d78ce2666acb9371cfa1ab6b63233e6a80b3b44d","contentType":"text/markdown; charset=utf-8"},{"id":"83eb0772-93a0-594e-a527-4b380b9c56d4","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/83eb0772-93a0-594e-a527-4b380b9c56d4/attachment.md","path":"references/aura-monitoring.md","size":2255,"sha256":"0ed5e6a9225e8710f69fa9e2816d4d514bf090219df424931aba54dfa3e8cab4","contentType":"text/markdown; charset=utf-8"},{"id":"96685cb6-eacd-56fc-a81c-7d4e8b771c99","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/96685cb6-eacd-56fc-a81c-7d4e8b771c99/attachment.md","path":"references/aura-tiers.md","size":2178,"sha256":"71ab852a3302f02032ba909cbde26c689cf2402a774ba63574bd49646f833cd3","contentType":"text/markdown; charset=utf-8"},{"id":"10f0222f-c62c-5704-9855-c7a5c0a57d35","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/10f0222f-c62c-5704-9855-c7a5c0a57d35/attachment.md","path":"references/data-importer.md","size":2765,"sha256":"f7469f701520ca64bffbf945314a25040d73210260c5ade374373735562cb579","contentType":"text/markdown; charset=utf-8"}],"bundle_sha256":"e0869b4b5c038eaba8992c0495c14e0e1f625a8bbc4437e6f9718f0814607b2e","attachment_count":5,"text_attachments":5,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":0,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"neo4j-aura-provisioning-skill/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"devops-infrastructure","category_label":"DevOps"},"exact_dupes_collapsed_into_this":0},"version":"v1","category":"devops-infrastructure","import_tag":"clean-skills-v1","description":"Provisions and manages Neo4j Aura instances via CLI (aura-cli v1.7+) or REST API. Use when creating, pausing, resuming, resizing, or deleting AuraDB Free/Professional/Business Critical/VDC instances; downloading credentials; scripting CI/CD pipelines; polling async status; or using the Terraform neo4j/neo4j-aura provider. Covers auth setup (client credentials OAuth2), credential lifecycle (download once — never recoverable), instance type selection, region codes, and Python provisioning scripts. Does NOT handle Cypher queries — use neo4j-cypher-skill. Does NOT cover Graph Data Science algorithms — use neo4j-gds-skill or neo4j-aura-graph-analytics-skill. Does NOT cover neo4j-admin/cypher-shell — use neo4j-cli-tools-skill.","allowed-tools":"Bash WebFetch"}},"renderedAt":1782981804841}

When to Use - Creating an Aura instance (CLI, REST API, Python, Terraform) - Pausing, resuming, resizing, or deleting an instance - Downloading initial credentials from creation response - Polling instance status: → - Setting up CI/CD provisioning or teardown pipelines - Choosing instance tier (Free vs Professional vs Business Critical vs VDC) When NOT to Use - Cypher queries against running DB → - GDS algorithms on Aura → (Pro with plugin) or (serverless) - neo4j-admin / cypher-shell → - Application driver setup → use a language driver skill (python, javascript, java, go, dotnet) --- Instanc…