-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Purpose
Track differences between the official Redis Cloud OpenAPI spec and actual API responses. Use this for internal tickets to fix the spec.
Spec URL: https://api.redislabs.com/v1/cloud-api-docs
Policy
- No raw JSON fields - every field must be fully typed
- No
extra: Value- missing fields are bugs to fix
Progress
Response Types
| Type | Spec Props | Actual | Status | PR |
|---|---|---|---|---|
| AccountSubscriptionDatabases | 2 | 4+ | Done | #41 |
| Account/RootAccount | 0 | 10+ | Done | #41 |
| Database | 2 | 27+ | Pending | - |
| Subscription | 12 | 20+ | Pending | - |
| AccountSubscriptions | 2 | ? | Pending | - |
| FixedDatabase | 29 | ? | Pending | - |
| FixedSubscription | 27 | ? | Pending | - |
| ACLUser | 5 | ? | Pending | - |
| CloudAccount | 9 | ? | Pending | - |
| TaskStateUpdate | 7 | ? | Pending | - |
Files to audit (by extra: Value count)
-
src/flexible/databases.rs- 29 (1 fixed in refactor: align Rust types with Go client (rediscloud-go-api) #41) -
src/flexible/subscriptions.rs- 31 -
src/fixed/databases.rs- 21 -
src/account.rs- 13 (RootAccount fixed in refactor: align Rust types with Go client (rediscloud-go-api) #41) -
src/acl.rs- 13 -
src/fixed/subscriptions.rs- 9 -
src/users.rs- 5 -
src/cloud_accounts.rs- 5 -
src/types.rs- 3 -
src/connectivity/*.rs- 8 -
src/tasks.rs- 1 -
src/cost_report.rs- 1
Validated Deltas
AccountSubscriptionDatabases (Fixed in #41)
Spec: accountId, links
Actual:
{
"accountId": 761976,
"subscription": [{
"subscriptionId": 3096571,
"databases": [...],
"links": [...]
}],
"links": [...]
}Missing from spec: subscription array
Account/RootAccount (Fixed in #41)
Spec: 0 properties (only documented as "account" field with no definition)
Actual:
{
"account": {
"id": 761976,
"name": "account-name",
"createdTimestamp": "2024-06-04T19:47:09Z",
"updatedTimestamp": "2024-06-04T19:51:29Z",
"marketplaceStatus": "active",
"key": {
"name": "key-name",
"accountId": 761976,
"accountName": "account-name",
"allowedSourceIps": ["0.0.0.0/0"],
"owner": {
"name": "Owner Name",
"email": "owner@example.com"
},
"userAccountId": 12345,
"httpSourceIp": "1.2.3.4",
"accountMarketplaceId": null
}
},
"links": [...]
}Missing from spec: Entire account object structure
Database (from GET /subscriptions/{id}/databases)
Spec: databaseId, links
Actual (27 fields):
- Basic:
databaseId,name,protocol,provider,region,status - Version:
redisVersion,redisVersionCompliance,respVersion - Memory:
memoryLimitInGb,datasetSizeInGb,memoryUsedInMb,memoryStorage - Config:
supportOSSClusterApi,useExternalEndpointForOSSClusterApi,dataPersistence,replication,dataEvictionPolicy,queryPerformanceFactor - Endpoints:
publicEndpoint,privateEndpoint - Timestamps:
activatedOn - Nested objects:
throughputMeasurement:{by, value}clustering:{numberOfShards, regexRules, hashingPolicy}security:{enableDefaultUser, sslClientAuthentication, tlsClientAuthentication, enableTls, sourceIps}backup:{enableRemoteBackup, interval, timeUTC, destination}
- Arrays:
modules,alerts,links - Nullable:
replicaOf,replica
Subscription (from GET /subscriptions)
Spec: 12 properties
Actual (20+ fields):
- Basic:
id,name,status,memoryStorage,numberOfDatabases - Payment:
paymentMethodId,paymentMethodType - Config:
storageEncryption,persistentStorageEncryptionType,deploymentType,publicEndpointAccess - Nested:
cloudDetails[],subscriptionPricing[],links[]
Notes
- Local spec:
tests/fixtures/cloud_openapi.json(119 schemas) - Live spec: 135 schemas, 88 paths (16 newer schemas)
- GETs are easy to validate; POSTs need test resources
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels