@developer-platform/entities

Entity types for the Developer Platform


Keywords
developer-platform, microsoft, platform-engineering
License
MIT
Install
npm install @developer-platform/entities@0.5.72

Documentation

Developer Platform

developer-platform

Important

This project is currently in the incubation phase, and as such, it's important to note that aspects of the project are still under active development. We will do our best to conduct all development openly by documenting features and requirements.

This repository contains the source code of the Developer Platform API as well as common components and packages that can be used to build providers and clients.

Developer Self-service Foundation

The Developer Platform API serves as the single point of contact for user experiences. It is the Developer Platform's contract with other systems. The API is deployed to Azure and calls the providers.

Terms

API (or Platform API)

Platform API consists of a REST API and an orchestrator that coordinate with Providers to expose data and "self-service" functionality to developers. It serves as the single point of contact for user experiences, and provides a contract for extendability through providers and clients.

Provider

Providers extend the Platform with data and functionality. They can enable developers to do things like create cloud infrastructure and pre-configured repositories, or add flexibility and reduce friction in your processes through automation. Providers are individual services that expose an API that conforms to a specific interface. They are then "registered" with the platform and the platform invokes them on behalf of the user.

Note

The provider interface is still a work in progress. While the basics are in place, the details may change, e.g. the shape of the API, etc.

Many providers are thin proxies that call out to an existing product or service. You can build your own Providers or leverage others from open source. Below are a few (some in progress) providers. You can explore their source code and the samples in this repository to understand how providers work.

Repo Description
developer-platform-github The GitHub provider(s) developer-platform-github
developer-platform-devcenter The Dev Center Azure Deployment Environments provider developer-platform-devcenter

Client

Developers interact with the platform through clients. Below are a few clients you can use or explore their source for examples of how to consume the API.

Repo Description
developer-platform-vscode Developer Platform VS Code extension (not started) developer-platform-vscode
developer-platform-vscode-chat Developer Platform GitHub CoPilot chat agent for VS Code developer-platform-vscode-chat
developer-platform-website React website imitating a company's portal (for testing) developer-platform-website

Entity

All data objects in the Platform extend from a base Entity type. For example, a Template is an Entity of kind: Template, an API is represented by an Entity of kind: API. The model and format for entities take a lot from Backstage's descriptor format, which is based on kubernetes object format.

Template

Templates are a special type of entity that enables providers to expose self-service functionality to developers.

How to deploy

TODO: see the deploy folder

Packages

npm

Package
@developer-platform/entities @developer-platform/entities

NuGet

Package
Microsoft.Developer.Abstractions Microsoft.Developer.Abstractions
Microsoft.Developer.Azure Microsoft.Developer.Azure
Microsoft.Developer.Data.Cosmos Microsoft.Developer.Data.Cosmos
Microsoft.Developer.DurableTasks Microsoft.Developer.DurableTasks
Microsoft.Developer.Entities Microsoft.Developer.Entities
Microsoft.Developer.Hosting.AspNetCore Microsoft.Developer.Hosting.AspNetCore
Microsoft.Developer.Hosting.Functions Microsoft.Developer.Hosting.Functions
Microsoft.Developer.Hosting Microsoft.Developer.Hosting
Microsoft.Developer.MSGraph Microsoft.Developer.MSGraph
Microsoft.Developer.Providers Microsoft.Developer.Providers
Microsoft.Developer.Serialization.Json Microsoft.Developer.Serialization.Json

nuget.config

These nuget packages are currently hosted in a private feed. To consume them in your provider, add a nuget.config file to your solution:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <!--To inherit the global NuGet package sources remove the <clear/> line below -->
    <clear />
    <add key="nuget" value="https://api.nuget.org/v3/index.json" />
    <add key="msdev" value="https://msdevnuget.blob.core.windows.net/feed/index.json" />
  </packageSources>

  <!-- Microsoft.Developer.* packages will be restored from msdev, everything else from nuget.org. -->
  <packageSourceMapping>
    <packageSource key="nuget">
      <package pattern="*" />
    </packageSource>
    <packageSource key="msdev">
      <package pattern="Microsoft.Developer.*" />
    </packageSource>
  </packageSourceMapping>
</configuration>

Additional resources

For more on Platform Engineering and Developer Self-service Foundation, refer to Microsoft Platform engineering guide.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.