Hi @ivov, thanks for making the nodebuilder available via github.
I have just tried that on my mac with a yaml file from Brightcove and ran the commands but I am not seeing anything in the src/output directory.
Here is a segment from the log in terminal.
npm run generate
> [email protected] generate
> ttsc && node dist/scripts/generate.js
? Select the input file format. YAML
? Select the input YAML file. Brightcove_live_openapi_v1.yaml
/Users/pier-andre/nodebuilder/node_modules/typescript-is/index.js:89
throw new TypeGuardError(errorObject, obj);
^
TypeGuardError: validation failed at object: expected 'metaParams' in object, found: {
openapi: '3.0.0',
info: {
title: 'Live API Reference',
description: 'Reference for the Brightcove Live API, used to create and manage live streaming events.\n' +
'\n' +
'For additional in-depth guides to features of the API, see the **[Support Site](/)**.\n' +
'\n' +
'**Base URL**: https://api.bcovlive.io/v1',
version: '1.0.0'
},
servers: [ { url: 'https://api.bcovlive.io/v1', variables: {} } ],
tags: [
{
name: 'Live Jobs',
description: 'Operations for creating live jobs, listing live jobs, getting job details, and canceling live jobs. There are also operations for activating and deactivating SEP jobs, scheduling activation and deactivation of SEP jobs, and for inserting cuepoints or ID3 timed metadata.'
},
{
name: 'Schedule SEP Job Start Stop',
description: 'Operations for scheduling the activation and deactivation of an SEP job.'
},
{
name: 'Redundant Groups',
description: 'Operations for creating redundant groups of live jobs for failover in case one stream fails'
},
{
name: 'RTMP Outputs',
description: 'Operations for creating and managing RTMP outputs. Note that RTMP output hours will be billed against event hours.'
},
{
name: 'Live Job Clip',
description: 'Operations for creating and managing VOD clips, including scheduling clips for SEP jobs'
},
{
name: 'Schedule Clip',
description: 'Operations for scheduling the creation of a VOD clip for SEP jobs only.'
},
{
name: 'SSAI',
description: 'Operations for managing server-side ad insertion with live streams.'
},
{
name: 'Credentials',
description: 'Operations for creating and managing credentials for secure destinations.'
}
],
paths: {
'/jobs': { post: [Object], get: [Object] },
'/jobs/{job_id}': { get: [Object] },
'/jobs/{job_id}/playback-token': { post: [Object] },
'/jobs/{job_id}/activate': { put: [Object] },
'/jobs/{job_id}/deactivate': { put: [Object] },
'/jobs/{job_id}/cuepoint': { post: [Object] },
'/jobs/{job_id}/cuepointdata': { post: [Object], delete: [Object] },
'/jobs/{job_id}/id3tag': { post: [Object] },
'/jobs/{job_id}/cancel': { put: [Object] },
'/jobs/{job_id}/stop': { put: [Object] },
'/jobs/{job_id}/rtmpouts': { get: [Object], post: [Object] },
'/jobs/{job_id}/rtmpouts/{rtmp_out_id}/stop': { put: [Object] },
'/redundantgroups': { post: [Object], get: [Object] },
'/redundantgroups/{redundant_group_id}/jobs': { post: [Object] },
'/redundantgroups/{redundant_group_id}/jobs/{job_id}': { delete: [Object] },
'/redundantgroups/{redundant_group_id}': { get: [Object], delete: [Object] },
'/redundantgroups/{redundant_group_id}/switch': { put: [Object] },
'/redundantgroups/{redundant_group_id}/cuepoint': { post: [Object] },
'/scheduler/jobstartstop': { post: [Object] },
'/scheduler/jobstartstop/{workflow_id}': { get: [Object], put: [Object], delete: [Object] },
'/vods': { post: [Object] },
'/vods/{jvod_id}': { get: [Object] },
'/vods/{jvod_id}/cancel': { put: [Object] },
'/jobs/{job_id}/vods': { get: [Object], post: [Object] },
'/scheduler/clip': { post: [Object], get: [Object] },
'/sceduler/Clip/{workflow_id}': { get: [Object], put: [Object], delete: [Object] },
'/ssai/applications': { post: [Object], get: [Object] },
'/ssai/applications/account/{live_account_id}': { get: [Object] },
'/ssai/applications/application/{application_id}': { get: [Object], put: [Object], delete: [Object] },
'/ssai/beaconsets': { post: [Object], get: [Object] },
'/ssai/beaconsets/beaconset/{beacon_set_id}': { put: [Object], delete: [Object] },
'/ssai/beaconsets/account/{live_account_id}': { get: [Object] },
'/ssai/slates': { post: [Object], get: [Object] },
'/ssai/slates/slate{slate_msa_id}': { delete: [Object] },
'/ssai/slates/account/{live_account_id}': { get: [Object] },
'/credentials': { get: [Object], post: [Object] },
'/credentials/{credential_id}': { put: [Object], delete: [Object] }
},
components: {
schemas: {
CreateRedundantGroup: [Object],
CreateRedundantGroupResponse: [Object],
GetRedundantGroupResponse: [Object],
AddJobsRedundantGroupRequest: [Object],
GetStatusRedundantGroupResponse: [Object],
ForceRedundantStreamFailover: [Object],
ActivateSepStreamResponse: [Object],
playback_added_cdns: [Object],
PlaybackToken: [Object],
AddAdMetadatabody: [Object],
Application: [Object],
'Application.applicationAdConfiguration': [Object],
'Application.applicationAdConfiguration.adConfigurationTransforms': [Object],
BeaconSet: [Object],
'BeaconSet.beaconUrls': [Object],
BeaconSets: [Object],
CancelLiveJob: [Object],
StopLiveJob: [Object],
CreateAdConfigurationbody: [Object],
'CreateAdConfigurationbody.applicationAdConfiguration': [Object],
'CreateAdConfigurationbody.applicationAdConfiguration.adConfigurationTransforms': [Object],
CreateBeaconSetResponse: [Object],
CreateBeaconSetbody: [Object],
'CreateBeaconSetbody.beaconUrls': [Object],
CreateCredential: [Object],
CreateCredentialbody: [Object],
'CreateCredentialbody.oauthSettings': [Object],
CreateLiveJobRequestBody: [Object],
'CreateLiveJobRequestBody.addCdns': [Object],
'CreateLiveJobRequestBody.addCdns.tokenAuth': [Object],
'CreateLiveJobRequestBody.addCdns.tokenAuth.media': [Object],
'CreateLiveJobRequestBody.encryption': [Object],
'CreateLiveJobRequestBody.outputs': [Object],
'CreateLiveJobRequestBody.videocloud': [Object],
'CreateLiveJobRequestBody.videocloud.video': [Object],
'CreateLiveJobRequestBody.videocloud.video.cuePoint': [Object],
'CreateLiveJobRequestBody.videocloud.video.geo': [Object],
'CreateLiveJobRequestBody.videocloud.video.schedule': [Object],
CreatePlaybackTokenRequestBody: [Object],
CreateVodClipbody: [Object],
'CreateVodClipbody-Alternate': [Object],
'CreateLiveJob.outputs.videocloud': [Object],
'CreateVodClipbody.outputs.videocloud.video.schedule': [Object],
CreateVodJobResponse: [Object],
CreateRTMPOutputRequestBody: [Object],
CreateRTMPOutputResponse: [Object],
Credentials: [Object],
CuePoint: [Object],
DeactivateSepStreamResponse: [Object],
DeleteAdConfigurationResponse: [Object],
DeleteBeaconSetResponse: [Object],
DeleteSlateMediaSourceAssetResponse: [Object],
GetSlateMediaSourceAssetsResponse: [Object],
Id3Tag: [Object],
IngestSlateMediaSourceAssetResponse: [Object],
IngestSlateMediaSourceAssetbody: [Object],
InsertId3TimedMetadataResponse: [Object],
InsertId3TimedMetadatabody: [Object],
'InsertId3TimedMetadatabody.id3Tag': [Object],
Job: [Object],
'Job.inputMediaFile': [Object],
'Job.outputMediaFiles': [Object],
'Job.stream': [Object],
'Job.stream.destination': [Object],
'Job.stream.location': [Object],
ListCredentials: [Object],
ListLiveJobsResponse: [Object],
ListRTMPOutputs: [Object],
RTMPout: [Object],
ListVodJobs: [Object],
GetVodJob: [Object],
LiveJob: [Object],
ManualAdCuePointInsertionResponse: [Object],
ManualAdCuePointInsertionbody: [Object],
RedundantGroupCuePointInsertionResponse: [Object],
Notification: [Object],
Outputs: [Object],
StopRTMPOutputResponse: [Object],
UpdateAdConfigurationbody: [Object],
'UpdateAdConfigurationbody.applicationAdConfiguration': [Object],
'UpdateAdConfigurationbody.applicationAdConfiguration.adConfigurationTransforms': [Object],
UpdateBeaconSetbody: [Object],
'UpdateBeaconSetbody.beaconUrls': [Object],
UpdateCredential: [Object],
UpdateCredentialbody: [Object],
'UpdateCredentialbody.oauthSettings': [Object],
VodJobs: [Object],
VodJobs2: [Object],
CreateJobStartStopRequestBody: [Object],
'CreateJobStartStopRequestBody.TaskInfo': [Object],
JobStartStop: [Object],
'JobStartStop.TaskInfo': [Object],
ListJobStartStopResponse: [Object],
UpdateJobStartStopRequestBody: [Object],
CreateClipRequestBody: [Object],
Clip: [Object],
'Clip.ClipInfo': [Object],
ListClipResponse: [Object],
UpdateClipRequestBody: [Object],
'CreateClipRequestBody.ClipInfo': [Object],
'CreateVodClipbody.outputs': [Object],
'CreateVodClipbody.outputs.videocloud': [Object],
'CreateVodClipbody.outputs.videocloud.ingest': [Object],
'CreateVodClipbody.outputs.videocloud.video': [Object],
'CreateVodClipbody.outputs.videocloud.video.cuePoint': [Object],
'CreateVodClipbody.outputs.videocloud.video.geo': [Object]
},
parameters: {
ContentType: [Object],
XAPIKEY: [Object],
job_id: [Object],
live_account_id: [Object],
redundant_group_id: [Object],
JobId: [Object],
jvod_id: [Object],
rtmp_out_id: [Object],
CredentialId: [Object],
SlateMsaId: [Object],
BeaconSetId: [Object],
start_token: [Object],
page_size: [Object],
sort: [Object],
sort_dir: [Object],
user_id: [Object],
account_id: [Object],
created_at: [Object],
force: [Object],
modified_at: [Object],
ad_insertion: [Object],
static: [Object],
RedundantGroupState: [Object],
scheduler_account_id: [Object],
state: [Object],
ssai_state: [Object],
region: [Object],
jvod_state: [Object],
jvod_type: [Object],
label: [Object],
application_id: [Object],
WorkflowId: [Object],
scheduler_state: [Object],
start: [Object],
end: [Object]
}
}
}
at Object.assertType (/Users/pier-andre/nodebuilder/node_modules/typescript-is/index.js:89:15)
at arePreTraversalParams (/Users/pier-andre/nodebuilder/dist/services/YamlParser.js:45:21)
at YamlParser.run (/Users/pier-andre/nodebuilder/dist/services/YamlParser.js:33:13)
at /Users/pier-andre/nodebuilder/dist/scripts/generate.js:62:73
at step (/Users/pier-andre/nodebuilder/dist/scripts/generate.js:33:23)
at Object.next (/Users/pier-andre/nodebuilder/dist/scripts/generate.js:14:53)
at fulfilled (/Users/pier-andre/nodebuilder/dist/scripts/generate.js:5:58)
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
path: [ 'object' ],
reason: { type: 'missing-property', property: 'metaParams' },
input: {
openapi: '3.0.0',
info: {
title: 'Live API Reference',
description: 'Reference for the Brightcove Live API, used to create and manage live streaming events.\n' +
'\n' +
'For additional in-depth guides to features of the API, see the **[Support Site](/)**.\n' +
'\n' +
'**Base URL**: https://api.bcovlive.io/v1',
version: '1.0.0'
},
servers: [ { url: 'https://api.bcovlive.io/v1', variables: {} } ],
tags: [
{
name: 'Live Jobs',
description: 'Operations for creating live jobs, listing live jobs, getting job details, and canceling live jobs. There are also operations for activating and deactivating SEP jobs, scheduling activation and deactivation of SEP jobs, and for inserting cuepoints or ID3 timed metadata.'
},
{
name: 'Schedule SEP Job Start Stop',
description: 'Operations for scheduling the activation and deactivation of an SEP job.'
},
{
name: 'Redundant Groups',
description: 'Operations for creating redundant groups of live jobs for failover in case one stream fails'
},
.......
Thanks!