I am using this to extract metadata when I realized the sap prefixed attributes are not coming through accurately.
Pyodata version: 1.7.0
XML metadata from API for Entity Type JobApplicationSnapshot_FuncExperience
Api call: https://api4.successfactors.com/odata/v2/JobApplicationSnapshot_FuncExperience/$metadata
<?xml version="1.0" encoding="utf-8"?>
<edmx:EdmxVersion="1.0"xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx"xmlns:atom="http://www.w3.org/2005/Atom">
<edmx:DataServicesm:DataServiceVersion="2.0"xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<SchemaNamespace="SFODataSet"xmlns="http://schemas.microsoft.com/ado/2008/09/edm"xmlns:sf="http://www.successfactors.com/edm/sf"xmlns:sap="http://www.successfactors.com/edm/sap">
<EntityContainerName="EntityContainer"m:IsDefaultEntityContainer="true">
<EntitySetName="JobApplicationSnapshot_FuncExperience"EntityType="SFOData.JobApplicationSnapshot_FuncExperience"sap:label="JobApplicationSnapshot_FuncExperience"sap:creatable="false"sap:updatable="false"sap:upsertable="false"sap:deletable="false">
<Documentation>
<Summary>Candidate Background</Summary>
<LongDescription>These entities represent the background elements as defined in the candidate template. For example:CandidateBackground_Certificate, CandidateBackground_Education, etc</LongDescription>
<sap:tagcollection>
<sap:tag>Recruiting (RCM)</sap:tag>
<sap:tag>RCM - Candidate</sap:tag>
</sap:tagcollection>
</Documentation>
</EntitySet>
</EntityContainer>
</Schema>
<SchemaNamespace="SFOData"xmlns="http://schemas.microsoft.com/ado/2008/09/edm"xmlns:sf="http://www.successfactors.com/edm/sf"xmlns:sap="http://www.successfactors.com/edm/sap">
<EntityTypeName="JobApplicationSnapshot_FuncExperience">
<Key>
<PropertyRefName="backgroundElementId"></PropertyRef>
</Key>
<PropertyName="applicationId"Type="Edm.Int64"Nullable="false"sap:required="false"sap:creatable="false"sap:updatable="false"sap:upsertable="false"sap:visible="true"sap:sortable="false"sap:filterable="true"sap:label="Application Id"></Property>
<PropertyName="backgroundElementId"Type="Edm.Int64"Nullable="false"sap:required="false"sap:creatable="false"sap:updatable="false"sap:upsertable="false"sap:visible="true"sap:sortable="false"sap:filterable="true"sap:label="Background Element Id"></Property>
<PropertyName="bgOrderPos"Type="Edm.Int64"Nullable="false"sap:required="false"sap:creatable="false"sap:updatable="false"sap:upsertable="false"sap:visible="true"sap:sortable="true"sap:filterable="false"sap:label="Background Order Position"></Property>
<PropertyName="function1"Type="Edm.String"Nullable="false"sap:required="true"sap:creatable="false"sap:updatable="false"sap:upsertable="false"sap:visible="true"sap:sortable="false"sap:filterable="false"sap:picklist="func_exp"sap:label="Experience Type"></Property>
<PropertyName="lastModifiedDateTime"Type="Edm.DateTimeOffset"Nullable="false"sap:required="false"sap:creatable="false"sap:updatable="false"sap:upsertable="false"sap:visible="true"sap:sortable="false"sap:filterable="true"sap:label="Last Modified Date"></Property>
<PropertyName="startDate"Type="Edm.DateTime"Nullable="true"sap:required="false"sap:creatable="false"sap:updatable="false"sap:upsertable="false"sap:visible="true"sap:sortable="false"sap:filterable="false"sap:display-format="Date"sap:label="As of Date"></Property>
<PropertyName="yearsExp"Type="Edm.Double"Nullable="true"sap:required="false"sap:creatable="false"sap:updatable="false"sap:upsertable="false"sap:visible="true"sap:sortable="false"sap:filterable="false"sap:label="Years of Experience (Number)"></Property>
</EntityType>
</Schema>
</edmx:DataServices>
</edmx:Edmx>
Here's the code to reproduce the error for above entity:
In [29]: importrequests, pyodataIn [30]: session=requests.Session()
In [31]: session.auth= ("username", "password")
In [32]: SERVICE_URL="https://api4.successfactors.com/odata/v2"In [33]: service=pyodata.Client(SERVICE_URL, session)
In [34]: p=service.schema.entity_type("JobApplicationSnapshot_FuncExperience").proprty("applicationId")
In [35]: print(f"label={p.label}, updatable={p.updatable}, creatable={p.creatable}, visible={p.visible}, sortable={p.sortable}, filterable={p.filterable}")
label=None, updatable=True, creatable=True, visible=True, sortable=True, filterable=TrueExpected Output:
label=Application Id, updatable=False, creatable=False, visible=True, sortable=False, filterable=True
After digging into the code, I believe the issue is here. The uri for prefix sap that I see in the raw XML data (as shown above) is http://www.successfactors.com/edm/sap.
Apologies if I am missing something obvious here. I am still fairly new to XML and successfactors api.
I am using this to extract metadata when I realized the
sapprefixed attributes are not coming through accurately.Pyodata version: 1.7.0
XML metadata from API for Entity Type
JobApplicationSnapshot_FuncExperienceApi call: https://api4.successfactors.com/odata/v2/JobApplicationSnapshot_FuncExperience/$metadata
Here's the code to reproduce the error for above entity:
Expected Output:
After digging into the code, I believe the issue is here. The uri for prefix
sapthat I see in the raw XML data (as shown above) ishttp://www.successfactors.com/edm/sap.Apologies if I am missing something obvious here. I am still fairly new to XML and successfactors api.