Jämförda versioner

Nyckel

  • Dessa rader lades till.
  • Denna rad togs bort.
  • Formateringen ändrades.

...

Det krävs att LPU kan ta emot och behandla svaren från NPU som anges i exemplen nedan. Se Tjänstekontraktsbeskrivningen (TKB:n) för fullständig information och strukturen för de anrop och typer som returneras.

Relaterad dokumentation

Länk

Kommentar

TKB

Se beskrivning av domänen strategicresourcemanagement:persons:person på RIVTA

SimpleQL

Detaljer om hur en SimpleQL fråga som kan användas i kontrakten konstrueras

Filhantering

Detaljer kring filhantering i Nationella Personuppgiftstjänsten

Konnektivitet

SOAP-tjänst för att generera filer med sökta personposter och lista tillgängliga filer är tillgängliga via Nationell Tjänsteplattform (NTjP). NTjP saknar dock stöd för REST-baserade tjänster vilket medför att REST-tjänst för att hämta filer (ladda upp/ta bort) enbart är tillgänglig genom direktaccess mot tjänsteproducent.

...

Info

Dela upp sökningen av stora län

Ifall grundladdning ska ske av något av de större länen är det vist att dela upp frågan per kommun istället för att ta hem hela länet i en enda sökning.

Vid uppdelning av en fråga måste man dock tänka på vilken tidsstämpel man använder vid nästa hämtningstillfälle så att man inte missar tiden mellan första och sista frågan i en serie av frågor.

Exempelanrop
Kodblock
breakoutModewide
languagexml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn="urn:riv:itintegration:registry:1"
xmlns:urn1="urn:riv:strategicresourcemanagement:persons:person:SearchPersonsForProfileByOrderUnrestrictedResponder:3">
   <soapenv:Header>
      <urn:LogicalAddress>SE165565594230-1000</urn:LogicalAddress>
   </soapenv:Header>
   <soapenv:Body>
      <urn1:SearchPersonsForProfileByOrderUnrestricted>
		 <urn1:query>FROM PersonRecord.PopulationRegistrationLocality WHERE (CountyCode IN ("05","06","07") OR (CountyCode = "12" AND MunicipalityCode = "87"));</urn1:query>
         <urn1:queryLanguage>SimpleQL</urn1:queryLanguage>
         <urn1:profile>P5</urn1:profile>
      </urn1:SearchPersonsForProfileByOrderUnrestricted>
   </soapenv:Body>
</soapenv:Envelope>

...

Har er LPU behov av att hämta persondata om reservnummer så kan ni i denna query även skicka in dessa nummer. Då reservidentiteter inte kan identitetsskyddas så vet vi säkert att fullständig data returneras fast än vi inte använder oss av metoden med postfix Unrestricted.

Exempelanrop
Kodblock
languagexml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:urn="urn:riv:itintegration:registry:1" 
xmlns:urn1="urn:riv:strategicresourcemanagement:persons:person:SearchPersonsForProfileByOrderResponder:3">
   <soapenv:Header>
      <urn:LogicalAddress>?</urn:LogicalAddress>
   </soapenv:Header>
   <soapenv:Body>
      <urn1:SearchPersonsForProfileByOrder>
         <urn1:query>FROM PersonRecord.PersonalIdentity WHERE Extension IN ("191212121212","201212121212","199801012392");</urn1:query>
         <urn1:queryLanguage>SimpleQL</urn1:queryLanguage>
         <urn1:profile>P5</urn1:profile>
      </urn1:SearchPersonsForProfileByOrder>
   </soapenv:Body>
</soapenv:Envelope>
Exempelsvar
Kodblock
languagexml
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <SearchPersonsForProfileByOrderResponse
xmlns="urn:riv:strategicresourcemanagement:persons:person:SearchPersonsForProfileByOrderResponder:3"
xmlns:ns2="urn:riv:strategicresourcemanagement:persons:person:3"
xmlns:ns3="urn:riv:strategicresourcemanagement:persons:person:3.1" 
xmlns:ns4="urn:riv:itintegration:registry:1">
         <orderId>0118-TO64-12381890</orderId>
      </SearchPersonsForProfileByOrderResponse>
   </soap:Body>
</soap:Envelope>

Exemplet ovan där SearchPersonsForProfileByOrder anropas returneras ett id på max 36 tecken.

...

GetFilesForOrderId returnerar en url som ska användas för att hämta svarsfilen.

Exempelanrop
Kodblock
languagexml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn="urn:riv:itintegration:registry:1"
xmlns:urn1="urn:riv:strategicresourcemanagement:persons:person:GetFilesForOrderIdResponder:3">
<soapenv:Header>
      <urn:LogicalAddress>?</urn:LogicalAddress>
   </soapenv:Header>
   <soapenv:Body>
      <urn1:GetFilesForOrderId>
         <urn1:orderId>0313-TO69-13130398</urn1:orderId>
      </urn1:GetFilesForOrderId>
   </soapenv:Body>
</soapenv:Envelope>
Exempelsvar
Kodblock
languagexml
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <GetFilesForOrderIdResponse xmlns="urn:riv:strategicresourcemanagement:persons:person:GetFilesForOrderIdResponder:3"
xmlns:ns2="urn:riv:strategicresourcemanagement:persons:person:3"
xmlns:ns3="urn:riv:strategicresourcemanagement:persons:person:3.1"
xmlns:ns4="urn:riv:itintegration:registry:1">
         <multimedia>
            <ns2:id>5c41baaa42d8a229f8bf5989</ns2:id>
            <ns2:mediaType>application/zip</ns2:mediaType>
            <ns2:reference>https://nationellaPU/api/pu/orderedFile/5c41baaa42d8a229f8bf5989</ns2:reference>
         </multimedia>
      </GetFilesForOrderIdResponse>
   </soap:Body>
</soap:Envelope>


REST

Request

Response

https://nationellaPU/api/pu/orderedFile/5c41baaa42d8a229f8bf5989

Statuskod: 200 OK
Content-Type: application/zip
Content-Disposition: attachment; filename="<filnamn>"
Transfer-Encoding: chunked
Content: fil (zippat xmldata enligt strategicresourcemanagement:persons:person)

Struktur för filnamn (både ZIP och XML): <orderId>_<datum>_<löpnummer>.zip (samt .xml)
Exempel: 0622-TO17-09215997_20170622_1.zip

Statuskod: 400 BAD_REQUEST

  • Ogiltig context path

  • HSA-id för konsument saknas

  • Certifikat för OrderId matchar inte certifikat som används vid hämtning av fil

  • Filen har redan hämtats

Statuskod: 401 UNAUTHORIZED

  • Konsumenten saknar behörighet till tjänsten

Statuskod: 404 NOT FOUND

  • Begärd referens (GUID) existerar inte

Statuskod: 500 INTERNAL SERVER ERROR

  • Internt oförutsätt fel

Filens innehåll ser ut på samma vis som ett svar från ett vanligt anrop mot SearchPersonsForProfile, specifikationer finns som vanligt i TKB:n.

Exempel på filinnehåll
Expandera
titleExpandera
Kodblock
languagexml
<?xml version='1.0' encoding='UTF-8'?>
<ns2:SearchPersonsForProfileResponse xmlns:ns2="urn:riv:strategicresourcemanagement:persons:person:SearchPersonsForProfileResponder:3" 
xmlns:ns3="urn:riv:strategicresourcemanagement:persons:person:3" 
xmlns:ns4="urn:riv:itintegration:registry:1">
	<ns2:personRecord>
		<ns3:personalIdentity>
			<ns3:root>1.2.752.129.2.1.3.1</ns3:root>
			<ns3:extension>198602212394</ns3:extension>
		</ns3:personalIdentity>
		<ns3:gender>1</ns3:gender>
		<ns3:protectedPersonIndicator>false</ns3:protectedPersonIndicator>
		<ns3:testIndicator>false</ns3:testIndicator>
		<ns3:primaryIdentity>true</ns3:primaryIdentity>
		<ns3:version>20190117180851</ns3:version>
		<ns3:name>
			<ns3:givenNameIndicator>10</ns3:givenNameIndicator>
			<ns3:givenName>
				<ns3:name>Moltas</ns3:name>
			</ns3:givenName>
			<ns3:surname>
				<ns3:name>Lundgren</ns3:name>
			</ns3:surname>
		</ns3:name>
		<ns3:birth>
			<ns3:dateOfBirth>
				<ns3:format>YYYY-MM-DD</ns3:format>
				<ns3:value>1986-02-21</ns3:value>
			</ns3:dateOfBirth>
			<ns3:birthAbroad>
				<ns3:placeOfBirthAbroad>
					<ns3:placeOfBirthAbroad>QUEBEC</ns3:placeOfBirthAbroad>
				</ns3:placeOfBirthAbroad>
				<ns3:countryOfBirth>KANADA</ns3:countryOfBirth>
			</ns3:birthAbroad>
		</ns3:birth>
		<ns3:populationRegistrationLocality>
			<ns3:populationRegistrationDate>
				<ns3:format>YYYY-MM-DD</ns3:format>
				<ns3:value>2007-08-10</ns3:value>
			</ns3:populationRegistrationDate>
			<ns3:countyCode>01</ns3:countyCode>
			<ns3:municipalityCode>80</ns3:municipalityCode>
			<ns3:propertyDesignation>BLÅKLINTEN 3</ns3:propertyDesignation>
			<ns3:fictitiousPropertyNumber>0</ns3:fictitiousPropertyNumber>
		</ns3:populationRegistrationLocality>
		<ns3:populationRegistrationRecord>
			<ns3:syncronizationTime>2019-01-17T18:08:51.000+01:00</ns3:syncronizationTime>
			<ns3:notificationCase>
				<ns3:modificationTime>2007-09-04T01:21:11.000+02:00</ns3:modificationTime>
			</ns3:notificationCase>
			<ns3:historicalRecords>
				<ns3:populationRegistrationLocality>
					<ns3:populationRegistrationDate>
						<ns3:format>YYYY-MM-DD</ns3:format>
						<ns3:value>2007-08-10</ns3:value>
					</ns3:populationRegistrationDate>
					<ns3:countyCode>01</ns3:countyCode>
					<ns3:municipalityCode>80</ns3:municipalityCode>
					<ns3:propertyDesignation>BLÅKLINTEN 3</ns3:propertyDesignation>
					<ns3:populationRegistrationType>FB</ns3:populationRegistrationType>
				</ns3:populationRegistrationLocality>
			</ns3:historicalRecords>
		</ns3:populationRegistrationRecord>
		<ns3:addressInformation>
			<ns3:residentialAddress>
				<ns3:postalAddress2>KAMMAKARGATAN 3</ns3:postalAddress2>
				<ns3:postalCode>11140</ns3:postalCode>
				<ns3:city>STOCKHOLM</ns3:city>
			</ns3:residentialAddress>
			<ns3:nationalKeys>
				<ns3:propertyId>100014022</ns3:propertyId>
				<ns3:addressPlaceId>491</ns3:addressPlaceId>
				<ns3:apartmentId>25605931</ns3:apartmentId>
			</ns3:nationalKeys>
		</ns3:addressInformation>
		<ns3:maritalStatus>
			<ns3:maritalStatusCode>OG</ns3:maritalStatusCode>
		</ns3:maritalStatus>
		<ns3:immigration>
			<ns3:immigrationDate>
				<ns3:format>YYYY-MM-DD</ns3:format>
				<ns3:value>2007-08-10</ns3:value>
			</ns3:immigrationDate>
		</ns3:immigration>
		<ns3:citizenship>
			<ns3:citizenshipCountryCode>
				<ns3:countryCode>SE</ns3:countryCode>
			</ns3:citizenshipCountryCode>
		</ns3:citizenship>
	</ns2:personRecord>
	<ns2:personRecord>
		<ns3:personalIdentity>
			<ns3:root>1.2.752.129.2.1.3.1</ns3:root>
			<ns3:extension>198602072392</ns3:extension>
		</ns3:personalIdentity>
		<ns3:gender>1</ns3:gender>
		<ns3:protectedPersonIndicator>false</ns3:protectedPersonIndicator>
		<ns3:testIndicator>false</ns3:testIndicator>
		<ns3:primaryIdentity>true</ns3:primaryIdentity>
		<ns3:version>20190108110923</ns3:version>
		<ns3:name>
			<ns3:givenNameIndicator>10</ns3:givenNameIndicator>
			<ns3:givenName>
				<ns3:name>Jens</ns3:name>
			</ns3:givenName>
			<ns3:surname>
				<ns3:name>Lööf</ns3:name>
			</ns3:surname>
		</ns3:name>
		<ns3:birth>
			<ns3:dateOfBirth>
				<ns3:format>YYYY-MM-DD</ns3:format>
				<ns3:value>1986-02-07</ns3:value>
			</ns3:dateOfBirth>
			<ns3:birthAbroad>
				<ns3:placeOfBirthAbroad>
					<ns3:placeOfBirthAbroad>GDANSK</ns3:placeOfBirthAbroad>
				</ns3:placeOfBirthAbroad>
				<ns3:countryOfBirth>POLEN</ns3:countryOfBirth>
			</ns3:birthAbroad>
		</ns3:birth>
		<ns3:populationRegistrationLocality>
			<ns3:populationRegistrationDate>
				<ns3:format>YYYY-MM-DD</ns3:format>
				<ns3:value>2007-08-22</ns3:value>
			</ns3:populationRegistrationDate>
			<ns3:countyCode>01</ns3:countyCode>
			<ns3:municipalityCode>82</ns3:municipalityCode>
			<ns3:propertyDesignation>SLUT 1:10</ns3:propertyDesignation>
			<ns3:fictitiousPropertyNumber>0</ns3:fictitiousPropertyNumber>
		</ns3:populationRegistrationLocality>
		<ns3:populationRegistrationRecord>
			<ns3:syncronizationTime>2019-01-08T11:09:23.000+01:00</ns3:syncronizationTime>
			<ns3:notificationCase>
				<ns3:modificationTime>2007-09-11T10:53:18.000+02:00</ns3:modificationTime>
			</ns3:notificationCase>
			<ns3:historicalRecords>
				<ns3:populationRegistrationLocality>
					<ns3:populationRegistrationDate>
						<ns3:format>YYYY-MM-DD</ns3:format>
						<ns3:value>2007-08-22</ns3:value>
					</ns3:populationRegistrationDate>
					<ns3:countyCode>01</ns3:countyCode>
					<ns3:municipalityCode>82</ns3:municipalityCode>
					<ns3:propertyDesignation>SLUT 1:10</ns3:propertyDesignation>
					<ns3:populationRegistrationType>FB</ns3:populationRegistrationType>
				</ns3:populationRegistrationLocality>
			</ns3:historicalRecords>
		</ns3:populationRegistrationRecord>
		<ns3:addressInformation>
			<ns3:residentialAddress>
				<ns3:postalAddress2>FINNBODAVÄGEN 2</ns3:postalAddress2>
				<ns3:postalCode>13131</ns3:postalCode>
				<ns3:city>NACKA</ns3:city>
			</ns3:residentialAddress>
			<ns3:nationalKeys>
				<ns3:propertyId>100294037</ns3:propertyId>
				<ns3:addressPlaceId>1259</ns3:addressPlaceId>
				<ns3:apartmentId>25717466</ns3:apartmentId>
			</ns3:nationalKeys>
			<ns3:district>
				<ns3:districtCode>101259</ns3:districtCode>
			</ns3:district>
		</ns3:addressInformation>
		<ns3:maritalStatus>
			<ns3:maritalStatusCode>OG</ns3:maritalStatusCode>
		</ns3:maritalStatus>
		<ns3:immigration>
			<ns3:immigrationDate>
				<ns3:format>YYYY-MM-DD</ns3:format>
				<ns3:value>2007-08-22</ns3:value>
			</ns3:immigrationDate>
		</ns3:immigration>
		<ns3:citizenship>
			<ns3:citizenshipCountryCode>
				<ns3:countryCode>SE</ns3:countryCode>
			</ns3:citizenshipCountryCode>
		</ns3:citizenship>
	</ns2:personRecord>
</ns2:SearchPersonsForProfileResponse>

Hämta uppdateringar

Avsnittet beskriver hur en hämtning görs av alla personposter som förändrats sedan en angiven tidigare tidpunkt.

...

En personpost får ny version inte bara när Skatteverket gör förändringar utan även när andra förändringar sker som t.ex. förändring av kontaktuppgifter via 1177. 

Exempelanrop
Kodblock
breakoutModewide
languagexml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn="urn:riv:itintegration:registry:1"
xmlns:urn1="urn:riv:strategicresourcemanagement:persons:person:SearchPersonsForProfileByOrderUnrestrictedResponder:3">
   <soapenv:Header>
      <urn:LogicalAddress>SE165565594230-1000</urn:LogicalAddress>
   </soapenv:Header>
   <soapenv:Body>
      <urn1:SearchPersonsForProfileByOrderUnrestricted>
         <urn1:query>FROM PersonRecord WHERE (PopulationRegistrationLocality.CountyCode IN ("05","06","07") OR (PopulationRegistrationLocality.CountyCode = "12" AND PopulationRegistrationLocality.MunicipalityCode = "87")) AND Version >= "20190220095204";</urn1:query>
         <urn1:queryLanguage>SimpleQL</urn1:queryLanguage>
         <urn1:profile>P5</urn1:profile>
      </urn1:SearchPersonsForProfileByOrderUnrestricted>
   </soapenv:Body>
</soapenv:Envelope>

...

Exempel på frågan "ge mig alla personposter av typen personnummer som inte bor i län 23 och som är förändrade sedan sist jag frågade 2022-01-26 kl. 00:00:00 men som också har en historisk post i län 23 som är avslutad sedan sist jag frågade 2022-01-26 kl. 00:00:00".

Exempelanrop
Kodblock
breakoutModewide
languagexml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn="urn:riv:itintegration:registry:1"
xmlns:urn1="urn:riv:strategicresourcemanagement:persons:person:SearchPersonsForProfileByOrderResponder:3">
   <soapenv:Header>
      <urn:LogicalAddress>SE165565594230-1000</urn:LogicalAddress>
   </soapenv:Header>
   <soapenv:Body>
      <urn1:SearchPersonsForProfileByOrder>

        <urn1:query>FROM PersonRecord WHERE (PopulationRegistrationLocality.CountyCode NOT IN ("23") AND personalidentity.root = "PNR" AND Version > "20220126000000") AND (PopulationRegistrationRecord.HistoricalRecords.HistoricalRegistrations.CountyCode = "23" AND personalidentity.root = "PNR" AND PopulationRegistrationRecord.HistoricalRecords.HistoricalRegistrations.LocalRegistrationEndTime > "20220126000000");</urn1:query>

    <urn1:queryLanguage>SimpleQL</urn1:queryLanguage>
         <urn1:profile>P5</urn1:profile>
      </urn1:SearchPersonsForProfileByOrder>
   </soapenv:Body>
</soapenv:Envelope>

...

I exemplet nedan behöver {versionsnummer} sättas till en version/tidpunkt. I exemplet söks personer med länskod antingen 01 eller 09.

Kodblock
breakoutModewide
 FROM PersonRecord WHERE 
 Version >= '{versionsnummer}' 
 AND deregistration.deregistrationreasoncode IS NOT NULL 
 AND 
  (populationregistrationlocality.countycode IN ('01', '09')
  OR 
    (PopulationRegistrationRecord.HistoricalRecords.HistoricalRegistrations.countycode IN ('01', '09')
    AND 
    PopulationRegistrationRecord.HistoricalRecords.HistoricalRegistrations.localRegistrationEndTime >= '{versionsnummer}'
    )
  )

...