Microsoft Entra ID (formerly Azure AD) · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Applications Service Principals.synchronization API
57 actions
57 updates
phrasing
extends
openapi/azure-ad-serviceprincipals-synchronization-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Microsoft Entra ID (formerly Azure AD)'s API. It is a proposal applied on top of the contract, not a document Microsoft Entra ID (formerly Azure AD) publishes.
What the actions change
x-apievangelist-phrasing
Targets 57 · first 16 shown; the file carries all of them
$.info
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization'].get
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization'].put
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization'].delete
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs'].get
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs'].post
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}'].get
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}'].delete
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}'].patch
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/bulkUpload'].get
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/bulkUpload'].delete
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/bulkUpload'].patch
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/bulkUpload/$value'].get
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/bulkUpload/$value'].put
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/bulkUpload/$value'].delete
$.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/microsoft.graph.pause'].post
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Applications Service Principals.synchronization API
version: 1.0.0
extends: openapi/azure-ad-serviceprincipals-synchronization-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-10-01'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 56
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization'].get
update:
x-apievangelist-phrasing:
intent: Get an app's provisioning synchronization setup
effect: read
questions:
- What does the overall provisioning synchronization resource look like for one enterprise app?
- Can I see an app's sync jobs, templates and secrets in one read?
instructions:
- text: Show the synchronization resource for service principal {sp}.
slots:
sp: path.servicePrincipal-id
- text: Fetch the whole provisioning sync configuration of app {sp}, expanding {expand}.
slots:
sp: path.servicePrincipal-id
expand: query.$expand
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization'].put
update:
x-apievangelist-phrasing:
intent: Replace an app's whole synchronization resource
effect: write
questions:
- Can I overwrite a service principal's entire synchronization resource in a single PUT?
- Is there a way to set an app's sync jobs, templates and secrets all at once?
instructions:
- text: Replace the entire synchronization resource of service principal {sp} with the jobs {jobs}.
slots:
sp: path.servicePrincipal-id
jobs: requestBody.jobs
- text: Overwrite app {sp}'s synchronization resource, including its templates {templates}.
slots:
sp: path.servicePrincipal-id
templates: requestBody.templates
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization'].delete
update:
x-apievangelist-phrasing:
intent: Remove an app's entire synchronization resource
effect: destructive
questions:
- How do I tear down all provisioning synchronization for an enterprise app?
- Can I delete the whole synchronization resource of a service principal rather than a single job?
instructions:
- text: Delete the entire synchronization resource from service principal {sp}.
slots:
sp: path.servicePrincipal-id
- text: Remove all sync configuration from app {sp} if its ETag still matches {etag}.
slots:
sp: path.servicePrincipal-id
etag: header.If-Match
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs'].get
update:
x-apievangelist-phrasing:
intent: List an app's provisioning sync jobs
effect: read
questions:
- Which provisioning synchronization jobs exist for an enterprise app?
- Can I filter the sync jobs on a service principal by template?
instructions:
- text: List the synchronization jobs on service principal {sp}.
slots:
sp: path.servicePrincipal-id
- text: List app {sp}'s sync jobs matching {filter}.
slots:
sp: path.servicePrincipal-id
filter: query.$filter
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs'].post
update:
x-apievangelist-phrasing:
intent: Create a provisioning sync job for an app
effect: write
questions:
- How do I set up a new user provisioning job for an enterprise app?
- Does a newly created synchronization job start running right away or is it disabled?
instructions:
- text: Create a synchronization job on service principal {sp} from template {templateId}.
slots:
sp: path.servicePrincipal-id
templateId: requestBody.templateId
- text: Add a new provisioning job to app {sp} using template {templateId} with schedule {schedule}.
slots:
sp: path.servicePrincipal-id
templateId: requestBody.templateId
schedule: requestBody.schedule
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}'].get
update:
x-apievangelist-phrasing:
intent: Get one provisioning sync job
effect: read
questions:
- What is the current status and schedule of a specific provisioning job?
- Can I look up a single synchronization job by its ID?
instructions:
- text: Get synchronization job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Show the status and settings of sync job {job} for app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}'].delete
update:
x-apievangelist-phrasing:
intent: Stop and delete a provisioning sync job
effect: destructive
questions:
- What happens to already-synced accounts when I delete a provisioning job?
- How do I permanently remove a sync job and all its state?
instructions:
- text: Delete synchronization job {job} from service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Stop and permanently remove provisioning job {job} on app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}'].patch
update:
x-apievangelist-phrasing:
intent: Update a provisioning sync job's settings
effect: write
questions:
- Can I change the run schedule of an existing provisioning job?
- Is it possible to edit a sync job's settings without recreating it?
instructions:
- text: Change the schedule of sync job {job} on service principal {sp} to {schedule}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
schedule: requestBody.schedule
- text: Update the job settings of provisioning job {job} for app {sp} to {settings}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
settings: requestBody.synchronizationJobSettings
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/bulkUpload'].get
update:
x-apievangelist-phrasing:
intent: Get a sync job's bulk upload operation
effect: read
questions:
- Where can I see the bulk upload operation attached to a provisioning job?
- Does a synchronization job have a bulk upload object I can inspect?
instructions:
- text: Get the bulk upload object for sync job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Show bulk upload metadata of provisioning job {job} in app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/bulkUpload'].delete
update:
x-apievangelist-phrasing:
intent: Delete a sync job's bulk upload object
effect: destructive
questions:
- Can I remove the bulk upload operation from a provisioning job entirely?
- How do I delete the bulk upload navigation object on a sync job?
instructions:
- text: Delete the bulk upload object from sync job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Remove provisioning job {job}'s bulk upload in app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/bulkUpload'].patch
update:
x-apievangelist-phrasing:
intent: Update a sync job's bulk upload object
effect: write
questions:
- Can I patch the bulk upload object tied to a provisioning job?
- Is the bulk upload entity on a sync job editable?
instructions:
- text: Update the bulk upload object of sync job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Patch provisioning job {job}'s bulk upload entity in app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/bulkUpload/$value'].get
update:
x-apievangelist-phrasing:
intent: Download a sync job's bulk upload content
effect: read
questions:
- How do I download the raw bulk upload payload of a provisioning job?
- Can I read back the media content that was bulk uploaded to a sync job?
instructions:
- text: Download the bulk upload content for sync job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Fetch the raw bulk upload file of provisioning job {job} in app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/bulkUpload/$value'].put
update:
x-apievangelist-phrasing:
intent: Upload bulk content to a sync job
effect: write
questions:
- How do I push a bulk upload payload into a provisioning job?
- Can I replace the media content of a sync job's bulk upload?
instructions:
- text: Upload bulk content to sync job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Replace the bulk upload file of provisioning job {job} in app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/bulkUpload/$value'].delete
update:
x-apievangelist-phrasing:
intent: Delete a sync job's bulk upload content
effect: destructive
questions:
- Can I clear just the uploaded bulk file from a provisioning job?
- Is there a way to delete the bulk upload media content without removing the bulk upload object?
instructions:
- text: Delete the bulk upload content from sync job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Clear the uploaded bulk file of provisioning job {job} in app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/microsoft.graph.pause'].post
update:
x-apievangelist-phrasing:
intent: Pause a running provisioning sync job
effect: write
questions:
- How do I temporarily stop a provisioning job without losing its progress?
- If I pause a sync job, will it pick up where it left off later?
instructions:
- text: Pause sync job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Temporarily halt provisioning job {job} for app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/microsoft.graph.provisionOnDemand'].post
update:
x-apievangelist-phrasing:
intent: Provision a user on demand through a sync job
effect: write
questions:
- Can I provision a single user right now instead of waiting for the next sync cycle?
- What is the rate limit for on-demand provisioning?
instructions:
- text: Provision on demand through sync job {job} on service principal {sp} with parameters {parameters}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
parameters: requestBody.parameters
- text: Push the selected user into app {sp} immediately using provisioning job {job}.
slots:
sp: path.servicePrincipal-id
job: path.synchronizationJob-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/microsoft.graph.restart'].post
update:
x-apievangelist-phrasing:
intent: Restart a sync job and reprocess everything
effect: write
questions:
- How do I force a provisioning job to reprocess every object in the directory?
- Can a restart clear the existing synchronization state first?
instructions:
- text: Restart sync job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Restart provisioning job {job} for app {sp} with reset criteria {criteria}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
criteria: requestBody.criteria
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/microsoft.graph.start'].post
update:
x-apievangelist-phrasing:
intent: Start or resume a provisioning sync job
effect: write
questions:
- How do I kick off a provisioning job after creating it?
- Does starting a paused sync job continue from where it stopped?
instructions:
- text: Start sync job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Resume the paused provisioning job {job} in app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/microsoft.graph.validateCredentials'].post
update:
x-apievangelist-phrasing:
intent: Validate credentials for an existing sync job
effect: read
questions:
- How do I confirm an existing provisioning job's credentials are still valid in my tenant?
- Can I test replacement credentials against a sync job that is already set up?
instructions:
- text: Validate the credentials of sync job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Test credentials {credentials} against existing job {job} on service principal {sp}.
slots:
credentials: requestBody.credentials
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema'].get
update:
x-apievangelist-phrasing:
intent: Get a sync job's synchronization schema
effect: read
questions:
- What attribute mappings and rules does a running provisioning job use?
- Can I read the synchronization schema for one specific job?
instructions:
- text: Get the synchronization schema of job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Show the attribute mapping schema used by provisioning job {job} in app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema'].delete
update:
x-apievangelist-phrasing:
intent: Delete a sync job's synchronization schema
effect: destructive
questions:
- Can I delete a provisioning job's customized schema?
- What removes the synchronization schema from one sync job?
instructions:
- text: Delete the synchronization schema from job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Remove provisioning job {job}'s schema in app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema'].patch
update:
x-apievangelist-phrasing:
intent: Replace a sync job's synchronization schema
effect: write
questions:
- How do I change the attribute mappings of a running provisioning job?
- Does updating a job's schema replace it fully or merge changes?
instructions:
- text: Replace the schema of sync job {job} on service principal {sp} with rules {rules}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
rules: requestBody.synchronizationRules
- text: Update provisioning job {job}'s schema in app {sp} with directories {directories}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
directories: requestBody.directories
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema/directories'].get
update:
x-apievangelist-phrasing:
intent: List directories in a sync job's schema
effect: read
questions:
- Which source and target directories are defined in a provisioning job's schema?
- Can I list the directory definitions of one sync job?
instructions:
- text: List the directory definitions in the schema of sync job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Show provisioning job {job}'s schema directories in app {sp} matching {filter}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
filter: query.$filter
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema/directories'].post
update:
x-apievangelist-phrasing:
intent: Add a directory to a sync job's schema
effect: write
questions:
- How do I add a new directory definition to a provisioning job's schema?
- Can I register an extra directory in one sync job's schema?
instructions:
- text: Add directory {name} to the schema of sync job {job} on service principal {sp}.
slots:
name: requestBody.name
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Create a read-only directory definition {name} in provisioning job {job}'s schema for app {sp}.
slots:
name: requestBody.name
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema/directories/{directoryDefinition-id}'].get
update:
x-apievangelist-phrasing:
intent: Get a directory in a sync job's schema
effect: read
questions:
- What objects are defined in one directory of a provisioning job's schema?
- Can I fetch a single directory definition from a sync job?
instructions:
- text: Get directory {directory} from the schema of sync job {job} on service principal {sp}.
slots:
directory: path.directoryDefinition-id
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Show the objects of directory {directory} in provisioning job {job} for app {sp}.
slots:
directory: path.directoryDefinition-id
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema/directories/{directoryDefinition-id}'].delete
update:
x-apievangelist-phrasing:
intent: Remove a directory from a sync job's schema
effect: destructive
questions:
- How do I drop a directory definition from a provisioning job's schema?
- Can I delete one directory out of a sync job's schema?
instructions:
- text: Delete directory {directory} from the schema of sync job {job} on service principal {sp}.
slots:
directory: path.directoryDefinition-id
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Remove directory definition {directory} from provisioning job {job} in app {sp}.
slots:
directory: path.directoryDefinition-id
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema/directories/{directoryDefinition-id}'].patch
update:
x-apievangelist-phrasing:
intent: Update a directory in a sync job's schema
effect: write
questions:
- Can I rename or change the objects of a directory in a provisioning job's schema?
- Is a sync job's directory definition editable after creation?
instructions:
- text: Rename directory {directory} in the schema of sync job {job} on service principal {sp} to {name}.
slots:
directory: path.directoryDefinition-id
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
name: requestBody.name
- text: Update the objects of directory {directory} in provisioning job {job} for app {sp} to {objects}.
slots:
directory: path.directoryDefinition-id
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
objects: requestBody.objects
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema/directories/{directoryDefinition-id}/microsoft.graph.discover'].post
update:
x-apievangelist-phrasing:
intent: Discover the latest schema for a job's directory
effect: write
questions:
- How do I refresh a provisioning job's directory with the target app's latest schema?
- Can I rediscover attributes for one directory in a sync job?
instructions:
- text: Discover the latest schema for directory {directory} of sync job {job} on service principal {sp}.
slots:
directory: path.directoryDefinition-id
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Refresh directory {directory} in provisioning job {job} for app {sp} from the target system.
slots:
directory: path.directoryDefinition-id
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema/directories/$count'].get
update:
x-apievangelist-phrasing:
intent: Count directories in a sync job's schema
effect: read
questions:
- How many directory definitions does a provisioning job's schema contain?
- Can I get just the number of directories in one sync job's schema?
instructions:
- text: Count the schema directories of sync job {job} on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Tell me how many directories in provisioning job {job} for app {sp} match {filter}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
filter: query.$filter
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema/microsoft.graph.filterOperators()'].get
update:
x-apievangelist-phrasing:
intent: List scoping filter operators for a job schema
effect: read
questions:
- Which operators can I use in a provisioning job's scoping filters?
- What comparison operators does a sync job's schema support for scoping?
instructions:
- text: List the scoping filter operators supported by sync job {job}'s schema on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Show available filter operators for provisioning job {job} in app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema/microsoft.graph.functions()'].get
update:
x-apievangelist-phrasing:
intent: List attribute mapping functions for a job schema
effect: read
questions:
- What expression functions can I use in a provisioning job's attribute mappings?
- Which mapping functions does one sync job's schema support?
instructions:
- text: List the attribute mapping functions supported by sync job {job}'s schema on service principal {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Show the expression functions available to provisioning job {job} in app {sp}.
slots:
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/{synchronizationJob-id}/schema/microsoft.graph.parseExpression'].post
update:
x-apievangelist-phrasing:
intent: Parse a mapping expression against a job schema
effect: read
questions:
- Can I test an attribute mapping expression against a running provisioning job before saving it?
- How do I parse an expression into a mapping source using a sync job's schema?
instructions:
- text: Parse expression {expression} using the schema of sync job {job} on service principal {sp}.
slots:
expression: requestBody.expression
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
- text: Evaluate {expression} against test object {testInput} in provisioning job {job} for app {sp}.
slots:
expression: requestBody.expression
testInput: requestBody.testInputObject
job: path.synchronizationJob-id
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/$count'].get
update:
x-apievangelist-phrasing:
intent: Count an app's provisioning sync jobs
effect: read
questions:
- How many provisioning jobs does an enterprise app have?
- Can I get only the total number of sync jobs on a service principal?
instructions:
- text: Count the synchronization jobs on service principal {sp}.
slots:
sp: path.servicePrincipal-id
- text: Tell me how many sync jobs in app {sp} match {filter}.
slots:
sp: path.servicePrincipal-id
filter: query.$filter
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/jobs/microsoft.graph.validateCredentials'].post
update:
x-apievangelist-phrasing:
intent: Test provisioning credentials before creating a job
effect: read
questions:
- Can I verify an enterprise app's provisioning admin credentials before setting up any sync job?
- Is there a way to test target-system credentials against a sync template with no job created yet?
instructions:
- text: Test credentials {credentials} for service principal {sp} before creating a provisioning job.
slots:
credentials: requestBody.credentials
sp: path.servicePrincipal-id
- text: Validate provisioning credentials for enterprise app {sp} using template {template}, no job yet.
slots:
sp: path.servicePrincipal-id
template: requestBody.templateId
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/microsoft.graph.acquireAccessToken'].post
update:
x-apievangelist-phrasing:
intent: Acquire an OAuth token for app provisioning
effect: write
questions:
- How does the provisioning service get an OAuth access token to push users into an app?
- Can I authorize provisioning into an application by acquiring a token from its sync resource?
instructions:
- text: Acquire a provisioning access token for service principal {sp}.
slots:
sp: path.servicePrincipal-id
- text: Get an OAuth token for app {sp}'s synchronization using credentials {credentials}.
slots:
sp: path.servicePrincipal-id
credentials: requestBody.credentials
method: generated
generated: '2026-10-01'
- target: $.paths['/servicePrincipals/{servicePrincipal-id}/synchronization/secrets'].put
update:
x-apievangelist-phrasing:
intent: Store provisioning connection secrets for an app
effect: write
questions:
- Where do I save the admin credentials used to connect provisioning to a target system?
- Can I store a secret token and tenant URL for an app's provisioning?
instructions:
- text: Save synchronization secrets {value} on service principal {sp}.
slots:
value: requestBody.value
sp: path.servicePrincipal-id
- text: Store the provisioning connection credentials {value} for app {sp}.
slots:
value: requestBody.value
sp: path.servicePrincipal-id
method: generated
generated: '2026-10-01'
# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/azure-ad/refs/heads/main/overlays/azure-ad-serviceprincipals-synchronization-api-phrasing-overlay.yaml