Hi @Jesus, for some reason, something broke about the generation of the NodeJS wrapper using the `api` library, and we haven’t been able to fix it.
As an alternative, you can use the OpenAPI spec directly with the `api` library like this:
// Instead of this
const sdk = require('api')('@revenuecat/v4.0#1uypz42l7uldb2n');
// do this
const sdk = require('api')('https://docs-origin.revenuecat.com/openapi/61e6d1c8dc645600539687c6');
Let me know if this works!
I believe this is still broken 3+ months later? Can we rely on this API or should we try to use something else instead? The fix did work so thank you!
@Jens Hi! Please, link this post in the REST API doc, think it could really help!
Thanks! :)
We tried using this:
const sdk = require('api')('https://docs-origin.revenuecat.com/openapi/61e6d1c8dc645600539687c6');
try {
sdk.auth('Bearer REVENUECAT_STRIPE_API_KEY);
console.log('Sending purchase data to RevenueCat...')
sdk.receipts({
app_user_id: userId,
fetch_token: subscriptionId,
is_restore: 'false',
}, {'x-platform': 'stripe', 'Content-Type': 'application/json',
'Accept': 'application/json',}, )
.then(({ data }) => console.log(data))
.catch(err => console.error(err));
} catch (error) {
console.log('There was an error when sending purchase data to ReveneuCat: ', error);
The functions executes on server side, but no purchases are added to RevenueCat.
@Jens Do you see any mistake in the code?
@Jens
We do get an error object back (but not always):
FetchError: Bad Request at new FetchError (/workspace/node_modules/api/dist/core/errors/fetchError.js) at APICore.<anonymous> (/workspace/node_modules/api/dist/core/index.js:) at step (/workspace/node_modules/api/dist/core/index.js:) at Object.next (/workspace/node_modules/api/dist/core/index.js) at fulfilled (/workspace/node_modules/api/dist/core/index.js:) at processTicksAndRejections (node:internal/process/task_queues:96:5) {
status: 400,
data: { code: 7227, message: 'Content-Type not application/json' },
headers: Headers {
pSymbol(map)]: :Object: null prototype] {
date: :Array],
'content-type': :Array],
'content-length': :Array],
connection: :Array],
server: :Array],
'access-control-allow-origin': :Array],
'x-envoy-upstream-service-time': :Array]
}
},
res: Response {
size: 0,
timeout: 0,
pSymbol(Body internals)]: { body: :PassThrough], disturbed: true, error: null },
>Symbol(Response internals)]: {
url: 'https://api.revenuecat.com/v1/receipts',
status: 400,
statusText: 'Bad Request',
headers: sHeaders],
counter: 0
}
}
}
This workaround has stopped working altogether for me in the last 24 hours. Can anyone else confirm?
EDIT: Updating spec to latest version fixed it: https://docs-origin.revenuecat.com/openapi/6421b235414b45007a0bd1a2
I am getting the error:
Unhandled error Error: Cannot find module 'api'
Require stack: - /workspace/index.js - /layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/loader.js - /layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/main.js at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1021:15) at Function.Module._load (node:internal/modules/cjs/loader:866:27) at Module.require (node:internal/modules/cjs/loader:1093:19) at require (node:internal/modules/cjs/helpers:108:18) at /workspace/index.js:10:13 at fixedLen (/workspace/node_modules/firebase-functions/lib/providers/https.js:66:41) at /workspace/node_modules/firebase-functions/lib/common/providers/https.js:385:32 at processTicksAndRejections (node:internal/process/task_queues:96:5) { code: 'MODULE_NOT_FOUND', requireStack: [ '/workspace/index.js', '/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/loader.js', '/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/main.js' ] }
Can someone help me?
Nevermind.. i was in the wrong directory when typing npm install >_>
Getting the “error: Sorry, `grant Promotional Entitlement` does not appear to be a valid operation on this API.” message though.
So its not working, even with the latest version
@Jens
Fix stopped working for me; am investigating:
```
Unhandled error Error: Unable to retrieve URL (https://docs-origin.revenuecat.com/openapi/61e6d1c8dc645600539687c6). Reason: Not Found
```
Edit: maybe it works? My users were getting errors, but when I do quick scripts it seems to work? However, visiting the URL does not work (https://docs-origin.revenuecat.com/openapi/61e6d1c8dc645600539687c6), while visiting other similar URL’s does work (https://docs-origin.revenuecat.com/openapi/643609ec71d2cb04b3850751).
Edit 2: it does not work. My local computer had it cached. Changing URL to `https://docs-origin.revenuecat.com/openapi/643609ec71d2cb04b3850751` seems to fix it?
@kgaidis yeah I guess the URL must have changed for some reason… Honestly I don’t know why.
Any update? i am getting same error.
I was able to fix by now switching to the official(?) API:
```
const revenueCat = require("api")("@revenuecat/v5.1#rx9voxflgd0mr0q");
```
Otherwise, this temporary method originally mentioned kept breaking. It broke. I updated. It broke. etc.
I am using thisconst sdk = require('api')('@revenuecat/v5.1#rx9voxflgd0mr0q');
and getting the error.
You use another one? @kgaidis
I am currently using the one I posted just now. It worked fine for me, but maybe something is broken again.
Thx for your reply. It seems broken.
@asakirullah have you checked that you have the most recent version of the `api` package installed? I just tried it from scratch with a fresh install and the initialization above (const sdk = require('api')('@revenuecat/v5.1#rx9voxflgd0mr0q');
) and it works.