FiapCloudGames.Contracts
7.0.0
dotnet add package FiapCloudGames.Contracts --version 7.0.0
NuGet\Install-Package FiapCloudGames.Contracts -Version 7.0.0
<PackageReference Include="FiapCloudGames.Contracts" Version="7.0.0" />
<PackageVersion Include="FiapCloudGames.Contracts" Version="7.0.0" />
<PackageReference Include="FiapCloudGames.Contracts" />
paket add FiapCloudGames.Contracts --version 7.0.0
#r "nuget: FiapCloudGames.Contracts, 7.0.0"
#:package FiapCloudGames.Contracts@7.0.0
#addin nuget:?package=FiapCloudGames.Contracts&version=7.0.0
#tool nuget:?package=FiapCloudGames.Contracts&version=7.0.0
FiapCloudGames.Contracts
Contratos de eventos de integração compartilhados entre os microsserviços do FIAP Cloud Games.
Distribuído como pacote NuGet (nuget.org) para que produtor e consumidores usem a mesma definição de mensagem e roteamento.
Instalação
dotnet add package FiapCloudGames.Contracts
Conteúdo
| Tipo | Descrição |
|---|---|
IIntegrationEvent |
Contrato base (EventId, OccurredAt) de todo evento. |
Users.UserRegisteredEvent |
Usuário se auto-registrou (também usado quando um admin cria o usuário). |
Users.UserMessaging |
Nome da exchange e routing keys dos eventos de usuário. |
Catalog.OrderPlacedEvent |
Pedido de compra realizado (UserId, GameId, Price). |
Catalog.CatalogMessaging |
Nome da exchange e routing keys dos eventos de catálogo. |
Payments.PaymentProcessedEvent |
Pagamento processado (UserId, GameId, Status). |
Payments.PaymentStatus |
Resultado do pagamento (Approved, Rejected). |
Payments.PaymentsMessaging |
Nome da exchange e routing keys dos eventos de pagamentos. |
Uso
Produtor (UsersAPI) serializa e publica:
var evt = new UserRegisteredEvent(user.Id, user.Name, user.Email);
// publica em UserMessaging.Exchange com routing key UserMessaging.RoutingKeys.Registered
Consumidor desserializa o mesmo tipo:
var evt = JsonSerializer.Deserialize<UserRegisteredEvent>(body);
Versionamento
Segue SemVer. Contratos são record imutáveis:
- Campo novo opcional → minor/patch.
- Renomear/remover campo → major (quebra consumidores).
Publicação
Automática via GitHub Actions: ao publicar uma release com tag vX.Y.Z, o pacote
X.Y.Z é enviado ao nuget.org. A autenticação usa Trusted Publishing (OIDC) — não há
API key de longa duração armazenada. Pré-requisitos (uma vez):
- Em nuget.org → Trusted Publishing, crie uma policy: Repository Owner
pdelfino0, Repositoryfcg-contracts, Workflow Filepublish.yml(sem Environment). - Defina o secret
NUGET_USERno repositório com seu nome de usuário (profile) do nuget.org.
# Publicação manual (alternativa)
dotnet pack src/FiapCloudGames.Contracts/FiapCloudGames.Contracts.csproj -c Release -o out /p:Version=1.0.0
dotnet nuget push "out/*.nupkg" --api-key <API_KEY> --source https://api.nuget.org/v3/index.json
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.