View Javadoc
1   /*
2    * Copyright 2013 The Kuali Foundation Licensed under the
3    * Educational Community License, Version 2.0 (the "License"); you may
4    * not use this file except in compliance with the License. You may
5    * obtain a copy of the License at
6    *
7    * http://www.osedu.org/licenses/ECL-2.0
8    *
9    * Unless required by applicable law or agreed to in writing,
10   * software distributed under the License is distributed on an "AS IS"
11   * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12   * or implied. See the License for the specific language governing
13   * permissions and limitations under the License.
14   */
15  package org.kuali.student.core.person.service;
16  
17  import org.kuali.rice.core.api.criteria.QueryByCriteria;
18  import org.kuali.student.core.person.dto.PersonAffiliationInfo;
19  import org.kuali.student.core.person.dto.PersonBioDemographicsInfo;
20  import org.kuali.student.core.person.dto.PersonIdentifierInfo;
21  import org.kuali.student.core.person.dto.PersonInfo;
22  import org.kuali.student.core.person.dto.PersonNameInfo;
23  import org.kuali.student.r2.common.dto.ContextInfo;
24  import org.kuali.student.r2.common.dto.StatusInfo;
25  import org.kuali.student.r2.common.dto.ValidationResultInfo;
26  import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
27  import org.kuali.student.r2.common.exceptions.DoesNotExistException;
28  import org.kuali.student.r2.common.exceptions.InvalidParameterException;
29  import org.kuali.student.r2.common.exceptions.MissingParameterException;
30  import org.kuali.student.r2.common.exceptions.OperationFailedException;
31  import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
32  import org.kuali.student.r2.common.exceptions.ReadOnlyException;
33  import org.kuali.student.r2.common.exceptions.VersionMismatchException;
34  
35  import javax.jws.WebParam;
36  import javax.jws.WebService;
37  import javax.jws.soap.SOAPBinding;
38  import java.util.List;
39  
40  /**
41   * Person Service provides access to people.
42   */
43  @WebService(name = "PersonService", targetNamespace = PersonServiceNamespace.NAMESPACE)
44  @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
45  public interface PersonService {
46  
47      /**
48       * Retrieves a Person by a Person ID
49       *
50       * @param personId the Person ID
51       * @param contextInfo Context information containing the principalId and locale information about the caller of service
52       * operation
53       * @return the Person
54       * @throws DoesNotExistException personId not found
55       * @throws InvalidParameterException invalid personId or contextInfo
56       * @throws MissingParameterException personId or contextInfo is missing or null
57       * @throws OperationFailedException unable to complete request
58       * @throws PermissionDeniedException an authorization failure occurred
59       */
60      public PersonInfo getPerson(@WebParam(name = "personId") String personId,
61                                  @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
62              InvalidParameterException,
63              MissingParameterException,
64              OperationFailedException,
65              PermissionDeniedException;
66  
67      /**
68       * Retrieves a list of persons by a list of Person IDs
69       *
70       * @param personIds a list of Person IDs
71       * @param contextInfo Context information containing the principalId and locale information about the caller of service
72       * operation
73       * @return a List of People
74       * @throws DoesNotExistException personId not found
75       * @throws InvalidParameterException invalid personId or contextInfo
76       * @throws MissingParameterException personId or contextInfo is missing or null
77       * @throws OperationFailedException unable to complete request
78       * @throws PermissionDeniedException an authorization failure occurred
79       */
80      public List<PersonInfo> getPersonsByIds(@WebParam(name = "personIds") List<String> personIds,
81                                              @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
82              InvalidParameterException,
83              MissingParameterException,
84              OperationFailedException,
85              PermissionDeniedException;
86  
87      /**
88       * Retrieves a list of Person Ids by person type.
89       *
90       * @param personTypeKey the personTypeKey to search by
91       * @param contextInfo Context information containing the principalId and locale information about the caller of service
92       * operation
93       * @return a List of Person IDs
94       * @throws DoesNotExistException personId not found
95       * @throws InvalidParameterException invalid personId or contextInfo
96       * @throws MissingParameterException personId or contextInfo is missing or null
97       * @throws OperationFailedException unable to complete request
98       * @throws PermissionDeniedException an authorization failure occurred
99       */
100     public List<String> getPersonIdsByType(@WebParam(name = "personTypeKey") String personTypeKey,
101                                            @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
102             InvalidParameterException,
103             MissingParameterException,
104             OperationFailedException,
105             PermissionDeniedException;
106 
107     /**
108      * Searches for Person Ids based on the criteria and returns a list of Person identifiers which match the search criteria.
109      *
110      * @param criteria the search criteria
111      * @param contextInfo Context information containing the principalId and locale information about the caller of service
112      * operation
113      * @return a List of Person IDs
114      * @throws InvalidParameterException invalid criteria or contextInfo
115      * @throws MissingParameterException personId or contextInfo is missing or null
116      * @throws OperationFailedException unable to complete request
117      * @throws PermissionDeniedException an authorization failure occurred
118      */
119     public List<String> searchForPersonIds(@WebParam(name = "criteria") QueryByCriteria criteria,
120                                            @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
121             InvalidParameterException,
122             MissingParameterException,
123             OperationFailedException,
124             PermissionDeniedException;
125 
126     /**
127      * Searches for persons based on the criteria and returns a list of persons which match the search criteria.
128      *
129      * @param criteria the search criteria
130      * @param contextInfo Context information containing the principalId and locale information about the caller of service
131      * operation
132      * @return a List of People
133      * @throws InvalidParameterException invalid personId or contextInfo
134      * @throws MissingParameterException personId or contextInfo is missing or null
135      * @throws OperationFailedException unable to complete request
136      * @throws PermissionDeniedException an authorization failure occurred
137      */
138     public List<PersonInfo> searchForPersons(@WebParam(name = "criteria") QueryByCriteria criteria,
139                                              @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
140             InvalidParameterException,
141             MissingParameterException,
142             OperationFailedException,
143             PermissionDeniedException;
144 
145     /**
146      * Validates a Person. If an identifier is present for the Person and a record is found for that identifier, the validation
147      * checks if the Person can be updated to the new values. If an identifier is not present or a record does not exist, the
148      * validation checks if the person with the given data can be created.
149      *
150      * @param validationTypeKey the identifier for the validation Type
151      * @param personTypeKey the identifier for the person type key to be validated
152      * @param personInfo the person to be validated
153      * @param contextInfo Context information containing the principalId and locale information about the caller of service
154      * operation
155      * @return a list of validation results or an empty list if validation succeeded
156      * @throws DoesNotExistException validationTypeKey or personTypeKey is not found
157      * @throws InvalidParameterException personInfo or contextInfo is not valid
158      * @throws MissingParameterException validationTypeKey, personTypeKey, personInfo, or contextInfo is missing or null
159      * @throws OperationFailedException unable to complete request
160      * @throws PermissionDeniedException an authorization failure occurred
161      */
162     public List<ValidationResultInfo> validatePerson(@WebParam(name = "validationTypeKey") String validationTypeKey,
163                                                      @WebParam(name = "personTypeKey") String personTypeKey,
164                                                      @WebParam(name = "personInfo") PersonInfo personInfo,
165                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
166             DoesNotExistException,
167             InvalidParameterException,
168             MissingParameterException,
169             OperationFailedException,
170             PermissionDeniedException;
171 
172     /**
173      * Creates a new Person. The Person Id, Type, and Meta information may not be set in the supplied data.
174      *
175      * @param personTypeKey the identifier for the person type to be validated
176      * @param personInfo the person to be validated
177      * @param contextInfo Context information containing the principalId and locale information about the caller of service
178      * operation
179      * @return the new Person
180      * @throws DataValidationErrorException supplied data is invalid
181      * @throws DoesNotExistException personTypeKey does not exist or is not supported
182      * @throws InvalidParameterException personInfo or contextInfo is not valid
183      * @throws MissingParameterException personTypeKey, personInfo, or contextInfo is missing or null
184      * @throws OperationFailedException unable to complete request
185      * @throws PermissionDeniedException an authorization failure occurred
186      * @throws ReadOnlyException an attempt at supplying information designated as read only
187      */
188     public PersonInfo createPerson(@WebParam(name = "personTypeKey") String personTypeKey,
189                                    PersonInfo personInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
190             DataValidationErrorException,
191             DoesNotExistException,
192             InvalidParameterException,
193             MissingParameterException,
194             OperationFailedException,
195             PermissionDeniedException,
196             ReadOnlyException;
197 
198     /**
199      * Updates an existing Person. The Person Id, Type, and Meta information may not be changed.
200      *
201      * @param personId the identifier for the Person to be updated
202      * @param personInfo the person to be validated
203      * @param contextInfo Context information containing the principalId and locale information about the caller of service
204      * operation
205      * @return the updated Person
206      * @throws DataValidationErrorException supplied data is invalid
207      * @throws DoesNotExistException personId is not found
208      * @throws InvalidParameterException personId, personInfo or contextInfo is not valid
209      * @throws MissingParameterException personId, personInfo, or contextInfo is missing or null
210      * @throws OperationFailedException unable to complete request
211      * @throws PermissionDeniedException an authorization failure occurred
212      * @throws ReadOnlyException an attempt at supplying information designated as read only
213      * @throws VersionMismatchException if someone else has updated this person record since you fetched the version you are
214      * updating.
215      */
216     public PersonInfo updatePerson(@WebParam(name = "personId") String personId,
217                                    @WebParam(name = "personInfo") PersonInfo personInfo,
218                                    @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
219             DataValidationErrorException,
220             DoesNotExistException,
221             InvalidParameterException,
222             MissingParameterException,
223             OperationFailedException,
224             PermissionDeniedException,
225             ReadOnlyException,
226             VersionMismatchException;
227 
228     /**
229      * Deletes an existing Person and all it's related parts
230      *
231      * @param personId the identifier for the person to be deleted
232      * @param contextInfo Context information containing the principalId and locale information about the caller of service
233      * operation
234      * @return the status of the delete operation. This must always be true.
235      * @throws DoesNotExistException personInfo is not found
236      * @throws InvalidParameterException personInfo or contextInfo is not valid
237      * @throws MissingParameterException personInfo or contextInfo is missing or null
238      * @throws OperationFailedException unable to complete request
239      * @throws PermissionDeniedException an authorization failure occurred
240      */
241     public StatusInfo deletePerson(@WebParam(name = "personId") String personId,
242                                    @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
243             DoesNotExistException,
244             InvalidParameterException,
245             MissingParameterException,
246             OperationFailedException,
247             PermissionDeniedException;
248 
249     ////
250     //// person name methods
251     ////
252     /**
253      * Retrieves a Person Name by a Person Name ID
254      *
255      * @param personNameId the Person Name ID
256      * @param contextInfo Context information containing the principalId and locale information about the caller of service
257      * operation
258      * @return the PersonName
259      * @throws DoesNotExistException personId not found
260      * @throws InvalidParameterException invalid personId or contextInfo
261      * @throws MissingParameterException personId or contextInfo is missing or null
262      * @throws OperationFailedException unable to complete request
263      * @throws PermissionDeniedException an authorization failure occurred
264      */
265     public PersonNameInfo getPersonName(@WebParam(name = "personNameId") String personNameId,
266                                         @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
267             InvalidParameterException,
268             MissingParameterException,
269             OperationFailedException,
270             PermissionDeniedException;
271 
272     /**
273      * Retrieves a list of person names by a list of Person Name IDs
274      *
275      * @param personNameIds a list of PersonName IDs
276      * @param contextInfo Context information containing the principalId and locale information about the caller of service
277      * operation
278      * @return a List of PersonNames
279      * @throws DoesNotExistException personNameId not found
280      * @throws InvalidParameterException invalid personNameId or contextInfo
281      * @throws MissingParameterException personNameId or contextInfo is missing or null
282      * @throws OperationFailedException unable to complete request
283      * @throws PermissionDeniedException an authorization failure occurred
284      */
285     public List<PersonNameInfo> getPersonNamesByIds(@WebParam(name = "personNameIds") List<String> personNameIds,
286                                                     @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
287             InvalidParameterException,
288             MissingParameterException,
289             OperationFailedException,
290             PermissionDeniedException;
291 
292     /**
293      * Retrieves a list of Person Name Ids by person type.
294      *
295      * @param personNameTypeKey the person name Type Key to search by
296      * @param contextInfo Context information containing the principalId and locale information about the caller of service
297      * operation
298      * @return a List of PersonName IDs
299      * @throws DoesNotExistException personNameId not found
300      * @throws InvalidParameterException invalid personNameId or contextInfo
301      * @throws MissingParameterException personNameId or contextInfo is missing or null
302      * @throws OperationFailedException unable to complete request
303      * @throws PermissionDeniedException an authorization failure occurred
304      */
305     public List<String> getPersonNameIdsByType(@WebParam(name = "personNameTypeKey") String personNameTypeKey,
306                                                @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
307             InvalidParameterException,
308             MissingParameterException,
309             OperationFailedException,
310             PermissionDeniedException;
311 
312     /**
313      * Searches for Person Name Ids based on the criteria and returns a list of Person Name identifiers which match the search
314      * criteria.
315      *
316      * @param criteria the search criteria
317      * @param contextInfo Context information containing the principalId and locale information about the caller of service
318      * operation
319      * @return a List of PersonName IDs
320      * @throws InvalidParameterException invalid criteria or contextInfo
321      * @throws MissingParameterException criteria or contextInfo is missing or null
322      * @throws OperationFailedException unable to complete request
323      * @throws PermissionDeniedException an authorization failure occurred
324      */
325     public List<String> searchForPersonNameIds(@WebParam(name = "criteria") QueryByCriteria criteria,
326                                                @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
327             InvalidParameterException,
328             MissingParameterException,
329             OperationFailedException,
330             PermissionDeniedException;
331 
332     /**
333      * Searches for person names based on the criteria and returns a list of persons which match the search criteria.
334      *
335      * @param criteria the search criteria
336      * @param contextInfo Context information containing the principalId and locale information about the caller of service
337      * operation
338      * @return a List of PersonNames
339      * @throws InvalidParameterException invalid criteria or contextInfo
340      * @throws MissingParameterException criteria or contextInfo is missing or null
341      * @throws OperationFailedException unable to complete request
342      * @throws PermissionDeniedException an authorization failure occurred
343      */
344     public List<PersonNameInfo> searchForPersonNames(@WebParam(name = "criteria") QueryByCriteria criteria,
345                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
346             InvalidParameterException,
347             MissingParameterException,
348             OperationFailedException,
349             PermissionDeniedException;
350 
351     /**
352      * Validates a Person Name. If an identifier is present for the PersonName and a record is found for that identifier, the
353      * validation checks if the PersonName can be updated to the new values. If an identifier is not present or a record does not
354      * exist, the validation checks if the person with the given data can be created.
355      *
356      * @param validationTypeKey the identifier for the validation Type
357      * @param personNameTypeKey the identifier for the person name type to be validated
358      * @param personId id of person for whom this name is being applied
359      * @param personNameInfo the person to be validated
360      * @param contextInfo Context information containing the principalId and locale information about the caller of service
361      * operation
362      * @return a list of validation results or an empty list if validation succeeded
363      * @throws DoesNotExistException validationTypeKey or personNameTypeKey is not found
364      * @throws InvalidParameterException personNameInfo or contextInfo is not valid
365      * @throws MissingParameterException validationTypeKey, personNameTypeKey, personNameInfo, or contextInfo is missing or null
366      * @throws OperationFailedException unable to complete request
367      * @throws PermissionDeniedException an authorization failure occurred
368      */
369     public List<ValidationResultInfo> validatePersonName(@WebParam(name = "validationTypeKey") String validationTypeKey,
370                                                          @WebParam(name = "personNameTyhpeKey") String personNameTypeKey,
371                                                          @WebParam(name = "personId") String personId,
372                                                          @WebParam(name = "personInfo") PersonNameInfo personNameInfo,
373                                                          @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
374             DoesNotExistException,
375             InvalidParameterException,
376             MissingParameterException,
377             OperationFailedException,
378             PermissionDeniedException;
379 
380     /**
381      * Creates a new Person Name. The PersonName Id, Type, and Meta information may not be set in the supplied data.
382      *
383      * @param personNameTypeKey the identifier for the person name Type to assign to this name object
384      * @param personId id of the person to whom this name is attached
385      * @param personNameInfo the person to be validated
386      * @param contextInfo Context information containing the principalId and locale information about the caller of service
387      * operation
388      * @return the new PersonName
389      * @throws DataValidationErrorException supplied data is invalid
390      * @throws DoesNotExistException personNameType does not exist or is not supported
391      * @throws InvalidParameterException personNameInfo or contextInfo is not valid
392      * @throws MissingParameterException personNameType, personNameInfo, or contextInfo is missing or null
393      * @throws OperationFailedException unable to complete request
394      * @throws PermissionDeniedException an authorization failure occurred
395      * @throws ReadOnlyException an attempt at supplying information designated as read only
396      */
397     public PersonNameInfo createPersonName(@WebParam(name = "personNameTypeKey") String personNameTypeKey,
398                                            @WebParam(name = "personId") String personId,
399                                            @WebParam(name = "personNameInfo") PersonNameInfo personNameInfo,
400                                            @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
401             DataValidationErrorException,
402             DoesNotExistException,
403             InvalidParameterException,
404             MissingParameterException,
405             OperationFailedException,
406             PermissionDeniedException,
407             ReadOnlyException;
408 
409     /**
410      * Updates an existing Person Name. The PersonName Id, Type, and Meta information may not be changed.
411      *
412      * @param personNameId the identifier for the PersonName to be updated
413      * @param personNameInfo the person to be validated
414      * @param contextInfo Context information containing the principalId and locale information about the caller of service
415      * operation
416      * @return the updated PersonName
417      * @throws DataValidationErrorException supplied data is invalid
418      * @throws DoesNotExistException personNameId is not found
419      * @throws InvalidParameterException personNameId, personNanmeInfo or contextInfo is not valid
420      * @throws MissingParameterException personNameId, personNameInfo, or contextInfo is missing or null
421      * @throws OperationFailedException unable to complete request
422      * @throws PermissionDeniedException an authorization failure occurred
423      * @throws ReadOnlyException an attempt at supplying information designated as read only
424      * @throws VersionMismatchException if someone else has updated this person record since you fetched the version you are
425      * updating.
426      */
427     public PersonNameInfo updatePersonName(@WebParam(name = "personNamed") String personNameId,
428                                            @WebParam(name = "personNameInfo") PersonNameInfo personNameInfo,
429                                            @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
430             DataValidationErrorException,
431             DoesNotExistException,
432             InvalidParameterException,
433             MissingParameterException,
434             OperationFailedException,
435             PermissionDeniedException,
436             ReadOnlyException,
437             VersionMismatchException;
438 
439     /**
440      * Deletes an existing Person Name.
441      *
442      * @param personNameId the identifier for the person name record to be deleted
443      * @param contextInfo Context information containing the principalId and locale information about the caller of service
444      * operation
445      * @return the status of the delete operation. This must always be true.
446      * @throws DoesNotExistException personNameInfo is not found
447      * @throws InvalidParameterException personNameInfo or contextInfo is not valid
448      * @throws MissingParameterException personNameInfo or contextInfo is missing or null
449      * @throws OperationFailedException unable to complete request
450      * @throws PermissionDeniedException an authorization failure occurred
451      */
452     public StatusInfo deletePersonName(@WebParam(name = "personNameId") String personNameId,
453                                        @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
454             DoesNotExistException,
455             InvalidParameterException,
456             MissingParameterException,
457             OperationFailedException,
458             PermissionDeniedException;
459 
460     /**
461      * Get names for a person
462      *
463      * @param personId the identifier for the person
464      * @param contextInfo Context information containing the principalId and locale information about the caller of service
465      * operation
466      * @return list of names for that person
467      * @throws InvalidParameterException personId or contextInfo is not valid
468      * @throws MissingParameterException personId or contextInfo is missing or null
469      * @throws OperationFailedException unable to complete request
470      * @throws PermissionDeniedException an authorization failure occurred
471      */
472     public List<PersonNameInfo> getPersonNamesByPerson(@WebParam(name = "personId") String personId,
473                                                        @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
474             InvalidParameterException,
475             MissingParameterException,
476             OperationFailedException,
477             PermissionDeniedException;
478 
479     ////
480     //// person identifiers
481     ////
482     /**
483      * Retrieves a Person Identifier by a Person Identifier ID
484      *
485      * @param personIdentifierId the Person Identifier ID
486      * @param contextInfo Context information containing the principalId and locale information about the caller of service
487      * operation
488      * @return the PersonIdentifier
489      * @throws DoesNotExistException personIdentifierId not found
490      * @throws InvalidParameterException invalid personIdentifierId or contextInfo
491      * @throws MissingParameterException personIdentifierId or contextInfo is missing or null
492      * @throws OperationFailedException unable to complete request
493      * @throws PermissionDeniedException an authorization failure occurred
494      */
495     public PersonIdentifierInfo getPersonIdentifier(@WebParam(name = "personIdentifierId") String personIdentifierId,
496                                                     @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
497             InvalidParameterException,
498             MissingParameterException,
499             OperationFailedException,
500             PermissionDeniedException;
501 
502     /**
503      * Retrieves a list of person identifiers by a list of Person Identifier IDs
504      *
505      * @param personIdentifierIds a list of Person Identifier IDs
506      * @param contextInfo Context information containing the principalId and locale information about the caller of service
507      * operation
508      * @return a List of Person Identifiers
509      * @throws DoesNotExistException personIdentifierId not found
510      * @throws InvalidParameterException invalid personIdentifierId or contextInfo
511      * @throws MissingParameterException personIdentifierId or contextInfo is missing or null
512      * @throws OperationFailedException unable to complete request
513      * @throws PermissionDeniedException an authorization failure occurred
514      */
515     public List<PersonIdentifierInfo> getPersonIdentifiersByIds(
516             @WebParam(name = "personIdentifierIds") List<String> personIdentifierIds,
517             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
518             InvalidParameterException,
519             MissingParameterException,
520             OperationFailedException,
521             PermissionDeniedException;
522 
523     /**
524      * Retrieves a list of Person Identifier Ids by person type.
525      *
526      * @param personIdentifierTypeKey the personIdentifier Type Key to search by
527      * @param contextInfo Context information containing the principalId and locale information about the caller of service
528      * operation
529      * @return a List of PersonIdentifier IDs
530      * @throws DoesNotExistException personIdentifierTypeKey not found
531      * @throws InvalidParameterException invalid personIdentifierTypeKey or contextInfo
532      * @throws MissingParameterException personIdentifierTypeKey or contextInfo is missing or null
533      * @throws OperationFailedException unable to complete request
534      * @throws PermissionDeniedException an authorization failure occurred
535      */
536     public List<String> getPersonIdentifierIdsByType(@WebParam(name = "personIdentifierTypeKey") String personIdentifierTypeKey,
537                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
538             InvalidParameterException,
539             MissingParameterException,
540             OperationFailedException,
541             PermissionDeniedException;
542 
543     /**
544      * Searches for Person Identifier Ids based on the criteria and returns a list of Person Identifier identifiers which match
545      * the search criteria.
546      *
547      * @param criteria the search criteria
548      * @param contextInfo Context information containing the principalId and locale information about the caller of service
549      * operation
550      * @return a List of PersonIdentifier IDs
551      * @throws InvalidParameterException invalid criteria or contextInfo
552      * @throws MissingParameterException criteria or contextInfo is missing or null
553      * @throws OperationFailedException unable to complete request
554      * @throws PermissionDeniedException an authorization failure occurred
555      */
556     public List<String> searchForPersonIdentifierIds(@WebParam(name = "criteria") QueryByCriteria criteria,
557                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
558             InvalidParameterException,
559             MissingParameterException,
560             OperationFailedException,
561             PermissionDeniedException;
562 
563     /**
564      * Searches for person identifiers based on the criteria and returns a list of persons which match the search criteria.
565      *
566      * @param criteria the search criteria
567      * @param contextInfo Context information containing the principalId and locale information about the caller of service
568      * operation
569      * @return a List of Person Identifiers
570      * @throws InvalidParameterException invalid criteria or contextInfo
571      * @throws MissingParameterException criteria or contextInfo is missing or null
572      * @throws OperationFailedException unable to complete request
573      * @throws PermissionDeniedException an authorization failure occurred
574      */
575     public List<PersonIdentifierInfo> searchForPersonIdentifiers(@WebParam(name = "criteria") QueryByCriteria criteria,
576                                                                  @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
577             InvalidParameterException,
578             MissingParameterException,
579             OperationFailedException,
580             PermissionDeniedException;
581 
582     /**
583      * Validates a PersonIdentifier. If an identifier is present for the Person Identifier and a record is found for that
584      * identifier, the validation checks if the PersonIdentifier can be updated to the new values. If an identifier is not present
585      * or a record does not exist, the validation checks if the person with the given data can be created.
586      *
587      * @param validationTypeKey the identifier for the validation Type
588      * @param personIdentifierTypeKey the identifier for the person identifier type to be validated
589      * @param personId id of person for whom this identifier is being applied
590      * @param personIdentifierInfo the person to be validated
591      * @param contextInfo Context information containing the principalId and locale information about the caller of service
592      * operation
593      * @return a list of validation results or an empty list if validation succeeded
594      * @throws DoesNotExistException validationTypeKey or personIdentifierTypeKey is not found
595      * @throws InvalidParameterException personIdentifierInfo or contextInfo is not valid
596      * @throws MissingParameterException validationTypeKey, personIdentifierTypeKey, personIdentifierInfo, or contextInfo is
597      * missing or null
598      * @throws OperationFailedException unable to complete request
599      * @throws PermissionDeniedException an authorization failure occurred
600      */
601     public List<ValidationResultInfo> validatePersonIdentifier(@WebParam(name = "validationTypeKey") String validationTypeKey,
602                                                                @WebParam(name = "personIdentifierTypeKey") String personIdentifierTypeKey,
603                                                                @WebParam(name = "personId") String personId,
604                                                                @WebParam(name = "personIdentifierInfo") PersonIdentifierInfo personIdentifierInfo,
605                                                                @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
606             DoesNotExistException,
607             InvalidParameterException,
608             MissingParameterException,
609             OperationFailedException,
610             PermissionDeniedException;
611 
612     /**
613      * Creates a new Person Identifier. The Person Identifier Id, Type, and Meta information may not be set in the supplied data.
614      *
615      * @param personIdentifierTypeKey the identifier for the person identifier Type to assign to this identifier object
616      * @param personId id of the person to whom this identifier is attached
617      * @param personIdentifierInfo the person to be validated
618      * @param contextInfo Context information containing the principalId and locale information about the caller of service
619      * operation
620      * @return the new PersonIdentifier
621      * @throws DataValidationErrorException supplied data is invalid
622      * @throws DoesNotExistException personIdentifierType does not exist or is not supported
623      * @throws InvalidParameterException personInfo or contextInfo is not valid
624      * @throws MissingParameterException personIdentifierType, personIdentifierInfo, or contextInfo is missing or null
625      * @throws OperationFailedException unable to complete request
626      * @throws PermissionDeniedException an authorization failure occurred
627      * @throws ReadOnlyException an attempt at supplying information designated as read only
628      */
629     public PersonIdentifierInfo createPersonIdentifier(@WebParam(name = "personIdentifierTypeKey") String personIdentifierTypeKey,
630                                                        @WebParam(name = "personId") String personId,
631                                                        @WebParam(name = "personIdentifierInfo") PersonIdentifierInfo personIdentifierInfo,
632                                                        @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
633             DataValidationErrorException,
634             DoesNotExistException,
635             InvalidParameterException,
636             MissingParameterException,
637             OperationFailedException,
638             PermissionDeniedException,
639             ReadOnlyException;
640 
641     /**
642      * Updates an existing Person Identifier. The Person Identifier Id, Type, and Meta information may not be changed.
643      *
644      * @param personIdentifierId the identifier for the PersonIdentifier to be updated
645      * @param personIdentifierInfo the person to be validated
646      * @param contextInfo Context information containing the principalId and locale information about the caller of service
647      * operation
648      * @return the updated PersonIdentifier
649      * @throws DataValidationErrorException supplied data is invalid
650      * @throws DoesNotExistException personId is not found
651      * @throws InvalidParameterException personId, personIdentifierInfo or contextInfo is not valid
652      * @throws MissingParameterException personId, personIdentifierInfo, or contextInfo is missing or null
653      * @throws OperationFailedException unable to complete request
654      * @throws PermissionDeniedException an authorization failure occurred
655      * @throws ReadOnlyException an attempt at supplying information designated as read only
656      * @throws VersionMismatchException if someone else has updated this person record since you fetched the version you are
657      * updating.
658      */
659     public PersonIdentifierInfo updatePersonIdentifier(@WebParam(name = "personIdentifierId") String personIdentifierId,
660                                                        @WebParam(name = "personIdentifierInfo") PersonIdentifierInfo personIdentifierInfo,
661                                                        @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
662             DataValidationErrorException,
663             DoesNotExistException,
664             InvalidParameterException,
665             MissingParameterException,
666             OperationFailedException,
667             PermissionDeniedException,
668             ReadOnlyException,
669             VersionMismatchException;
670 
671     /**
672      * Deletes an existing Person Identifier.
673      *
674      * @param personIdentifierId the identifier for the person identifier record to be deleted
675      * @param contextInfo Context information containing the principalId and locale information about the caller of service
676      * operation
677      * @return the status of the delete operation. This must always be true.
678      * @throws DoesNotExistException personIdentifierId is not found
679      * @throws InvalidParameterException personIdentifierId or contextInfo is not valid
680      * @throws MissingParameterException personIdentifierId or contextInfo is missing or null
681      * @throws OperationFailedException unable to complete request
682      * @throws PermissionDeniedException an authorization failure occurred
683      */
684     public StatusInfo deletePersonIdentifier(@WebParam(name = "personIdentifierId") String personIdentifierId,
685                                              @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
686             DoesNotExistException,
687             InvalidParameterException,
688             MissingParameterException,
689             OperationFailedException,
690             PermissionDeniedException;
691 
692     /**
693      * Get person identifiers for a person
694      *
695      * @param personId the identifier for the person
696      * @param contextInfo Context information containing the principalId and locale information about the caller of service
697      * operation
698      * @return list of identifiers for that person
699      * @throws DoesNotExistException personId is not found
700      * @throws InvalidParameterException personId or contextInfo is not valid
701      * @throws MissingParameterException personId or contextInfo is missing or null
702      * @throws OperationFailedException unable to complete request
703      * @throws PermissionDeniedException an authorization failure occurred
704      */
705     public List<PersonIdentifierInfo> getPersonIdentifiersByPerson(@WebParam(name = "personId") String personId,
706                                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
707             DoesNotExistException,
708             InvalidParameterException,
709             MissingParameterException,
710             OperationFailedException,
711             PermissionDeniedException;
712 
713     /**
714      * Get PersonIdentifiers by identifier
715      *
716      * Note: Some identifiers may not be unique
717      *
718      * @param identifier the identifier for the person
719      * @param personIdentifierTypeKey the type of the identifier to be searched
720      * @param contextInfo Context information containing the principalId and locale information about the caller of service
721      * operation
722      * @return a list of identifiers matching the specific identifier
723      * @throws InvalidParameterException personIdentifierTypeKey or contextInfo is not valid
724      * @throws MissingParameterException personIdentifierTypeKey or contextInfo is missing or null
725      * @throws OperationFailedException unable to complete request
726      * @throws PermissionDeniedException an authorization failure occurred
727      */
728     public List<PersonIdentifierInfo> getPersonIdentifiersByIdentifier(
729             @WebParam(name = "personIdentifierTypeKey") String personIdentifierTypeKey,
730             @WebParam(name = "identifier") String identifier,
731             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
732             InvalidParameterException,
733             MissingParameterException,
734             OperationFailedException,
735             PermissionDeniedException;
736 
737     ////
738     //// person bio demographics
739     ////
740     /**
741      * Retrieves a Person Bio Demographic by a Person Bio Demographic ID
742      *
743      * @param personBioDemographicsId the Person Bio Demographic ID
744      * @param contextInfo Context information containing the principalId and locale information about the caller of service
745      * operation
746      * @return the PersonIdentifier
747      * @throws DoesNotExistException personBioDemographicsId not found
748      * @throws InvalidParameterException invalid personBioDemographicsId or contextInfo
749      * @throws MissingParameterException personBioDemographicsId or contextInfo is missing or null
750      * @throws OperationFailedException unable to complete request
751      * @throws PermissionDeniedException an authorization failure occurred
752      */
753     public PersonBioDemographicsInfo getPersonBioDemographics(
754             @WebParam(name = "personBioDemographicsId") String personBioDemographicsId,
755             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
756             InvalidParameterException,
757             MissingParameterException,
758             OperationFailedException,
759             PermissionDeniedException;
760 
761     /**
762      * Retrieves a list of person identifiers by a list of Person Bio Demographic IDs
763      *
764      * @param personBioDemographicsIds a list of Person Bio Demographic IDs
765      * @param contextInfo Context information containing the principalId and locale information about the caller of service
766      * operation
767      * @return a List of Person Bio Demographics
768      * @throws DoesNotExistException personBioDemographicsId not found
769      * @throws InvalidParameterException invalid personBioDemographicsIds or contextInfo
770      * @throws MissingParameterException personBioDemographicsIds or contextInfo is missing or null
771      * @throws OperationFailedException unable to complete request
772      * @throws PermissionDeniedException an authorization failure occurred
773      */
774     public List<PersonBioDemographicsInfo> getPersonBioDemographicsByIds(
775             @WebParam(name = "personBioDemographicsIds") List<String> personBioDemographicsIds,
776             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
777             InvalidParameterException,
778             MissingParameterException,
779             OperationFailedException,
780             PermissionDeniedException;
781 
782     /**
783      * Retrieves a list of Person Bio Demographic Ids by person type.
784      *
785      * @param personIdentifierTypeKey the personIdentifier Type Key to search by
786      * @param contextInfo Context information containing the principalId and locale information about the caller of service
787      * operation
788      * @return a List of PersonBioDemographics IDs
789      * @throws DoesNotExistException personIdentifierTypeKey not found
790      * @throws InvalidParameterException invalid personIdentifierTypeKey or contextInfo
791      * @throws MissingParameterException personIdentifierTypeKey or contextInfo is missing or null
792      * @throws OperationFailedException unable to complete request
793      * @throws PermissionDeniedException an authorization failure occurred
794      */
795     public List<String> getPersonBioDemographicsIdsByType(
796             @WebParam(name = "personIdentifierTypeKey") String personIdentifierTypeKey,
797             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
798             InvalidParameterException,
799             MissingParameterException,
800             OperationFailedException,
801             PermissionDeniedException;
802 
803     /**
804      * Searches for Person Bio Demographic Ids based on the criteria and returns a list of Person Bio Demographic identifiers
805      * which match the search criteria.
806      *
807      * @param criteria the search criteria
808      * @param contextInfo Context information containing the principalId and locale information about the caller of service
809      * operation
810      * @return a List of PersonBioDemographics IDs
811      * @throws InvalidParameterException invalid criteria or contextInfo
812      * @throws MissingParameterException criteria or contextInfo is missing or null
813      * @throws OperationFailedException unable to complete request
814      * @throws PermissionDeniedException an authorization failure occurred
815      */
816     public List<String> searchForPersonBioDemographicsIds(@WebParam(name = "criteria") QueryByCriteria criteria,
817                                                           @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
818             InvalidParameterException,
819             MissingParameterException,
820             OperationFailedException,
821             PermissionDeniedException;
822 
823     /**
824      * Searches for person identifiers based on the criteria and returns a list of persons which match the search criteria.
825      *
826      * @param criteria the search criteria
827      * @param contextInfo Context information containing the principalId and locale information about the caller of service
828      * operation
829      * @return a List of Person Bio Demographics
830      * @throws InvalidParameterException invalid criteria or contextInfo
831      * @throws MissingParameterException criteria or contextInfo is missing or null
832      * @throws OperationFailedException unable to complete request
833      * @throws PermissionDeniedException an authorization failure occurred
834      */
835     public List<PersonBioDemographicsInfo> searchForPersonBioDemographics(@WebParam(name = "criteria") QueryByCriteria criteria,
836                                                                           @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
837             InvalidParameterException,
838             MissingParameterException,
839             OperationFailedException,
840             PermissionDeniedException;
841 
842     /**
843      * Validates a PersonBioDemographics. If an identifier is present for the Person Bio Demographic and a record is found for
844      * that identifier, the validation checks if the PersonBioDemographics can be updated to the new values. If an identifier is
845      * not present or a record does not exist, the validation checks if the person with the given data can be created.
846      *
847      * @param validationTypeKey the identifier for the validation Type
848      * @param personIdentifierTypeKey the identifier for the person identifier type to be validated
849      * @param personId id of person for whom this identifier is being applied
850      * @param personBioDemographicsInfo the person to be validated
851      * @param contextInfo Context information containing the principalId and locale information about the caller of service
852      * operation
853      * @return a list of validation results or an empty list if validation succeeded
854      * @throws InvalidParameterException personBioDemographicsInfo or contextInfo is not valid
855      * @throws MissingParameterException validationTypeKey, personIdentifierTypeKey, personInfo, or contextInfo is missing or null
856      * @throws OperationFailedException unable to complete request
857      * @throws PermissionDeniedException an authorization failure occurred
858      */
859     public List<ValidationResultInfo> validatePersonBioDemographics(@WebParam(name = "validationTypeKey") String validationTypeKey,
860                                                                     @WebParam(name = "personIdentifierTypeKey") String personIdentifierTypeKey,
861                                                                     @WebParam(name = "personId") String personId,
862                                                                     @WebParam(name = "personBioDemographicsInfo") PersonBioDemographicsInfo personBioDemographicsInfo,
863                                                                     @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
864             InvalidParameterException,
865             MissingParameterException,
866             OperationFailedException,
867             PermissionDeniedException;
868 
869     /**
870      * Creates a new Person Bio Demographic. The Person Bio Demographic Id, Type, and Meta information may not be set in the
871      * supplied data.
872      *
873      * @param personIdentifierTypeKey the identifier for the person identifier Type to assign to this identifier object
874      * @param personId id of the person to whom this identifier is attached
875      * @param personBioDemographicsInfo the person to be validated
876      * @param contextInfo Context information containing the principalId and locale information about the caller of service
877      * operation
878      * @return the new PersonBioDemographics
879      * @throws DataValidationErrorException supplied data is invalid
880      * @throws DoesNotExistException personIdentifierType does not exist or is not supported
881      * @throws InvalidParameterException personBioDemographicsInfo or contextInfo is not valid
882      * @throws MissingParameterException personIdentifierType, personBioDemographicsInfo, or contextInfo is missing or null
883      * @throws OperationFailedException unable to complete request
884      * @throws PermissionDeniedException an authorization failure occurred
885      * @throws ReadOnlyException an attempt at supplying information designated as read only
886      */
887     public PersonBioDemographicsInfo createPersonBioDemographics(
888             @WebParam(name = "personIdentifierTypeKey") String personIdentifierTypeKey,
889             @WebParam(name = "personId") String personId,
890             @WebParam(name = "personBioDemographicsInfo") PersonBioDemographicsInfo personBioDemographicsInfo,
891             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
892             DataValidationErrorException,
893             DoesNotExistException,
894             InvalidParameterException,
895             MissingParameterException,
896             OperationFailedException,
897             PermissionDeniedException,
898             ReadOnlyException;
899 
900     /**
901      * Updates an existing Person Bio Demographic. The Person Bio Demographic Id, Type, and Meta information may not be changed.
902      *
903      * @param personBioDemographicsId the identifier for the PersonBioDemographics to be updated
904      * @param personBioDemographicsInfo the person to be validated
905      * @param contextInfo Context information containing the principalId and locale information about the caller of service
906      * operation
907      * @return the updated PersonBioDemographics
908      * @throws DataValidationErrorException supplied data is invalid
909      * @throws DoesNotExistException personBioDemographicsId is not found
910      * @throws InvalidParameterException personBioDemographicsId, personBioDemographicsInfo or contextInfo is not valid
911      * @throws MissingParameterException personBioDemographicsId, personBioDemographicsInfo, or contextInfo is missing or null
912      * @throws OperationFailedException unable to complete request
913      * @throws PermissionDeniedException an authorization failure occurred
914      * @throws ReadOnlyException an attempt at supplying information designated as read only
915      * @throws VersionMismatchException if someone else has updated this person record since you fetched the version you are
916      * updating.
917      */
918     public PersonBioDemographicsInfo updatePersonBioDemographics(
919             @WebParam(name = "personBioDemographicsId") String personBioDemographicsId,
920             @WebParam(name = "personBioDemographicsInfo") PersonBioDemographicsInfo personBioDemographicsInfo,
921             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
922             DataValidationErrorException,
923             DoesNotExistException,
924             InvalidParameterException,
925             MissingParameterException,
926             OperationFailedException,
927             PermissionDeniedException,
928             ReadOnlyException,
929             VersionMismatchException;
930 
931     /**
932      * Deletes an existing Person Bio Demographic.
933      *
934      * @param personBioDemographicsId the identifier for the person identifier record to be deleted
935      * @param contextInfo Context information containing the principalId and locale information about the caller of service
936      * operation
937      * @return the status of the delete operation. This must always be true.
938      * @throws DoesNotExistException personInfo is not found
939      * @throws InvalidParameterException personInfo or contextInfo is not valid
940      * @throws MissingParameterException personInfo or contextInfo is missing or null
941      * @throws OperationFailedException unable to complete request
942      * @throws PermissionDeniedException an authorization failure occurred
943      */
944     public StatusInfo deletePersonBioDemographics(@WebParam(name = "personBioDemographicsId") String personBioDemographicsId,
945                                                   @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
946             DoesNotExistException,
947             InvalidParameterException,
948             MissingParameterException,
949             OperationFailedException,
950             PermissionDeniedException;
951 
952     /**
953      * Get person bio demographics for a person
954      *
955      * @param personId the identifier for the person
956      * @param contextInfo Context information containing the principalId and locale information about the caller of service
957      * operation
958      * @return the person's demo graphics
959      * @throws DoesNotExistException personInfo is not found or person has no bio demographics
960      * @throws InvalidParameterException personInfo or contextInfo is not valid
961      * @throws MissingParameterException personInfo or contextInfo is missing or null
962      * @throws OperationFailedException unable to complete request
963      * @throws PermissionDeniedException an authorization failure occurred
964      */
965     public PersonBioDemographicsInfo getPersonBioDemographicsByPerson(@WebParam(name = "personId") String personId,
966                                                                       @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
967             DoesNotExistException,
968             InvalidParameterException,
969             MissingParameterException,
970             OperationFailedException,
971             PermissionDeniedException;
972 
973     ////
974     //// person affiliations
975     ////
976     /**
977      * Retrieves a Person Affiliation by a Person Affiliation ID
978      *
979      * @param personAffiliationId the Person Affiliation ID
980      * @param contextInfo Context information containing the principalId and locale information about the caller of service
981      * operation
982      * @return the PersonAffiliation
983      * @throws DoesNotExistException personAffiliationId not found
984      * @throws InvalidParameterException invalid personAffiliationId or contextInfo
985      * @throws MissingParameterException personAffiliationId or contextInfo is missing or null
986      * @throws OperationFailedException unable to complete request
987      * @throws PermissionDeniedException an authorization failure occurred
988      */
989     public PersonAffiliationInfo getPersonAffiliation(@WebParam(name = "personAffiliationId") String personAffiliationId,
990                                                       @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
991             InvalidParameterException,
992             MissingParameterException,
993             OperationFailedException,
994             PermissionDeniedException;
995 
996     /**
997      * Retrieves a list of person identifiers by a list of Person Affiliation IDs
998      *
999      * @param personAffiliationIds a list of Person Affiliation IDs
1000      * @param contextInfo Context information containing the principalId and locale information about the caller of service
1001      * operation
1002      * @return a List of Person Affiliations
1003      * @throws DoesNotExistException personAffiliationId not found
1004      * @throws InvalidParameterException invalid personAffiliationId or contextInfo
1005      * @throws MissingParameterException personAffiliationId or contextInfo is missing or null
1006      * @throws OperationFailedException unable to complete request
1007      * @throws PermissionDeniedException an authorization failure occurred
1008      */
1009     public List<PersonAffiliationInfo> getPersonAffiliationsByIds(
1010             @WebParam(name = "personAffiliationIds") List<String> personAffiliationIds,
1011             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
1012             InvalidParameterException,
1013             MissingParameterException,
1014             OperationFailedException,
1015             PermissionDeniedException;
1016 
1017     /**
1018      * Retrieves a list of Person Affiliation Ids by person type.
1019      *
1020      * @param personAffiliationTypeKey the personAffiliation Type Key to search by
1021      * @param contextInfo Context information containing the principalId and locale information about the caller of service
1022      * operation
1023      * @return a List of PersonAffiliation IDs
1024      * @throws DoesNotExistException personAffiliationTypeKey not found
1025      * @throws InvalidParameterException invalid personAffiliationTypeKey or contextInfo
1026      * @throws MissingParameterException personAffiliationTypeKey or contextInfo is missing or null
1027      * @throws OperationFailedException unable to complete request
1028      * @throws PermissionDeniedException an authorization failure occurred
1029      */
1030     public List<String> getPersonAffiliationIdsByType(@WebParam(name = "personAffiliationTypeKey") String personAffiliationTypeKey,
1031                                                       @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
1032             InvalidParameterException,
1033             MissingParameterException,
1034             OperationFailedException,
1035             PermissionDeniedException;
1036 
1037     /**
1038      * Searches for Person Affiliation Ids based on the criteria and returns a list of Person Affiliations which match the search
1039      * criteria.
1040      *
1041      * @param criteria the search criteria
1042      * @param contextInfo Context information containing the principalId and locale information about the caller of service
1043      * operation
1044      * @return a List of PersonAffiliation IDs
1045      * @throws InvalidParameterException invalid criteria or contextInfo
1046      * @throws MissingParameterException criteria or contextInfo is missing or null
1047      * @throws OperationFailedException unable to complete request
1048      * @throws PermissionDeniedException an authorization failure occurred
1049      */
1050     public List<String> searchForPersonAffiliationIds(@WebParam(name = "criteria") QueryByCriteria criteria,
1051                                                       @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
1052             InvalidParameterException,
1053             MissingParameterException,
1054             OperationFailedException,
1055             PermissionDeniedException;
1056 
1057     /**
1058      * Searches for person affiliations based on the criteria and returns a list of persons which match the search criteria.
1059      *
1060      * @param criteria the search criteria
1061      * @param contextInfo Context information containing the principalId and locale information about the caller of service
1062      * operation
1063      * @return a List of Person Affiliations
1064      * @throws InvalidParameterException invalid criteria or contextInfo
1065      * @throws MissingParameterException criteria or contextInfo is missing or null
1066      * @throws OperationFailedException unable to complete request
1067      * @throws PermissionDeniedException an authorization failure occurred
1068      */
1069     public List<PersonAffiliationInfo> searchForPersonAffiliations(@WebParam(name = "criteria") QueryByCriteria criteria,
1070                                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
1071             InvalidParameterException,
1072             MissingParameterException,
1073             OperationFailedException,
1074             PermissionDeniedException;
1075 
1076     /**
1077      * Validates a PersonAffiliation. If an affiliation is present for the Person Affiliation and a record is found for that
1078      * affiliation, the validation checks if the PersonAffiliation can be updated to the new values. If an affiliation is not
1079      * present or a record does not exist, the validation checks if the person with the given data can be created.
1080      *
1081      * @param validationTypeKey the affiliation for the validation Type
1082      * @param personAffiliationTypeKey the affiliation for the person affiliation type to be validated
1083      * @param personId id of person for whom this affiliation is being applied
1084      * @param organizationId id of organizational unit for whom this affiliation is being applied
1085      * @param personAffiliationInfo the person to be validated
1086      * @param contextInfo Context information containing the principalId and locale information about the caller of service
1087      * operation
1088      * @return a list of validation results or an empty list if validation succeeded
1089      * @throws DoesNotExistException validationTypeKey or personAffiliationTypeKey is not found
1090      * @throws InvalidParameterException personAffiliationInfo or contextInfo is not valid
1091      * @throws MissingParameterException validationTypeKey, personAffiliationTypeKey, personAffiliationInfo, or contextInfo is
1092      * missing or null
1093      * @throws OperationFailedException unable to complete request
1094      * @throws PermissionDeniedException an authorization failure occurred
1095      */
1096     public List<ValidationResultInfo> validatePersonAffiliation(@WebParam(name = "validationTypeKey") String validationTypeKey,
1097                                                                 @WebParam(name = "personAffiliationTypeKey") String personAffiliationTypeKey,
1098                                                                 @WebParam(name = "personId") String personId,
1099                                                                 @WebParam(name = "organizationId") String organizationId,
1100                                                                 @WebParam(name = "personAffiliationInfo") PersonAffiliationInfo personAffiliationInfo,
1101                                                                 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
1102             DoesNotExistException,
1103             InvalidParameterException,
1104             MissingParameterException,
1105             OperationFailedException,
1106             PermissionDeniedException;
1107 
1108     /**
1109      * Creates a new Person Affiliation. The Person Affiliation Id, Type, and Meta information may not be set in the supplied
1110      * data.
1111      *
1112      * @param personAffiliationTypeKey the affiliation for the person affiliation Type to assign to this affiliation object
1113      * @param personId id of the person to whom this affiliation is attached
1114      * @param organizationId id of organizational unit for whom this affiliation is being applied
1115      * @param personAffiliationInfo the person to be validated
1116      * @param contextInfo Context information containing the principalId and locale information about the caller of service
1117      * operation
1118      * @return the new PersonAffiliation
1119      * @throws DataValidationErrorException supplied data is invalid
1120      * @throws DoesNotExistException personAffiliationType does not exist or is not supported
1121      * @throws InvalidParameterException personInfo or contextInfo is not valid
1122      * @throws MissingParameterException personAffiliationType, personAffiliationInfo, or contextInfo is missing or null
1123      * @throws OperationFailedException unable to complete request
1124      * @throws PermissionDeniedException an authorization failure occurred
1125      * @throws ReadOnlyException an attempt at supplying information designated as read only
1126      */
1127     public PersonAffiliationInfo createPersonAffiliation(
1128             @WebParam(name = "personAffiliationTypeKey") String personAffiliationTypeKey,
1129             @WebParam(name = "personId") String personId,
1130             @WebParam(name = "organizationId") String organizationId,
1131             @WebParam(name = "personAffiliationInfo") PersonAffiliationInfo personAffiliationInfo,
1132             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
1133             DataValidationErrorException,
1134             DoesNotExistException,
1135             InvalidParameterException,
1136             MissingParameterException,
1137             OperationFailedException,
1138             PermissionDeniedException,
1139             ReadOnlyException;
1140 
1141     /**
1142      * Updates an existing Person Affiliation. The Person Affiliation Id, Type, and Meta information may not be changed.
1143      *
1144      * @param personAffiliationId the affiliation for the PersonAffiliation to be updated
1145      * @param personAffiliationInfo the person to be validated
1146      * @param contextInfo Context information containing the principalId and locale information about the caller of service
1147      * operation
1148      * @return the updated PersonAffiliation
1149      * @throws DataValidationErrorException supplied data is invalid
1150      * @throws DoesNotExistException personId is not found
1151      * @throws InvalidParameterException personId, personAffiliationInfo or contextInfo is not valid
1152      * @throws MissingParameterException personId, personAffiliationInfo, or contextInfo is missing or null
1153      * @throws OperationFailedException unable to complete request
1154      * @throws PermissionDeniedException an authorization failure occurred
1155      * @throws ReadOnlyException an attempt at supplying information designated as read only
1156      * @throws VersionMismatchException if someone else has updated this person record since you fetched the version you are
1157      * updating.
1158      */
1159     public PersonAffiliationInfo updatePersonAffiliation(@WebParam(name = "personAffiliationId") String personAffiliationId,
1160                                                          @WebParam(name = "personAffiliationInfo") PersonAffiliationInfo personAffiliationInfo,
1161                                                          @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
1162             DataValidationErrorException,
1163             DoesNotExistException,
1164             InvalidParameterException,
1165             MissingParameterException,
1166             OperationFailedException,
1167             PermissionDeniedException,
1168             ReadOnlyException,
1169             VersionMismatchException;
1170 
1171     /**
1172      * Deletes an existing Person Affiliation.
1173      *
1174      * @param personAffiliationId the affiliation for the person affiliation record to be deleted
1175      * @param contextInfo Context information containing the principalId and locale information about the caller of service
1176      * operation
1177      * @return the status of the delete operation. This must always be true.
1178      * @throws DoesNotExistException personAffiliationId is not found
1179      * @throws InvalidParameterException personAffiliationId or contextInfo is not valid
1180      * @throws MissingParameterException personAffiliationId or contextInfo is missing or null
1181      * @throws OperationFailedException unable to complete request
1182      * @throws PermissionDeniedException an authorization failure occurred
1183      */
1184     public StatusInfo deletePersonAffiliation(@WebParam(name = "personAffiliationId") String personAffiliationId,
1185                                               @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
1186             DoesNotExistException,
1187             InvalidParameterException,
1188             MissingParameterException,
1189             OperationFailedException,
1190             PermissionDeniedException;
1191 
1192     /**
1193      * Get person affiliations for a person
1194      *
1195      * @param personId the affiliation for the person
1196      * @param contextInfo Context information containing the principalId and locale information about the caller of service
1197      * operation
1198      * @return list of affiliations for that person
1199      * @throws DoesNotExistException personId is not found
1200      * @throws InvalidParameterException personId or contextInfo is not valid
1201      * @throws MissingParameterException personId or contextInfo is missing or null
1202      * @throws OperationFailedException unable to complete request
1203      * @throws PermissionDeniedException an authorization failure occurred
1204      */
1205     public List<PersonAffiliationInfo> getPersonAffiliationsByPerson(@WebParam(name = "personId") String personId,
1206                                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
1207             DoesNotExistException,
1208             InvalidParameterException,
1209             MissingParameterException,
1210             OperationFailedException,
1211             PermissionDeniedException;
1212 
1213     /**
1214      * Get active people matching a name name fragment with the specified affiliation to a particular organization.
1215      *
1216      * "Active" can be institutionally configured but is intended to select just those whose affiliations are current.
1217      * I.e. the store my contain many old students who graduated years ago but this method should filter them out.
1218      *
1219      * @param nameFragment to match the name
1220      * @param personAffiliationTypeKey the type of the affiliation to be searched
1221      * @param organizationId the affiliation for the person
1222      * @param contextInfo Context information containing the principalId and locale information about the caller of service
1223      * operation
1224      * @return a list of person ids matching the specific affiliation
1225      * @throws InvalidParameterException personAffiliationTypeKey or contextInfo is not valid
1226      * @throws MissingParameterException personAffiliationTypeKey or contextInfo is missing or null
1227      * @throws OperationFailedException unable to complete request
1228      * @throws PermissionDeniedException an authorization failure occurred
1229      */
1230     public List<PersonInfo> getActivePeopleMatchingNameFragmentAndAffiliation(
1231             @WebParam(name = "nameFragment") String nameFragment,
1232             @WebParam(name = "personAffiliationTypeKey") String personAffiliationTypeKey,
1233             @WebParam(name = "organizationId") String organizationId,
1234             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
1235             InvalidParameterException,
1236             MissingParameterException,
1237             OperationFailedException,
1238             PermissionDeniedException;
1239 
1240 
1241     /**
1242      * Get the Organization Id to use for Institutional affiliations
1243      *
1244      * This is sort of a default organization id to use when querying affiliations.
1245      *
1246      * @param contextInfo Context information containing the principalId and locale information about the caller of service
1247      * operation
1248      * @return a list of person ids matching the specific affiliation
1249      * @throws InvalidParameterException personAffiliationTypeKey or contextInfo is not valid
1250      * @throws MissingParameterException personAffiliationTypeKey or contextInfo is missing or null
1251      * @throws OperationFailedException unable to complete request
1252      * @throws PermissionDeniedException an authorization failure occurred
1253      */
1254     public String getInstitutionalAffiliationOrganizationId(
1255             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws
1256             InvalidParameterException,
1257             MissingParameterException,
1258             OperationFailedException,
1259             PermissionDeniedException;
1260 }