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.
View Overlay File View on GitHub Overlay Specification

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

Raw ↑
# 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