Added Update extended service.
[yaz-moved-to-github.git] / include / prt-exd.h
1 /*
2  * Copyright (c) 1995, Index Data.
3  *
4  * Permission to use, copy, modify, distribute, and sell this software and
5  * its documentation, in whole or in part, for any purpose, is hereby granted,
6  * provided that:
7  *
8  * 1. This copyright and permission notice appear in all copies of the
9  * software and its documentation. Notices of copyright or attribution
10  * which appear at the beginning of any file must remain unchanged.
11  *
12  * 2. The names of Index Data or the individual authors may not be used to
13  * endorse or promote products derived from this software without specific
14  * prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
18  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
19  * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
20  * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES
21  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR
22  * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
23  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
24  * OF THIS SOFTWARE.
25  *
26  */
27
28 #ifndef PRT_EXD_H
29 #define PRT_EXD_H
30
31 #include <yconfig.h>
32
33 typedef struct Z_TaskPackage
34 {
35     Odr_oid *packageType;                 
36     char *packageName;                      /* OPTIONAL */
37     char *userId;                           /* OPTIONAL */
38     Z_IntUnit *retentionTime;               /* OPTIONAL */
39     Z_Permissions *permissions;             /* OPTIONAL */
40     char *description;                      /* OPTIONAL */
41     Odr_oct *targetReference;             
42     char *creationDateTime;    /* OPTIONAL */
43     int *taskStatus;                      
44 #define Z_TaskPackage_pending             0
45 #define Z_TaskPackage_active              1
46 #define Z_TaskPackage_complete            2
47 #define Z_TaskPackage_aborted             3
48     int num_packageDiagnostics;
49     Z_DiagRec **packageDiagnostics;         /* OPTIONAL */
50     Z_External *taskSpecificParameters;   
51 } Z_TaskPackage;
52
53 int z_TaskPackage(ODR o, Z_TaskPackage **p, int opt);
54
55 /* ----------------------- ITEM ORDER ------------------------- */
56
57 typedef struct Z_IOTargetPart
58 {
59     Z_External *itemRequest;                   /* OPTIONAL */
60     Z_External *statusOrErrorReport;
61     int *auxiliaryStatus;                      /* OPTIONAL */
62 #define Z_IOTargetPart_notReceived        1
63 #define Z_IOTargetPart_loanQueue          2
64 #define Z_IOTargetPart_forwarded          3
65 #define Z_IOTargetPart_unfilledCopyright  4
66 #define Z_IOTargetPart_filledCopyright    1
67 } Z_IOTargetPart;
68
69 typedef struct Z_IOResultSetItem
70 {
71     char *resultSetId;
72     int *item;
73 } Z_IOResultSetItem;
74
75 typedef struct Z_IOOriginPartNotToKeep
76 {
77     Z_IOResultSetItem *resultSetItem;          /* OPTIONAL */
78     Z_External *itemRequest;                   /* OPTIONAL */
79 } Z_IOOriginPartNotToKeep;
80
81 typedef struct Z_IOContact
82 {
83     char *name;                                /* OPTIONAL */
84     char *phone;                               /* OPTIONAL */
85     char *email;                               /* OPTIONAL */
86 } Z_IOContact;
87
88 typedef struct Z_IOCreditCardInfo
89 {
90     char *nameOnCard;
91     char *expirationDate;
92     char *cardNumber;
93 } Z_IOCreditCardInfo;
94
95 typedef struct Z_IOBilling
96 {
97     int which;
98 #define Z_IOBilling_billInvoice 0
99 #define Z_IOBilling_prepay 1
100 #define Z_IOBilling_depositAccount 2
101 #define Z_IOBilling_creditCard 3
102 #define Z_IOBilling_cardInfoPreviouslySupplied 4
103 #define Z_IOBilling_privateKnown 5
104 #define Z_IOBilling_privateNotKnown 6
105     union
106     {
107         Odr_null *noinfo;
108         Z_IOCreditCardInfo *creditCard;
109         Z_External *privateNotKnown;
110     } paymentMethod;
111     char *customerReference;                        /* OPTIONAL */
112     char *customerPONumber;                         /* OPTIONAL */
113 } Z_IOBilling;
114
115 typedef struct Z_IOOriginPartToKeep
116 {
117     Z_External *supplDescription;              /* OPTIONAL */
118     Z_IOContact *contact;                      /* OPTIONAL */
119     Z_IOBilling *addlBilling;                  /* OPTIONAL */
120 } Z_IOOriginPartToKeep;
121
122 typedef struct Z_IORequest
123 {
124     Z_IOOriginPartToKeep *toKeep;              /* OPTIONAL */
125     Z_IOOriginPartNotToKeep *notToKeep;
126 } Z_IORequest;
127
128 typedef struct Z_IOTaskPackage
129 {
130     Z_IOOriginPartToKeep *originPart;          /* OPTIONAL */
131     Z_IOTargetPart *targetPart;
132 } Z_IOTaskPackage;
133
134 typedef struct Z_ItemOrder
135 {
136     int which;
137 #define Z_ItemOrder_esRequest 0
138 #define Z_ItemOrder_taskPackage 1
139     union
140     {
141         Z_IORequest *esRequest;
142         Z_IOTaskPackage *taskPackage;
143     } u;
144 } Z_ItemOrder;
145
146 int z_ItemOrder(ODR o, Z_ItemOrder **p, int opt);
147
148 /* ----------------------- ITEM UPDATE ------------------------ */
149
150 typedef struct Z_IUSuppliedRecordsId
151 {
152     int which;
153 #define Z_IUSuppliedRecordsId_timeStamp 1
154 #define Z_IUSuppliedRecordsId_versionNumber 2
155 #define Z_IUSuppliedRecordsId_previousVersion 3
156     union {
157         char *timeStamp;
158         char *versionNumber;
159         Odr_external *previousVersion;
160     } u;
161 } Z_IUSuppliedRecordsId;
162
163 typedef struct Z_IUCorrelationInfo
164 {
165     char *note; /* OPTIONAL */
166     int *id; /* OPTIONAL */
167 } Z_IUCorrelationInfo;
168
169 typedef struct Z_IUSuppliedRecords_elem
170 {
171     int which;
172 #define Z_IUSuppliedRecords_number 1
173 #define Z_IUSuppliedRecords_string 2
174 #define Z_IUSuppliedRecords_opaque 3
175     union {
176         int *number;
177         char *string;
178         Odr_oct *opaque;
179     } u; /* OPTIONAL */
180     Z_IUSuppliedRecordsId *supplementalId; /* OPTIONAL */
181     Z_IUCorrelationInfo *correlationInfo;    /* OPTIONAL */
182     Odr_external *record;
183 } Z_IUSuppliedRecords_elem;
184
185 typedef struct Z_IUSuppliedRecords
186 {
187     int num;
188     Z_IUSuppliedRecords_elem **elements;
189 } Z_IUSuppliedRecords;
190
191 typedef struct Z_IUOriginPartToKeep
192 {
193     int *action;
194 #define Z_IUOriginPartToKeep_recordInsert 1
195 #define Z_IUOriginPartToKeep_recordReplace 2
196 #define Z_IUOriginPartToKeep_recordDelete 3
197 #define Z_IUOriginPartToKeep_elementUpdate 4
198     char *databaseName;
199     Odr_oid *schema; /* OPTIONAL */
200     char *elementSetName; /* OPTIONAL */
201 } Z_IUOriginPartToKeep;
202
203 typedef struct Z_IUTaskPackageRecordStructure
204 {
205     int which;
206 #define Z_IUTaskPackageRecordStructure_record 1
207 #define Z_IUTaskPackageRecordStructure_diagnostic 2
208     union {
209         Odr_external *record;
210         Z_DiagRec *diagnostic;
211     } u; /* OPTIONAL */
212     Z_IUCorrelationInfo *correlationInfo; /* OPTIONAL */
213     int *recordStatus;
214 #define Z_IUTaskPackageRecordStructureS_success 1
215 #define Z_IUTaskPackageRecordStructureS_queued 2
216 #define Z_IUTaskPackageRecordStructureS_inProcess 3
217 #define Z_IUTaskPackageRecordStructureS_failure 4
218 } Z_IUTaskPackageRecordStructure;
219
220 typedef struct Z_IUTargetPart
221 {
222     int *updateStatus;
223 #define Z_IUTargetPart_success 1
224 #define Z_IUTargetPart_partial 2
225 #define Z_IUTargetPart_failure 3
226     int num_globalDiagnostics;
227     Z_DiagRec **globalDiagnostics; /* OPTIONAL */
228     int num_taskPackageRecords;
229     Z_IUTaskPackageRecordStructure **taskPackageRecords;
230 } Z_IUTargetPart;
231
232 typedef struct Z_IUUpdateEsRequest
233 {
234     Z_IUOriginPartToKeep *toKeep;
235     Z_IUSuppliedRecords *notToKeep;
236 } Z_IUUpdateEsRequest;
237
238 typedef struct Z_IUUpdateTaskPackage
239 {
240     Z_IUOriginPartToKeep *originPart;
241     Z_IUTargetPart *targetPart;
242 } Z_IUUpdateTaskPackage;
243
244 typedef struct Z_IUUpdate
245 {
246     int which;
247 #define Z_IUUpdate_esRequest 1
248 #define Z_IUUpdate_taskPackage 2
249     union {
250         Z_IUUpdateEsRequest *esRequest;
251         Z_IUUpdateTaskPackage *taskPackage;
252     } u;
253 } Z_IUUpdate;
254
255 int z_IUUpdate(ODR o, Z_IUUpdate **p, int opt);
256
257 #endif