7. Create a tenant profile
Reconstructed — official use case Create a tenant profile + PDF “Création propriétaire et locataire”.
Two distinct mutations:
| Type | Mutation | Input |
|---|---|---|
| Natural person | createPersonalProfile | PersonalProfileInput |
| Legal entity | createMoralProfile | MoralProfileInput |
Documents
As of today, document upload is not supported via the GraphQL API — do it in the admin UI.
Natural person
- GraphQL
- Node.js
- curl
mutation createPersonalProfile($personalProfile: PersonalProfileInput!) {
createPersonalProfile(personalProfile: $personalProfile) {
id
reference
contact {
civility
firstName
lastName
email
mobilePhone
}
maritalStatus
nationality
}
}
{
"personalProfile": {
"externalId": "TENANT-EXT-001",
"customReference": "L-001",
"maritalStatus": "single",
"nationality": "french",
"contact": {
"civility": "mr",
"firstName": "Jean",
"lastName": "Dupont",
"email": "[email protected]",
"mobilePhone": "+33611111111"
}
}
}
const { createPersonalProfile } = await ublo(
`mutation createPersonalProfile($personalProfile: PersonalProfileInput!) {
createPersonalProfile(personalProfile: $personalProfile) {
id
reference
contact { firstName lastName email }
}
}`,
{
personalProfile: {
externalId: 'TENANT-EXT-001',
contact: {
civility: 'mr',
firstName: 'Jean',
lastName: 'Dupont',
email: '[email protected]',
mobilePhone: '+33611111111',
},
},
},
);
console.log(createPersonalProfile.id);
- Bearer
- Cookie session
curl -sS -X POST "$UBLO_GRAPHQL_URL" \
-H "Authorization: Bearer $UBLO_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"query": "mutation ($personalProfile: PersonalProfileInput!) { createPersonalProfile(personalProfile: $personalProfile) { id reference } }",
"variables": {
"personalProfile": {
"externalId": "TENANT-EXT-001",
"contact": {
"civility": "mr",
"firstName": "Jean",
"lastName": "Dupont",
"email": "[email protected]",
"mobilePhone": "+33611111111"
}
}
}
}'
curl -sS -X POST "$UBLO_GRAPHQL_URL" \
-H 'Content-Type: application/json' \
-b cookies.txt \
-d '{
"query": "mutation ($personalProfile: PersonalProfileInput!) { createPersonalProfile(personalProfile: $personalProfile) { id reference } }",
"variables": {
"personalProfile": {
"externalId": "TENANT-EXT-001",
"contact": {
"civility": "mr",
"firstName": "Jean",
"lastName": "Dupont",
"email": "[email protected]",
"mobilePhone": "+33611111111"
}
}
}
}'
Useful enums: ContactInput, MaritalStatusType, NationalityType.
Legal entity
mutation createMoralProfile($moralProfile: MoralProfileInput!) {
createMoralProfile(moralProfile: $moralProfile) {
id
name
reference
siren
siret
address { street zip city country }
}
}
{
"moralProfile": {
"name": "Example SCI",
"externalId": "TENANT-SCI-001",
"siren": "123456789",
"siret": "12345678900012",
"nafOrApe": "6820A",
"tva": "FR12123456789",
"address": {
"street": "Avenue de la République",
"zip": "75011",
"city": "Paris",
"country": "FR"
}
}
}
name is required (String!).
Next
The profile can then be attached to a rental folder (personalProfileId / moralProfileId) → Create a rental folder.