The problem with doing that from a pass is that it may not target a specific SeriesID.
Example is a pass doesn't specify the SeriesID, but uses a Title match.
It could easily be done from the Show (which has a SeriesID and tmsId).
Batch mark all the recorded show episodes as not recorded.
I do this manually now. I'm sure it could be automated by a developer.
Title "Blue World", SeriesID "413197"
First you get the tmsId for the show
I extract it from one of the show recordings at /dvr/files
.Airing.Raw.program.tmsId "SH027201150000"
Then get the list of the tmsID recorded episodes from /programs
I know they will be in one of these two formats for a show episode
"ProgramID": "SH027201150000-1774265400" (used generic guide data, no season, episode or OAD)
"ProgramID": "EP027201150110" (has season and episode and episode title)
So I want a list of all those beginning with "??02720115", where ?? is EP (for episode) or SH (for show)
"EP027201150012": "queued-1775561370-248",
"EP027201150014": "queued-1775474970-248",
"EP027201150029": "queued-1774438170-248",
"EP027201150056": "queued-1774697370-248",
"EP027201150062": "queued-1775042970-248",
"EP027201150063": "queued-1775215770-248",
"EP027201150064": "queued-1775388570-248",
"EP027201150065": "queued-1774524570-248",
"EP027201150066": "queued-1774610970-248",
"EP027201150073": "queued-1774956570-248",
"EP027201150077": "queued-1775302170-248",
"EP027201150102": "recorded-3225",
"EP027201150103": "recorded-3239",
"EP027201150104": "recorded-3240",
"EP027201150105": "recorded-3249",
"EP027201150106": "recorded-3251",
"EP027201150107": "recorded-3259",
"EP027201150108": "recorded-3260",
"EP027201150109": "recorded-3264",
"EP027201150110": "recorded-3277",
"EP027201150116": "queued-1775647770-248",
"EP027201150121": "queued-1774783770-248",
"EP027201150122": "queued-1774870170-248",
"SH027201150000-1773401400": "recorded-3283",
"SH027201150000-1773442800": "recorded-3291",
"SH027201150000-1773487800": "recorded-3292",
"SH027201150000-1773529200": "recorded-3296",
"SH027201150000-1773574200": "recorded-3297",
"SH027201150000-1773615600": "recorded-3298",
"SH027201150000-1773747000": "recorded-3302",
"SH027201150000-1773788400": "recorded-3303",
"SH027201150000-1773919800": "recorded-3305",
"SH027201150000-1773961200": "recorded-3306",
"SH027201150000-1774006200": "recorded-3307",
"SH027201150000-1774047600": "recorded-3308",
"SH027201150000-1774092600": "recorded-3309",
"SH027201150000-1774134000": "recorded-3311",
"SH027201150000-1774179000": "recorded-3314",
"SH027201150000-1774220400": "recorded-3315",
"SH027201150000-1774265400": "recorded-3318",
"SH027201150000-1774306800": "queued-1774306770-248",
"SH027201150000-1774351800": "queued-1774351770-248",
"SH027201150000-1774393200": "queued-1774393170-248",
I want recorded episodes (EP) only, not queued for recording or skipped
"EP027201150102": "recorded-3225",
"EP027201150103": "recorded-3239",
"EP027201150104": "recorded-3240",
"EP027201150105": "recorded-3249",
"EP027201150106": "recorded-3251",
"EP027201150107": "recorded-3259",
"EP027201150108": "recorded-3260",
"EP027201150109": "recorded-3264",
"EP027201150110": "recorded-3277",
Then issue a "mark as not recorded" for each of them
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150102
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150103
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150104
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150105
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150106
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150107
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150108
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150109
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150110
A pass will now record those episodes again.