<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://schemas.monster.com/Monster/OPM" xmlns:monster="http://schemas.monster.com/Monster" xmlns="http://schemas.monster.com/Monster/OPM" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xsd:import namespace="http://schemas.monster.com/Monster" schemaLocation="http://schemas.monster.com/current/xsd/MonsterFlat.xsd"/>
	<xsd:include schemaLocation="RecruitmentOneStopEnumerations.xsd"/>
	<xsd:element name="JAFolders" type="JAFoldersType">
		<xsd:annotation>
			<xsd:documentation>This node should only be used for FTPS submissions</xsd:documentation>
		</xsd:annotation>
	</xsd:element>
	<xsd:element name="JAFolder" type="JAFolderType"/>
	<xsd:complexType name="JAFoldersType">
		<xsd:annotation>
			<xsd:documentation>This type should only be used for FTPS submissions</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="JAFolder" type="JAFolderType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="JAFolderType">
		<xsd:annotation>
			<xsd:documentation>
				A JAFolder is a wrapper for a JobAnnouncement.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="FolderName" type="String100Type">
				<xsd:annotation>
					<xsd:documentation>
						This is a required entry.
						Generally is the same as JobTitle. On a folder update, this is the only field that can be changed.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="LastActivityDate" type="monster:DateTimeType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>outbound usage only</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ModifiedDate" type="monster:DateTimeType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>outbound usage only</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="JobAnnouncement" type="JobAnnouncement"/>
		</xsd:sequence>
		<xsd:attribute name="folderId" type="xsd:string" use="optional">
			<xsd:annotation>
				<xsd:documentation>
					The ROS-generated value that is the unique identifier for the folder. This is not required inbound - 
					outbound constuct only. Use the folderRefCode for identifying the folder for updates.
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="folderRefCode" type="xsd:string" use="optional"/>
		<xsd:attribute name="folderAction" use="optional">
			<xsd:annotation>
				<xsd:documentation>
						"ignore" should be used for updates, unless you wish to change the FolderName
					</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="add"/>
					<xsd:enumeration value="update"/>
					<xsd:enumeration value="ignore"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="JobAnnouncement">
		<xsd:annotation>
			<xsd:documentation>The Job Announcement Node. This is required.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="AppointmentDuration">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>
							This is a required entry.
							This value will be indexed and part of the job search. 
							If the value corresponds to one of the following selections, the job will be
							cross-posted to the StudentJobs board:
								Seasonal, Summer, Student, Federal Career Intern, 
								Student Temporary Experience, Other Student
						</xsd:definition>
						<xsd:datatype>Text</xsd:datatype>
						<xsd:maxLength value="100"/>
					</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:simpleContent>
						<xsd:extension base="xsd:string">
							<xsd:attribute name="monsterId" type="AppointmentDurationEnum" use="required"/>
						</xsd:extension>
					</xsd:simpleContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="ClosingDate" type="OPMDateType">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:validation>
							Required.
							May no longer use @@ in all fields to indicate never ending Job Announcement.
							Closing Date can be no more than one year after the Opening Date.
						</xsd:validation>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ExpireDate" type="OPMDateType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:validation>
							Optional.
							An outbound ONLY field to indicate the actual date the Job Announcement.
							was pulled from the site. 
						</xsd:validation>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="DutyLocations">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="DutyLocation" maxOccurs="unbounded">
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="Location">
										<xsd:annotation>
											<xsd:documentation>
												<xsd:definition>
													The "locationId" attribute is for internal use only - values 
													submitted for locationId will be ignored.
												</xsd:definition>
												<xsd:datatype>Text</xsd:datatype>
												<xsd:validation>At least one valid Location DutyLocationEnum value is required.</xsd:validation>
											</xsd:documentation>
										</xsd:annotation>
										<xsd:complexType>
											<xsd:simpleContent>
												<xsd:extension base="DutyLocationEnum">
													<xsd:attribute name="locationId" type="xsd:string" use="optional"/>
												</xsd:extension>
											</xsd:simpleContent>
										</xsd:complexType>
									</xsd:element>
									<xsd:element name="Openings">
										<xsd:annotation>
											<xsd:documentation>
												<xsd:validation>
													Required.
													If locationID is "0806" or "0807" (these locationIds correspond to "nationwide" 
													and "worldwide"), then the Openings field must be set to "many" or to an integer 
													greater than or equal to 16.
												</xsd:validation>
												<xsd:maxLength value="5"/>
											</xsd:documentation>
										</xsd:annotation>
										<xsd:simpleType>
											<xsd:restriction base="String5Type">
												<xsd:pattern value="[Mm]any"/>
												<xsd:pattern value="[Ff]ew"/>
												<xsd:pattern value="\p{Nd}+"/>
											</xsd:restriction>
										</xsd:simpleType>
									</xsd:element>
									<xsd:element name="JobCity" type="xsd:string" minOccurs="0">
										<xsd:annotation>
											<xsd:documentation>
												<xsd:definition>
													Optional.
													The locationId will be used in the JobSearch application, but the name of the location
													listed in the job description will be the submitted JobCity. If JobCity is left blank, then 
													default JobCity for the locatioId will be displayed.
												</xsd:definition>
												<xsd:maxLength value="120"/>
											</xsd:documentation>
										</xsd:annotation>
									</xsd:element>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element ref="monster:FolderReference" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>Relate job to Folder that it is in. This element is for outbound usage only.</xsd:definition>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="JobInformation" type="JobInformationType"/>
			<xsd:element name="OccupationCode" maxOccurs="5">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>Required</xsd:definition>
					</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:simpleContent>
						<xsd:extension base="OccupationCodeType">
							<xsd:attribute name="monsterId" type="xsd:string"/>
						</xsd:extension>
					</xsd:simpleContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="OccupationCodeGroupID" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:validation>This field is for Internal use only.</xsd:validation>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="OpeningDate" type="OPMDateType">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:validation>Required</xsd:validation>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="PayGradeHi" type="String5Type" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>OPM's maximum pay grade for a given posting</xsd:definition>
						<xsd:validation>
						Optional.
						PayGradeHi must be an integer between 0 and 99.
						If PayPlan starts with the letter "G" then PayGradeHi must be an integer between 1 and 15.
						If PayPlan is "GM" then PayGradeHi must be an integer between 13 and 15.
						</xsd:validation>
						<xsd:maxLength value="5"/>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="PayGradeLo" type="String5Type">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>OPM's minimum pay grade for a given posting</xsd:definition>
						<xsd:validation>
						Required.
						PayGradeLo must always be less than or equal to PayGradeHi.
						</xsd:validation>
						<xsd:maxLength value="5"/>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="PayPlan">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>Government Pay Plan Code</xsd:definition>
						<xsd:validation>
							Required.
						</xsd:validation>
						<xsd:maxLength value="2"/>
						<xsd:minLength value="2"/>
					</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:simpleContent>
						<xsd:extension base="xsd:string">
							<xsd:attribute name="monsterId" type="PayPlanEnum" use="required"/>
						</xsd:extension>
					</xsd:simpleContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="PromotionPotential" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>
							Optional. Potential future OPM pay grade. This value is required to be greater than or 
							equal to the PayGradeHi and PayGradeLo values.
						</xsd:definition>
						<xsd:maxLength value="5"/>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="JobAnnouncementNumber" type="String27Type">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>
							Required.
							Agency's unique id for this Job. Monster will perform no validation on this field.
							It is the Agency's responsibility to ensure uniqueness.
						</xsd:definition>
						<xsd:datatype>Text</xsd:datatype>
						<xsd:datalength>27</xsd:datalength>
						<xsd:validation>Required</xsd:validation>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="WhoMayApply">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>
							Required.
							This data is used to inform job seekers who is being considered for this job.
						</xsd:definition>
						<xsd:validation>Required</xsd:validation>
					</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="SearchCriteria">
							<xsd:annotation>
								<xsd:documentation>
									<xsd:definition>
										Required.
										The monsterId is required and will be used in the JobSearch application
										to enable seekers to target there job search results.
									</xsd:definition>
									<xsd:validation>Required</xsd:validation>
								</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:simpleContent>
									<xsd:extension base="xsd:string">
										<xsd:attribute name="monsterId" type="WhoMayApplyEnum" use="required"/>
									</xsd:extension>
								</xsd:simpleContent>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="StatusCode" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>
									<xsd:definition>
										This field is for internal use only. Any value submitted by a recruiter will be ignored.
									</xsd:definition>
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="JobModifiedDate" type="OPMDateType">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:validation>Required</xsd:validation>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="jobRefCode" type="String6Type" use="optional">
			<xsd:annotation>
				<xsd:documentation>
					<xsd:definition>
						jobRefCode is required when "jobAction" is "update". It is optional when "jobAction" is set to "add".
						Unique id for the job and recruiter. This attribute is required when updating an existing job.
					</xsd:definition>
					<xsd:datatype>Text</xsd:datatype>
					<xsd:datalength>6</xsd:datalength>
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="jobAction" use="optional">
			<xsd:annotation>
				<xsd:documentation>
					<xsd:definition>jobRefCode is a required element when jobAction is set to "update".</xsd:definition>
				</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="add"/>
					<xsd:enumeration value="update"/>
					<xsd:enumeration value="addOrUpdate"/>
					<xsd:enumeration value="ignore"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="JobInformationType">
		<xsd:sequence>
			<xsd:element name="JobTitle" type="String100Type">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>
							Required.
							The title of the Job
						</xsd:definition>
						<xsd:datatype>Text</xsd:datatype>
						<xsd:datalength>100</xsd:datalength>
						<xsd:validation>Required</xsd:validation>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="JobStatus">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>Required. The status of job such as full-time, part-time</xsd:definition>
						<xsd:validation>Required</xsd:validation>
					</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:simpleContent>
						<xsd:extension base="xsd:string">
							<xsd:attribute name="monsterId" type="OPMJobStatusEnumStr" use="required"/>
						</xsd:extension>
					</xsd:simpleContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Salary" type="monster:SalaryType">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:validation>
						Salary is required.
						Minimum Salary, Maximum Salary, Currecy, and Pay Frequqency are required entries.
						The salary paid for the Job. Can be min/max, range, or currency per time period.
						Salary must be 0 for voluteer jobs.
						Annual salaries must be less than or equal to $500,000.
						There are a series of maximum salaries values depending on the pay period.
							For hourly pay, salary must be less than or equal to $1,000.
							For weekly pay, salary must be less than or equal to $10,000.
							For biweekly pay, salary must be less than or equal to $20,000.
							For monthly pay, salary must be less than or equal to $50,000.
						The maximum salary field must be greater than or equal to the minimum salary field.
						</xsd:validation>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Contact" type="OPMContactType">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>
							Required.
							Contact information for the job posting
						</xsd:definition>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="AgencyInformation">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:validation>
							Required.
							The monsterId is a required submission. 
							CPDFcode and AgencyName-string submissions will be ignored.
						</xsd:validation>
					</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="AgencyName">
							<xsd:annotation>
								<xsd:documentation>
									The monsterId attribute is required. The Agency Name Text is for outbound use only.
								</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:simpleContent>
									<xsd:extension base="xsd:string">
										<xsd:attribute name="monsterId" type="AgencyInformationEnum" use="required"/>
									</xsd:extension>
								</xsd:simpleContent>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="CPDFcode" type="xsd:string" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>
									The CPDF Code is for outbound use only. Inbound value, if set,  will be ignored.
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="SubAgencyName" type="String100Type" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>
									<xsd:definition>Optional name of group within agency.</xsd:definition>
									<xsd:dataType>Text</xsd:dataType>
									<xsd:datalength>100</xsd:datalength>
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="OPMContactType">
		<xsd:sequence>
			<xsd:element name="Name" type="String100Type">
				<xsd:annotation>
					<xsd:documentation>
						Required.
						<xsd:datatype>Text</xsd:datatype>
						<xsd:datalength>100</xsd:datalength>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="AgencyName" type="String100Type">
				<xsd:annotation>
					<xsd:documentation>Required.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Address">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:definition>
							The address information within the contact.
						</xsd:definition>
						<xsd:validation>Required</xsd:validation>
					</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="StreetAddress" type="String100Type">
							<xsd:annotation>
								<xsd:documentation>
									<datatype>Text</datatype>
									<datalength>100</datalength>
									<validation>Required</validation>
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="StreetAddress2" type="String100Type" nillable="true" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>
									<datatype>Text</datatype>
									<datalength>100</datalength>
									<validation>Optional</validation>
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="City" type="String50Type">
							<xsd:annotation>
								<xsd:documentation>
									<datatype>Text</datatype>
									<datalength>50</datalength>
									<validation>Required</validation>
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="State" type="String50Type">
							<xsd:annotation>
								<xsd:documentation>
									<datatype>Text</datatype>
									<datalength>50</datalength>
									<validation>Required</validation>
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="CountryCode" type="String50Type" nillable="true" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>
									<datatype>Text</datatype>
									<datalength>50</datalength>
									<validation>Optional</validation>
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="PostalCode" type="String20Type">
							<xsd:annotation>
								<xsd:documentation>
									<datatype>Text</datatype>
									<datalength>20</datalength>
									<validation>Required</validation>
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Phones" minOccurs="1" maxOccurs="1">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Phone" type="PhoneType" minOccurs="1" maxOccurs="3">
							<xsd:annotation>
								<xsd:documentation>
									<xsd:validation>
										Contact Phone number is a required entry.
										Fax phone number is optional.
										TDD Telephone Number is optional.
									</xsd:validation>
									<xsd:maxLength value="25"/>
								</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="E-mail" type="String100Type" nillable="true" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
						<xsd:datatype>Text</xsd:datatype>
						<xsd:datalength>100</xsd:datalength>
						<validation>Optional</validation>
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>						
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="OPMDateType">
		<xsd:sequence>
			<xsd:element name="Day" type="xsd:string" minOccurs="0"/>
			<xsd:element name="Month" type="xsd:string" minOccurs="0"/>
			<xsd:element name="Year" type="xsd:string" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="StringNonEmpty">
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="String5Type">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="5"/>
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="String6Type">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="6"/>
			<xsd:minLength value="6"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="String20Type">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="20"/>
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="String27Type">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="27"/>
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="String50Type">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="50"/>
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="String75Type">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="75"/>
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="String100Type">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="100"/>
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="String255Type">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="255"/>
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="String350MinimumType">
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="350"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="String500Type">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="500"/>
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="String5000Type">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="5000"/>
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>
</xsd:schema>
