Crear nuevas API

Completado

Para crear una nueva API en Business Central, puede crear un objeto Página o Consulta. En función del tipo de objeto, establezca la propiedad PageType o QueryType en API. Con los servicios web OData normales, puede publicar una página o consulta existentes como un servicio web. La consecuencia es que todos los campos definidos en la página de la tarjeta están disponibles en el servicio web. Si necesita un campo que no formaba parte de la página existente, debe agregarlo a la página, pero dicho campo también está disponible para todos los usuarios de la aplicación Business Central.

Con API, puede crear páginas independientes que no se pueden solicitar en la aplicación cliente y solo se pueden usar en llamadas API. No necesita publicar una página de la API como lo hace con los servicios web OData normales; solo necesita crear una página de la API que forme parte de la extensión. Implemente la extensión, y la página de la API estará disponible.

Para crear una página de la API, use el fragmento tpage y luego establezca la propiedad PageType en API. Al cambiar PageType a API, establezca también algunas de las siguientes propiedades:

  • APIVersion: la versión de la API. Puede crear varias versiones de la mismas API. Cada versión es un objeto independiente, con su propio número de objeto. Sin embargo, puede admitir varias versiones al mismo tiempo. De esa manera, otros servicios que dependen del servicio de la API no tienen que modificarse directamente cuando el servicio agrega un nuevo campo o modifica la estructura de la API. La versión puede tener el valor beta o v1.0, v1.1, v1.2, v2.0, etc. Debe mencionar explícitamente la letra v. Solo puede especificar una versión principal o secundaria, no un número de versión de compilación. Por ejemplo, v1.1.3 no es un valor válido.

  • APIPublisher: el nombre de la empresa que ha creado las API. Este valor se usa en la URL para conectarse a la API y también para agrupar todas las API del mismo editor.

  • APIGroup: un grupo que se usa para agrupar lógicamente varias API. Este valor también se usa en la URL para conectarse a la API.

  • EntityName: el valor singular de la entidad que la API devuelve (Cliente, Artículo, Automóvil, Proveedor, Artista, Película, etc.).

  • EntitySetName: este parámetro es el valor plural de la entidad que devuelve la API (Clientes, Artículos, Automóviles, Proveedores, Artistas, Películas, etc.).

  • DelayedInsert: este valor debe siempre establecerse en true en las páginas de la API. Esta configuración garantiza que los valores solo se inserten en la base de datos cuando todos los valores se aprovisionan desde la solicitud de la API.

  • ODataKeyFields: esta propiedad indica el campo que se usará como clave. Al solicitar un determinado registro, puede establecer esta propiedad para indicar el campo que desea usar para buscar dicho registro. Microsoft crea un campo SystemId, que está disponible en cada tabla, incluso en sus propias tablas, sin la necesidad de tener que crearlo usted mismo. El campo SystemId identificará de forma exclusiva un registro y nunca cambiará con el paso del tiempo, incluso si actualiza la clave principal. Le recomendamos que use el campo SystemId como ODataKeyFields.

En el siguiente ejemplo de código se muestra la estructura de una página de la API personalizada que usa la tabla Cliente.

page 50115 "My Custom Customer API"

{
    PageType = API;
    APIVersion = 'v1.0';
    APIPublisher = 'mycompany';
    APIGroup = 'sales';
    EntityName = 'mycustomer';
    EntitySetName = 'mycustomers';
    DelayedInsert = true;
    SourceTable = Customer;
    ODataKeyFields = SystemId;

    layout
    {
        area(Content)
        {
            repeater(GroupName)
            {
                field(id;SystemId)
                {
                    ApplicationArea = All;
                }
                field(name;Name)
                {
                    ApplicationArea = All;
                }
                field(email;"E-Mail")
                {
                    ApplicationArea = All;
                }
            }
        }
    }
}

Los nombres de todos los campos deben crearse con grafía Camel (camelCase) y no pueden incluir caracteres especiales.

La URL de esta API se basa en las propiedades APIPublisher, APIVersion, APIGroup y EntitySetName.

Base URL: https://api.businesscentral.dynamics.com/v2.0/<tenant>/<environment>

/api/<apipublisher>/<apigroup>/<apiversion>/<entitysetname>

En este ejemplo dicho URI se parecería a lo siguiente.

/api/mycompany/sales/v1.0/mycustomers