$npx -y skills add neo4j-contrib/neo4j-skills --skill neo4j-aura-provisioning-skillProvisions and manages Neo4j Aura instances via CLI (aura-cli v1.7+) or REST API.
| 1 | ## When to Use |
| 2 | - Creating an Aura instance (CLI, REST API, Python, Terraform) |
| 3 | - Pausing, resuming, resizing, or deleting an instance |
| 4 | - Downloading initial credentials from creation response |
| 5 | - Polling instance status: `creating` → `running` |
| 6 | - Setting up CI/CD provisioning or teardown pipelines |
| 7 | - Choosing instance tier (Free vs Professional vs Business Critical vs VDC) |
| 8 | |
| 9 | ## When NOT to Use |
| 10 | - **Cypher queries against running DB** → `neo4j-cypher-skill` |
| 11 | - **GDS algorithms on Aura** → `neo4j-gds-skill` (Pro with plugin) or `neo4j-aura-graph-analytics-skill` (serverless) |
| 12 | - **neo4j-admin / cypher-shell** → `neo4j-cli-tools-skill` |
| 13 | - **Application driver setup** → use a language driver skill (python, javascript, java, go, dotnet) |
| 14 | |
| 15 | --- |
| 16 | |
| 17 | ## Instance Tier Decision Table |
| 18 | |
| 19 | | Tier | API type code | Memory | GDS | Replicas | Use when | |
| 20 | |---|---|---|---|---|---| |
| 21 | | AuraDB Free | `free-db` | 1 GB | ❌ | ❌ | Dev/demo; ≤200k nodes/400k rels | |
| 22 | | AuraDB Professional | `professional-db` | 2–64 GB | plugin available | ❌ | Production workloads | |
| 23 | | AuraDB Business Critical | `business-critical` | 4–384 GB | plugin available | ✅ | HA, multi-AZ, SLA | |
| 24 | | AuraDB VDC | `enterprise-db` | custom | ✅ | ✅ | Dedicated infra, compliance | |
| 25 | | AuraDS Professional | `professional-ds` | 2–64 GB | ✅ built-in | ❌ | Data science / GDS | |
| 26 | | AuraDS Enterprise | `enterprise-ds` | custom | ✅ | ✅ | Enterprise GDS | |
| 27 | |
| 28 | **AuraDB Free limits**: 200k nodes, 400k rels; auto-pauses after 72 h inactivity; deleted if paused >30 days; no resize. |
| 29 | |
| 30 | --- |
| 31 | |
| 32 | ## Auth Setup |
| 33 | |
| 34 | ### CLI (aura-cli v1.7+) |
| 35 | |
| 36 | Install (binary, not pip): |
| 37 | ```bash |
| 38 | # macOS |
| 39 | curl -L https://github.com/neo4j/aura-cli/releases/latest/download/aura-cli-darwin-amd64.tar.gz | tar xz |
| 40 | sudo mv aura-cli /usr/local/bin/ |
| 41 | aura-cli -v # verify |
| 42 | ``` |
| 43 | |
| 44 | Add credentials (from console.neo4j.io → Account Settings → API Credentials): |
| 45 | ```bash |
| 46 | aura-cli credential add \ |
| 47 | --name "my-creds" \ |
| 48 | --client-id "$AURA_CLIENT_ID" \ |
| 49 | --client-secret "$AURA_CLIENT_SECRET" |
| 50 | aura-cli credential use --name "my-creds" |
| 51 | ``` |
| 52 | |
| 53 | Verify: |
| 54 | ```bash |
| 55 | aura-cli instance list --output table |
| 56 | ``` |
| 57 | |
| 58 | ### REST API — Get Bearer Token |
| 59 | |
| 60 | Token endpoint: `POST https://api.neo4j.io/oauth/token` |
| 61 | Token expires: **3600 s (1 h)**. On 403 → refresh token. |
| 62 | |
| 63 | ```bash |
| 64 | TOKEN=$(curl -s --request POST 'https://api.neo4j.io/oauth/token' \ |
| 65 | --user "${AURA_CLIENT_ID}:${AURA_CLIENT_SECRET}" \ |
| 66 | --header 'Content-Type: application/x-www-form-urlencoded' \ |
| 67 | --data-urlencode 'grant_type=client_credentials' \ |
| 68 | | jq -r '.access_token') |
| 69 | echo "Token: ${TOKEN:0:20}..." |
| 70 | ``` |
| 71 | |
| 72 | Use in all subsequent calls: `--header "Authorization: Bearer $TOKEN"` |
| 73 | |
| 74 | --- |
| 75 | |
| 76 | ## Step 1 — List Tenants (Projects) |
| 77 | |
| 78 | CLI: |
| 79 | ```bash |
| 80 | aura-cli tenants list --output table |
| 81 | # Copy TENANT_ID for create operations |
| 82 | ``` |
| 83 | |
| 84 | REST: |
| 85 | ```bash |
| 86 | curl -s https://api.neo4j.io/v1/tenants \ |
| 87 | -H "Authorization: Bearer $TOKEN" | jq '.data[] | {id, name}' |
| 88 | ``` |
| 89 | |
| 90 | --- |
| 91 | |
| 92 | ## Step 2 — Create Instance |
| 93 | |
| 94 | CRITICAL: **Capture output immediately.** Initial password shown ONCE — never retrievable again. |
| 95 | If lost: delete and recreate. Store `aura-creds.json` before doing anything else. |
| 96 | |
| 97 | ### CLI |
| 98 | |
| 99 | ```bash |
| 100 | aura-cli instance create \ |
| 101 | --name "my-instance" \ |
| 102 | --cloud-provider gcp \ |
| 103 | --region europe-west1 \ |
| 104 | --type professional-db \ |
| 105 | --tenant-id "$TENANT_ID" \ |
| 106 | --output json | tee aura-creds.json |
| 107 | |
| 108 | # Extract for .env |
| 109 | INSTANCE_ID=$(jq -r '.id' aura-creds.json) |
| 110 | PASSWORD=$(jq -r '.password' aura-creds.json) |
| 111 | ``` |
| 112 | |
| 113 | ### REST API (full create) |
| 114 | |
| 115 | ```bash |
| 116 | RESPONSE=$(curl -s -X POST https://api.neo4j.io/v1/instances \ |
| 117 | -H "Authorization: Bearer $TOKEN" \ |
| 118 | -H "Content-Type: application/json" \ |
| 119 | -d '{ |
| 120 | "name": "my-instance", |
| 121 | "cloud_provider": "gcp", |
| 122 | "region": "europe-west1", |
| 123 | "type": "professional-db", |
| 124 | "tenant_id": "'"$TENANT_ID"'", |
| 125 | "memory": "4GB", |
| 126 | "version": "5" |
| 127 | }') |
| 128 | echo "$RESPONSE" | tee aura-creds.json |
| 129 | INSTANCE_ID=$(echo "$RESPONSE" | jq -r '.data.id') |
| 130 | PASSWORD=$(echo "$RESPONSE" | jq -r '.data.password') |
| 131 | ``` |
| 132 | |
| 133 | Instance create request body fields: |
| 134 | |
| 135 | | Field | Required | Values | |
| 136 | |---|---|---| |
| 137 | | `name` | ✅ | any string | |
| 138 | | `cloud_provider` | ✅ | `gcp` `aws` `azure` | |