RecurLensDocs

Agent/API reference

Canonical workspace-scoped Agent/API v1 operations and schemas.

Canonical contract

This reference is rendered from docs/api/agent-api-v1.openapi.yaml. Money is represented as two-decimal strings, dates are YYYY-MM-DD, timestamps are UTC, and RecurLens never converts currencies. It is documentation only — there is no live Send button, and a request still needs your own workspace token.

Download the canonical OpenAPI YAML for client generation or offline validation.

New to the API? Complete the Agent/API quickstart before using the schemas below. Preserve the response requestId, treat cursors as opaque, and only retry when error.retryable is true.

GET/workspaces/{workspaceId}/agent-clients/tokens

Authorization

UserSession
AuthorizationBearer <token>

In: header

Path Parameters

workspaceId*string
Formatuuid

Response Body

application/json

application/json

curl -X GET "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-clients/tokens"
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c",      "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",      "name": "string",      "tokenPrefix": "string",      "scopes": [        "subscriptions:read"      ],      "expiresAt": "2019-08-24T14:15:22Z",      "lastUsedAt": "2019-08-24T14:15:22Z",      "revokedAt": "2019-08-24T14:15:22Z",      "createdAt": "2019-08-24T14:15:22Z"    }  ]}
POST/workspaces/{workspaceId}/agent-clients/tokens

Authorization

UserSession
AuthorizationBearer <token>

In: header

Path Parameters

workspaceId*string
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-clients/tokens" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "expiresAt": "2019-08-24T14:15:22Z",    "scopes": [      "subscriptions:read"    ]  }'
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": {    "token": "string",    "tokenMetadata": {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c",      "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",      "name": "string",      "tokenPrefix": "string",      "scopes": [        "subscriptions:read"      ],      "expiresAt": "2019-08-24T14:15:22Z",      "lastUsedAt": "2019-08-24T14:15:22Z",      "revokedAt": "2019-08-24T14:15:22Z",      "createdAt": "2019-08-24T14:15:22Z"    }  }}
POST/workspaces/{workspaceId}/agent-clients/tokens/{tokenId}/revoke

Authorization

UserSession
AuthorizationBearer <token>

In: header

Path Parameters

workspaceId*string
Formatuuid
tokenId*string
Formatuuid

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-clients/tokens/497f6eca-6276-4993-bfeb-53cbbbba6f08/revoke"
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": {}}
POST/workspaces/{workspaceId}/agent-tools/list_subscriptions

Authorization

AgentToken
AuthorizationBearer <token>

User-bound, one-workspace token with a maximum 90-day lifetime.

In: header

Path Parameters

workspaceId*string
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/list_subscriptions" \  -H "Content-Type: application/json" \  -d '{}'
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "name": "string",      "cost": {        "amount": "1499.00",        "currency": "INR"      },      "billingCycle": "monthly",      "renewalDate": "2019-08-24",      "status": "active",      "version": 0,      "category": {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "name": "string"      },      "owner": {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "displayName": "string"      },      "contractEndDate": "2019-08-24",      "noticePeriodDays": 0,      "reviewReasons": [        {          "code": "PAST_RENEWAL_DATE",          "relevantDate": "2019-08-24"        }      ]    }  ]}
POST/workspaces/{workspaceId}/agent-tools/list_purchases

Authorization

AgentToken
AuthorizationBearer <token>

User-bound, one-workspace token with a maximum 90-day lifetime.

In: header

Path Parameters

workspaceId*string
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/list_purchases" \  -H "Content-Type: application/json" \  -d '{}'
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "name": "string",      "cost": {        "amount": "1499.00",        "currency": "INR"      },      "purchaseDate": "2019-08-24",      "status": "completed",      "version": 0,      "category": {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "name": "string"      },      "owner": {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "displayName": "string"      },      "vendorContact": "string"    }  ]}
POST/workspaces/{workspaceId}/agent-tools/upcoming_renewals

Authorization

AgentToken
AuthorizationBearer <token>

User-bound, one-workspace token with a maximum 90-day lifetime.

In: header

Path Parameters

workspaceId*string
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/upcoming_renewals" \  -H "Content-Type: application/json" \  -d '{}'
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": {    "rangeStart": "2019-08-24",    "rangeEnd": "2019-08-24",    "renewals": [      {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "name": "string",        "cost": {          "amount": "1499.00",          "currency": "INR"        },        "billingCycle": "monthly",        "renewalDate": "2019-08-24",        "status": "active",        "version": 0,        "category": {          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",          "name": "string"        },        "owner": {          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",          "displayName": "string"        },        "contractEndDate": "2019-08-24",        "noticePeriodDays": 0,        "reviewReasons": [          {            "code": "PAST_RENEWAL_DATE",            "relevantDate": "2019-08-24"          }        ],        "daysUntilRenewal": 0      }    ]  }}
POST/workspaces/{workspaceId}/agent-tools/summarize_recurring_spend

Authorization

AgentToken
AuthorizationBearer <token>

User-bound, one-workspace token with a maximum 90-day lifetime.

In: header

Path Parameters

workspaceId*string
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/summarize_recurring_spend" \  -H "Content-Type: application/json" \  -d '{}'
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": [    {      "groupKey": "string",      "currency": "INR",      "subscriptionCount": 0,      "monthlyEstimate": "1499.00",      "annualEstimate": "1499.00"    }  ]}
POST/workspaces/{workspaceId}/agent-tools/find_duplicate_spend

Authorization

AgentToken
AuthorizationBearer <token>

User-bound, one-workspace token with a maximum 90-day lifetime.

In: header

Path Parameters

workspaceId*string
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/find_duplicate_spend" \  -H "Content-Type: application/json" \  -d '{}'
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": [    {      "normalizedName": "string",      "currency": "INR",      "matchReasons": [        "NORMALIZED_NAME",        "CURRENCY"      ],      "subscriptions": [        {          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",          "name": "string",          "cost": {            "amount": "1499.00",            "currency": "INR"          },          "billingCycle": "monthly",          "renewalDate": "2019-08-24",          "status": "active",          "version": 0,          "category": {            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",            "name": "string"          },          "owner": {            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",            "displayName": "string"          },          "contractEndDate": "2019-08-24",          "noticePeriodDays": 0,          "reviewReasons": [            {              "code": "PAST_RENEWAL_DATE",              "relevantDate": "2019-08-24"            }          ]        },        {          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",          "name": "string",          "cost": {            "amount": "1499.00",            "currency": "INR"          },          "billingCycle": "monthly",          "renewalDate": "2019-08-24",          "status": "active",          "version": 0,          "category": {            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",            "name": "string"          },          "owner": {            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",            "displayName": "string"          },          "contractEndDate": "2019-08-24",          "noticePeriodDays": 0,          "reviewReasons": [            {              "code": "PAST_RENEWAL_DATE",              "relevantDate": "2019-08-24"            }          ]        }      ]    }  ]}
POST/workspaces/{workspaceId}/agent-tools/budget_status

Authorization

AgentToken
AuthorizationBearer <token>

User-bound, one-workspace token with a maximum 90-day lifetime.

In: header

Path Parameters

workspaceId*string
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/budget_status" \  -H "Content-Type: application/json" \  -d '{}'
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": [    {      "scope": "workspace",      "availability": "configured",      "categoryId": "337f5e5d-288b-40d5-be14-901cc3acacc0",      "categoryName": "string",      "threshold": {        "amount": "1499.00",        "currency": "INR"      },      "currentMonthlySpend": {        "amount": "1499.00",        "currency": "INR"      },      "remaining": {        "amount": "1499.00",        "currency": "INR"      },      "percentageUsed": "string",      "status": "within_budget"    }  ]}
POST/workspaces/{workspaceId}/agent-tools/create_subscription

Authorization

AgentToken
AuthorizationBearer <token>

User-bound, one-workspace token with a maximum 90-day lifetime.

In: header

Path Parameters

workspaceId*string
Formatuuid

Header Parameters

Idempotency-Key*string
Length16 <= length <= 128

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/create_subscription" \  -H "Idempotency-Key: stringstringstri" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "cost": "1499.00",    "currency": "INR",    "billingCycle": "monthly",    "renewalDate": "2019-08-24"  }'
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "action": "create_subscription",    "status": "pending",    "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c",    "approvalUrl": "../dictionary",    "expiresAt": "2019-08-24T14:15:22Z",    "createdAt": "2019-08-24T14:15:22Z",    "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b",    "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40"  }}
POST/workspaces/{workspaceId}/agent-tools/update_subscription

Authorization

AgentToken
AuthorizationBearer <token>

User-bound, one-workspace token with a maximum 90-day lifetime.

In: header

Path Parameters

workspaceId*string
Formatuuid

Header Parameters

Idempotency-Key*string
Length16 <= length <= 128

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/update_subscription" \  -H "Idempotency-Key: stringstringstri" \  -H "Content-Type: application/json" \  -d '{    "subscriptionId": "d079718b-ff63-45dd-947b-4950c023750f",    "expectedVersion": 0,    "changes": {}  }'
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "action": "create_subscription",    "status": "pending",    "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c",    "approvalUrl": "../dictionary",    "expiresAt": "2019-08-24T14:15:22Z",    "createdAt": "2019-08-24T14:15:22Z",    "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b",    "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40"  }}
POST/workspaces/{workspaceId}/agent-tools/create_purchase

Authorization

AgentToken
AuthorizationBearer <token>

User-bound, one-workspace token with a maximum 90-day lifetime.

In: header

Path Parameters

workspaceId*string
Formatuuid

Header Parameters

Idempotency-Key*string
Length16 <= length <= 128

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/create_purchase" \  -H "Idempotency-Key: stringstringstri" \  -H "Content-Type: application/json" \  -d '{}'
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "action": "create_subscription",    "status": "pending",    "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c",    "approvalUrl": "../dictionary",    "expiresAt": "2019-08-24T14:15:22Z",    "createdAt": "2019-08-24T14:15:22Z",    "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b",    "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40"  }}
POST/workspaces/{workspaceId}/agent-tools/update_purchase

Authorization

AgentToken
AuthorizationBearer <token>

User-bound, one-workspace token with a maximum 90-day lifetime.

In: header

Path Parameters

workspaceId*string
Formatuuid

Header Parameters

Idempotency-Key*string
Length16 <= length <= 128

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/update_purchase" \  -H "Idempotency-Key: stringstringstri" \  -H "Content-Type: application/json" \  -d '{    "purchaseId": "e9b59bb6-ba5b-48ce-918b-5f842e450f10",    "expectedVersion": 0,    "changes": {}  }'
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "action": "create_subscription",    "status": "pending",    "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c",    "approvalUrl": "../dictionary",    "expiresAt": "2019-08-24T14:15:22Z",    "createdAt": "2019-08-24T14:15:22Z",    "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b",    "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40"  }}
GET/workspaces/{workspaceId}/agent-proposals/{proposalId}

Authorization

AgentToken
AuthorizationBearer <token>

User-bound, one-workspace token with a maximum 90-day lifetime.

In: header

Path Parameters

workspaceId*string
Formatuuid
proposalId*string
Formatuuid

Response Body

application/json

application/json

curl -X GET "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-proposals/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "action": "create_subscription",    "status": "pending",    "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c",    "approvalUrl": "../dictionary",    "expiresAt": "2019-08-24T14:15:22Z",    "createdAt": "2019-08-24T14:15:22Z",    "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b",    "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40"  }}
GET/workspaces/{workspaceId}/agent-proposals/{proposalId}/review

Authorization

UserSession
AuthorizationBearer <token>

In: header

Path Parameters

workspaceId*string
Formatuuid
proposalId*string
Formatuuid

Response Body

application/json

application/json

curl -X GET "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-proposals/497f6eca-6276-4993-bfeb-53cbbbba6f08/review"
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "action": "create_subscription",    "status": "pending",    "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c",    "approvalUrl": "../dictionary",    "expiresAt": "2019-08-24T14:15:22Z",    "createdAt": "2019-08-24T14:15:22Z",    "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b",    "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40",    "fieldDiff": [      {        "field": "string",        "currentValue": null,        "proposedValue": null      }    ],    "budgetImpact": [      {        "groupKey": "string",        "currency": "INR",        "subscriptionCount": 0,        "monthlyEstimate": "1499.00",        "annualEstimate": "1499.00"      }    ]  }}
POST/workspaces/{workspaceId}/agent-proposals/{proposalId}/review

Authorization

UserSession
AuthorizationBearer <token>

In: header

Path Parameters

workspaceId*string
Formatuuid
proposalId*string
Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-proposals/497f6eca-6276-4993-bfeb-53cbbbba6f08/review" \  -H "Content-Type: application/json" \  -d '{    "decision": "confirm"  }'
{  "success": true,  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "meta": {    "apiVersion": "v1",    "timezone": "UTC",    "hasMore": true,    "nextCursor": "string",    "assumptions": [      "string"    ]  },  "error": null,  "data": {    "proposal": {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "action": "create_subscription",      "status": "pending",      "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c",      "approvalUrl": "../dictionary",      "expiresAt": "2019-08-24T14:15:22Z",      "createdAt": "2019-08-24T14:15:22Z",      "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b",      "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40"    },    "subscription": {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "name": "string",      "cost": {        "amount": "1499.00",        "currency": "INR"      },      "billingCycle": "monthly",      "renewalDate": "2019-08-24",      "status": "active",      "version": 0,      "category": {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "name": "string"      },      "owner": {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "displayName": "string"      },      "contractEndDate": "2019-08-24",      "noticePeriodDays": 0,      "reviewReasons": [        {          "code": "PAST_RENEWAL_DATE",          "relevantDate": "2019-08-24"        }      ]    },    "purchase": {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "name": "string",      "cost": {        "amount": "1499.00",        "currency": "INR"      },      "purchaseDate": "2019-08-24",      "status": "completed",      "version": 0,      "category": {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "name": "string"      },      "owner": {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "displayName": "string"      },      "vendorContact": "string"    }  }}