Source plugin for pulling data into Gatsby from a Personio XML feed.
npm install --save gatsby-source-personio-xml
or
yarn add gatsby-source-personio-xml
In gatsby-config.js
:
module.exports = {
plugins: [
{
resolve: `gatsby-source-personio-xml`,
options: {
url: `https://{username}.jobs.personio.de/xml`,
},
},
],
};
You may access the following data node types:
Node | Description |
---|---|
PersonioPosition |
The job postings |
PersonioDepartment |
The departments from department field in the XML |
PersonioOffice |
The offices from office field in the XML |
The field names follow the scheme in the Personio XML feed.
To retrieve a list of all departments with their job postings the following GraphQL query should work:
allPersonioDepartment {
edges {
node {
id
name
positions {
id
positionId
recruitingCategory
office {
id
name
}
employmentType
schedule
seniority
subcompany
yearsOfExperience
name
jobDescriptions {
name
value
}
}
}
}
}
Personio allows you to define custom fields which are not mapped automatically. For these occasions you can customize the XML parsing and GraphQL mapping via the following configuration options:
module.exports = {
plugins: [
{
resolve: `gatsby-source-personio-xml`,
options: {
url: `https://{username}.jobs.personio.de/xml`,
cusomizeXmlMapping: (newNode, xmlNode) => {
const createdAt = select("string(createdAt)", xmlNode)
return { ...newNode, createdAt, keywords }
},
customizeNodeMapping: (gatsbyNode, originalMappedItem) => {
return {
...gatsbyNode,
createdAt: originalMappedItem.createdAt,
}
},
},
},
],
};
In addition you will want to define your own Graphql Schema Mapping in your own gatsby-node.js
:
exports.createSchemaCustomization = ({ actions }) => {
const { createTypes } = actions
createTypes(`
type PersonioPosition implements Node {
createdAt: Date
}
`)