I am reviewing/testing some queries originally requested from the API back in Dec. and I can see several companies for which the officer JSON file is now blank. It appears that the individual in question has been moved to a 'Person with Significant Control (PSC)'.

I didn't run the original code but I've checked it and I can see that it doesn't make a request to PSC API, so this is the only conclusion that I can come to. Is this possible?

If this is the case, how can I get the same information from the PSC API? I don't understand where I obtain the PSC ID from.

You say "the JSON is blank" and that's odd since officers shouldn't disappear from the list, they should get a resigned_on field and increase the inactive_count total. Apologies if you already checked the following but if not and you don't get a JSON body at all I'd check that your code is working:

Are other calls to the API working in your code (to check the API key and your call functionality)?

Maybe check the your example company numbers in CH Beta to ensure that CH haven't lost them etc. You'd be able to see the officers there including status e.g. active / ceased and the PSCs.

If you are getting some JSON back:

What numbers do you have in the active_count and inactive_count members in the main JSON object? If officers "moved to a PSC" I'd have thought a) they'd appear in the inactive_count total and b) the officer entry in the list should have a resigned_on field with the date they resigned.

Again you should be able to see the officers and their status in Beta and check also the PSCs there.

neil_whitfield:

...It appears that the individual in question has been moved to a 'Person with Significant Control (PSC)'. [...] Is this possible?

Obviously officers may or may not be PSCs (and vice versa) and someone could cease being an officer but still be a PSC (or become one) but I'd expect there still to be an entry in the officers list as explained above. You said you were rechecking ones you'd last seen "back in Dec" so I'm guessing that they shouldn't have disappeared under the CH "old data" rule (see footnote 1).

neil_whitfield:

... how can I get the same information from the PSC API? I don't understand where I obtain the PSC ID from.

Short answer - just request the PSC list to get all PSCs (and their IDs). Then it's up to you to look through the data and match an officer and a PSC. Yes - the PSC ID and officer ID are unrelated as far as I know.

When checking data it is possible that names / address / DOB information will not correspond for what you know to be the same person. Of course, someone could legitimately have multiple addresses and supply these for their different roles, or supply different versions of their name. See the CH service info / disclaimer - essentially "we supply exactly the data we're given (unless there's e.g. nefarious intent) and indeed we are required to do so".

A few questions about psc_id numbers:
Are psc_id numbers unique or are they only unique in combination with a company numbers?
Does a natural person have the same psc_id number for all companies for whom they are the person of significant control?
Can you retrieve a list of companies for which a person or company with a given psc_id is the person of significant control via the API?

Footnote 1:I don't know about any limits for the officers list but in e.g. the officer appointments list entries do disappear so corporate officers could be affected. However that should only be if it's over six years from when a company closes / is dissolved. So unless the officers you saw first time were corporate officers and those companies had already closed almost 6 years ago data should still be around.

I can retrieve officer and company JSON files for almost every company except a select few that return no officer JSON file. The response I get is '[ ]' - so nothing at all, not a 'blank JSON' like I said incorrectly before. I looked up some of these companies using CH Beta before my original post and I can see that there are no officers - "There are no officer details available for this company".

When I tab across to PSC on CH Beta, I can see that the person in my original 'officer list' (to which I am comparing) is actually listed as a PSC. I don't understand this because the code I am using doesn't call the PSC API, so how was this information retrieved originally?

The only 2 explanations I can see are either I haven't been sent the complete code (seems unlikely) or that these people were originally listed incorrectly as officers (directors) and have now been moved to PSCs, leaving '[ ]' in their wake.

Hmm odd - I'd have expected '{}' as CH normally return objects not arrays even for blank "returns" if I recall correctly. So definitely no active_count and inactive_count then?

As far as I'm aware companies can be incorporated by another concern who then pass the new company to its "real" officers. Offhand can't remember whether there's allowed to be a period where the "opening" officers resign and the company has no officers before adding new ones. This still wouldn't match your case however as the "opening" officers should still be recorded but with ceased_on member fields.

Before saying "sounds like there is a data issue here at CH end, shout out to them with examples" I'd just check the main company profile resource for your examples:

Is there a partial_data_available member? Companies House has only limited data for some types of company. The constants that appear in this member point to the registry holding more info.Not the place for the full detail here but the list includes some kinds of financial institution, Royal Charter corporations etc. A hint is the company number. If it starts with IP, SP, RC, SC, NP, RS, AC, SI, NO, SR, SA, IC (and some others?) or has letters at the other end (as in SP0001WS) then CH may not have data.

Check the type member - as stated above some more "obscure" types may not fit the usual pattern.

Is there a branch_company_details member e.g. is this a UK branch office for foreign company? (Also company number should start "BR"). These have two CH entries - the parent foreign company and the UK branch, and if I recall correcly the officers are only recorded on one. I think they're on the parent. Not sure about PSCs in this case... See also the next item:

Check the links member - is there an officers member within this? If not, probably no response should be expected from the officers endpoint! That might be for reasons above / below.

Some very old companies may have unexpected data or be lacking expected things.

(I'm speculating now as I don't remember seeing anything quite like you reported).

Is the company long closed / been dissolved etc? Or were some of the officers long-defunct companies? Data may disappear as I mentioned previously.

If not, was it closed a long time ago but more recently re-opened or restored (you can check this in filing history, if it exists - if not try looking up on WebCHeck)? Sometimes this happens, normally as part of court proceedings and odd data may result - search this forum for more info.

My mistake, {} is returned, so an empty object. An 404 error code is sent back too, which I also get using CH Beta.

There doesn't appear to be anything special about these companies and the examples I am looking at were registered in December 2017. In the Links member of the company profile resource (of the two I have just checked), there are no officer members, so it looks like everything is consistent (now, at least) on CH's end.

My original question was about officers being moved to PSCs but are you saying that it is unusual for the officer response to be {}?

I don't know. All the rest of my waffle was saying "something seems to be inconsistent e.g. as per your 2nd post - no officer details returned and yet there's PSC information - that's strange".

2)

neil_whitfield:

... can I get the same information from the PSC API?

Answered, 1st reply.

3)

neil_whitfield:

... are you saying that it is unusual for the officer response to be { } ?

No. As I'd asked about http errors and you'd not mentioned one, and also said you got an array "[ ]" back, I was saying that that combination was one I hadn't seen before!

4)Are you sure you've got the correct company numbers when you're using the API (and e.g. the code isn't clipping / scrambling them) and that they're the same as you tried in CH Beta?Reason: I can replicate most of what you describe with a bogus company number.Also you've sown the seed of doubt with "I didn't run the original ..."!That CH Beta says 'no officers' but shows PSCs (for anything) - that's still odd. I don't say it's impossible...

Full detail:

Ah, the missing information (some of it):

neil_whitfield:

{} is returned, so an empty object. An 404 error code is sent back too

Well 404 = "not found" and in most cases IIRC if you ask Companies House for something they don't have you'll get exactly that: http status 404 and an empty JSON object (*1).

As you say, CH response is consistent: e.g. they don't advertise any officers in the links section and then give you a normal (for CH) "nothing to see here" response when you ask for the officers. ( *2)

I can get a 404 + { } - if I provide a non-existent company number e.g. /company/BG932839/officers"

For others where CH doesn't hold the information I get the company list, but with nothing in it e.g."/company/SP0001WS/officers":

"if browse I go to CH Beta site, search for the company number, then click on 'People', then 'Persons with significant control' I get a 404 error / 'this page cannot be found' ". That would look like CH have a problem with their data for these companies (and their code)!

neil_whitfield:

My original question was about officers being moved to PSCs ...

(Summary)

neil_whitfield:

... message you a company number example ...

No need to message me, just post 'em up on the forum. An example is a thousand words at cross-purposes.

Digressions:*1This is general but not universal across CH API e.g.:

If no such company exists when requesting company profile, you get an error 404 and an error object. E.g. "/company/BG932839"

Filing history may give you http 200 success and a filing history object but a member within it stating there isn't any. E.g. "/company/SP0001WS/filing-history"

*2I wouldn't treat something being missing from the links section as a guarantee it doesn't exist. Sorry, can't remember any examples offhand.

I have just been told that these should all now be fixed.I have checked a handful and they do look ok.i will be running a check in the database for any others that are missing officers so we can determine why this has happened and put measures in place to prevent it happening in the future.Again, thanks for taking the time to let us know about this issue.