Crear schemaExtensions

Espacio de nombres: microsoft.graph

Importante

Las API de la versión /beta de Microsoft Graph están sujetas a cambios. No se admite el uso de estas API en aplicaciones de producción. Para determinar si una API está disponible en la versión 1.0, use el selector de Versión.

Cree una nueva definición de schemaExtension y su propiedad de extensión de esquema asociada para ampliar un tipo de recurso auxiliar.

Las extensiones de esquema permiten agregar datos personalizados fuertemente tipados a un recurso. La aplicación que crea una extensión de esquema es la aplicación propietaria. Según el estado de la extensión, la aplicación propietaria y solo la aplicación propietaria pueden actualizar o eliminar la extensión.

Vea ejemplos de cómo definir una extensión de esquema que describe un curso de aprendizaje, utilice la definición de la extensión de esquema para crear un nuevo grupo con los datos del curso de aprendizaje, y agregue datos del curso de aprendizaje a un grupo existente.

Esta API está disponible en las siguientes implementaciones en la nube nacional.

Servicio global Administración pública de EE. UU. Gobierno de EE. UU. L5 (DOD) China operado por 21Vianet
✅ ✅ ✅ ✅

Permissions

Elija el permiso o los permisos marcados como con privilegios mínimos para esta API. Use uno o varios permisos con privilegios más altos solo si la aplicación lo requiere. Para obtener más información sobre los permisos delegados y de aplicación, consulte Tipos de permisos. Para obtener más información sobre estos permisos, consulte la referencia de permisos.

Tipo de permiso Permisos con privilegios mínimos Permisos con privilegios más altos
Delegado (cuenta profesional o educativa) Application.ReadWrite.All No disponible.
Delegado (cuenta personal de Microsoft) No admitida. No admitida.
Aplicación Application.ReadWrite.All and Directory.ReadWrite.All No disponible.

Nota:

De manera adicional para el flujo delegado, el usuario que ha iniciado sesión debe ser el propietario de la aplicación que llama O el propietario de la (aplicación con el) appId usada para establecer la propiedad del propietario.

Solicitud HTTP

POST /schemaExtensions

Encabezados de solicitud

Nombre Descripción
Authorization {token} de portador. Obligatorio. Obtenga más información sobre autenticación y autorización.
Content-Type application/json

Cuerpo de la solicitud

En el cuerpo de la solicitud, proporcione una representación JSON de un objeto schemaExtension.

En la tabla siguiente se muestran las propiedades que están disponibles al crear una extensión de esquema.

Parámetro Tipo Descripción
description Cadena Opcional. Descripción de la extensión de esquema.
id Cadena Obligatorio. Identificador único para la definición de la extensión de esquema.
Puede asignar un valor de dos maneras:
  • Concatene el nombre de uno de los dominios comprobados con un nombre para la extensión de esquema para formar una cadena única en este formato, {domainName}_{schemaName}. Por ejemplo: contoso_mySchema. NOTA: Solo se admiten los dominios comprobados bajo los siguientes dominios de primer nivel: .com, .net, .gov, .edu o .org.
  • Proporcione un nombre de esquema y deje que Microsoft Graph lo use para completar la asignación de identificador en este formato: ext{8-random-alphanumeric-chars}_{schema-name}. Un ejemplo sería extkvbmkofy_mySchema.
Una vez creada, esta propiedad no se puede modificar.
owner Cadena Condicional. El appId de la aplicación que es el propietario de la extensión del esquema. Esta propiedad se puede proporcionar en la creación, para establecer el propietario. Si no se proporciona, entonces la aplicación de llamada appId se establecerá como la propietaria. Así, por ejemplo, si crea una nueva definición de extensión de esquema mediante el Probador de gráfico, debe proporcionar la propiedad owner. Una vez establecida, esta propiedad es de solo lectura y no se puede cambiar.
properties Colección extensionSchemaProperty Obligatorio. La colección de tipos y nombres de propiedad que conforman la definición de la extensión de esquema.
targetTypes Colección de cadenas Obligatorio. Conjunto de tipos de recursos de Microsoft Graph (compatibles con extensiones de esquema) a los que se puede aplicar la definición de extensión de esquema.

Respuesta

Si se ejecuta correctamente, este método devuelve un código de respuesta 201 Created y el objeto schemaExtensions en el cuerpo de la respuesta.

Ejemplo

Ejemplo 1: Crear una extensión de esquema con un dominio comprobado

Solicitud

En el ejemplo siguiente se muestra el uso de un nombre de dominio comprobado, graphlearn, y un nombre de esquema, courses, para formar una cadena única para la propiedad id de la definición de extensión de esquema. La cadena única se basa en este formato, {domainName}_{schemaName}. Con la exclusión del propietario del cuerpo de la solicitud, Microsoft Graph espera que el autor de la llamada sea el propietario de la aplicación que realiza esta solicitud.

En el cuerpo de la solicitud, proporcione la representación JSON del objeto schemaExtension.

POST https://graph.microsoft.com/beta/schemaExtensions
Content-type: application/json

{
    "id":"graphlearn_courses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "Group"
    ],
    "properties": [
        {
            "name": "courseId",
            "type": "Integer"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}

Respuesta

En el ejemplo siguiente se muestra la respuesta.

Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.

HTTP/1.1 201 Created
Content-type: application/json

{
    "id": "graphlearn_courses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "Group"
    ],
    "status": "InDevelopment",
    "owner": "24d3b144-21ae-4080-943f-7067b395b913",
    "properties": [
        {
            "name": "courseId",
            "type": "String"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}

Ejemplo 2: Crear una extensión de esquema solo con un nombre

Solicitud

En el ejemplo siguiente se muestra la especificación de solo un nombre de esquema, courses, en la propiedad id de la solicitud, junto con la representación JSON del resto de las propiedades del objeto schemaExtension . Microsoft Graph asignará y devolverá un valor de cadena único en la respuesta. Con la exclusión del propietario del cuerpo de la solicitud, Microsoft Graph espera que el autor de la llamada sea el propietario de la aplicación que realiza esta solicitud.

POST https://graph.microsoft.com/beta/schemaExtensions
Content-type: application/json

{
    "id":"courses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "Group"
    ],
    "properties": [
        {
            "name": "courseId",
            "type": "Integer"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}

Respuesta

La respuesta incluye una cadena única en la propiedad id que se basa en el nombre del esquema proporcionado en la solicitud, junto con el resto de la definición de esquema recién creada. El valor de id en la respuesta se basa en el formato, ext{8-random-alphanumeric-chars}_{schema-name}.

Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.

HTTP/1.1 201 Created
Content-type: application/json

{
    "id": "extk9eruy7c_courses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "Group"
    ],
    "status": "InDevelopment",
    "owner": "24d3b144-21ae-4080-943f-7067b395b913",
    "properties": [
        {
            "name": "courseId",
            "type": "String"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}

Ejemplo 3: Crear una extensión de esquema estableciendo el propietario

Solicitud

El siguiente ejemplo muestra cómo crear una configuración de extensión de esquema estableciendo al owner. En este escenario, es posible que el usuario de la aplicación no sea el propietario de la aplicación (por ejemplo, si usa el explorador de Microsoft Graph). En este caso, debe establecer la propiedad owner en el appId de una aplicación de su propiedad. Si no lo hace, no estará autorizado para crear una extensión de esquema. Establecer la propiedad owner en la solicitud, junto con la representación JSON del resto de las propiedades del objeto schemaExtension.

POST https://graph.microsoft.com/beta/schemaExtensions
Content-type: application/json

{
    "id":"courses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "Group"
    ],
    "owner": "50897f70-a455-4adf-87bc-4cf17091d5ac",
    "properties": [
        {
            "name": "courseId",
            "type": "Integer"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}

Respuesta

La respuesta incluye al owner configurado al valor suministrado en la solicitud.

Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.

HTTP/1.1 201 Created
Content-type: application/json

{
    "id": "extk9eruy7c_courses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "Group"
    ],
    "status": "InDevelopment",
    "owner": "50897f70-a455-4adf-87bc-4cf17091d5ac",
    "properties": [
        {
            "name": "courseId",
            "type": "String"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}