This commit is contained in:
2023-05-08 11:13:35 +02:00
commit d6bb51b661
43 changed files with 2278 additions and 0 deletions

4
README.md Normal file
View File

@@ -0,0 +1,4 @@
# Example Entities
This is a set of example entities that you can make use of to demonstrate basic
Backstage features.

8
acme-corp.yaml Normal file
View File

@@ -0,0 +1,8 @@
apiVersion: backstage.io/v1alpha1
kind: Location
metadata:
name: acme-corp
description: A collection of all Backstage example Groups
spec:
targets:
- ./acme/org.yaml

13
acme/backstage-group.yaml Normal file
View File

@@ -0,0 +1,13 @@
apiVersion: backstage.io/v1alpha1
kind: Group
metadata:
name: backstage
description: The backstage sub-department
spec:
type: sub-department
profile:
displayName: Backstage
email: backstage@example.com
picture: https://avatars.dicebear.com/api/identicon/backstage@example.com.svg?background=%23fff&margin=25
parent: infrastructure
children: [team-a, team-b]

13
acme/boxoffice-group.yaml Normal file
View File

@@ -0,0 +1,13 @@
apiVersion: backstage.io/v1alpha1
kind: Group
metadata:
name: boxoffice
description: The boxoffice sub-department
spec:
type: sub-department
profile:
displayName: Box Office
email: boxoffice@example.com
# Intentional no picture for testing
parent: infrastructure
children: [team-c, team-d]

View File

@@ -0,0 +1,10 @@
apiVersion: backstage.io/v1alpha1
kind: Group
metadata:
name: infrastructure
description: The infra department
spec:
type: department
# Intentional no profile for testing
parent: acme-corp
children: [backstage, boxoffice]

32
acme/org.yaml Normal file
View File

@@ -0,0 +1,32 @@
apiVersion: backstage.io/v1alpha1
kind: Group
metadata:
name: acme-corp
description: The acme-corp organization
links:
- url: http://www.acme.com/
title: Website
- url: https://meta.wikimedia.org/wiki/
title: Intranet
spec:
type: organization
profile:
displayName: ACME Corp
email: info@example.com
picture: https://avatars.dicebear.com/api/identicon/info@example.com.svg?background=%23fff&margin=25
children: [infrastructure]
---
apiVersion: backstage.io/v1alpha1
kind: Location
metadata:
name: example-groups
description: A collection of all Backstage example Groups
spec:
targets:
- ./infrastructure-group.yaml
- ./boxoffice-group.yaml
- ./backstage-group.yaml
- ./team-a-group.yaml
- ./team-b-group.yaml
- ./team-c-group.yaml
- ./team-d-group.yaml

60
acme/team-a-group.yaml Normal file
View File

@@ -0,0 +1,60 @@
apiVersion: backstage.io/v1alpha1
kind: Group
metadata:
name: team-a
description: Team A
spec:
type: team
profile:
# Intentional no displayName for testing
email: team-a@example.com
picture: https://avatars.dicebear.com/api/identicon/team-a@example.com.svg?background=%23fff&margin=25
parent: backstage
children: []
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: breanna.davison
spec:
profile:
# Intentional no displayName for testing
email: breanna-davison@example.com
picture: https://avatars.dicebear.com/api/avataaars/breanna-davison@example.com.svg?background=%23fff
memberOf: [team-a]
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: janelle.dawe
spec:
profile:
displayName: Janelle Dawe
email: janelle-dawe@example.com
picture: https://avatars.dicebear.com/api/avataaars/janelle-dawe@example.com.svg?background=%23fff
memberOf: [team-a]
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: nigel.manning
spec:
profile:
displayName: Nigel Manning
email: nigel-manning@example.com
picture: https://avatars.dicebear.com/api/avataaars/nigel-manning@example.com.svg?background=%23fff
memberOf: [team-a]
---
# This user is added as an example, to make it more easy for the "Guest"
# sign-in option to demonstrate some entities being owned. In a regular org,
# a guest user would probably not be registered like this.
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: guest
spec:
profile:
displayName: Guest User
email: guest@example.com
picture: https://avatars.dicebear.com/api/avataaars/guest@example.com.svg?background=%23fff
memberOf: [team-a]

68
acme/team-b-group.yaml Normal file
View File

@@ -0,0 +1,68 @@
apiVersion: backstage.io/v1alpha1
kind: Group
metadata:
name: team-b
description: Team B
spec:
type: team
profile:
displayName: Team B
email: team-b@example.com
picture: https://avatars.dicebear.com/api/identicon/team-b@example.com.svg?background=%23fff&margin=25
parent: backstage
children: []
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: amelia.park
spec:
profile:
displayName: Amelia Park
email: amelia-park@example.com
picture: https://avatars.dicebear.com/api/avataaars/amelia-park@example.com.svg?background=%23fff
memberOf: [team-b]
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: colette.brock
spec:
profile:
displayName: Colette Brock
email: colette-brock@example.com
picture: https://avatars.dicebear.com/api/avataaars/colette-brock@example.com.svg?background=%23fff
memberOf: [team-b]
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: jenny.doe
spec:
profile:
displayName: Jenny Doe
email: jenny-doe@example.com
picture: https://avatars.dicebear.com/api/avataaars/jenny-doe@example.com.svg?background=%23fff
memberOf: [team-b]
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: jonathon.page
spec:
profile:
displayName: Jonathon Page
email: jonathon-page@example.com
picture: https://avatars.dicebear.com/api/avataaars/jonathon-page@example.com.svg?background=%23fff
memberOf: [team-b]
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: justine.barrow
spec:
profile:
displayName: Justine Barrow
email: justine-barrow@example.com
picture: https://avatars.dicebear.com/api/avataaars/justine-barrow@example.com.svg?background=%23fff
memberOf: [team-b]

68
acme/team-c-group.yaml Normal file
View File

@@ -0,0 +1,68 @@
apiVersion: backstage.io/v1alpha1
kind: Group
metadata:
name: team-c
description: Team C
spec:
type: team
profile:
displayName: Team C
email: team-c@example.com
picture: https://avatars.dicebear.com/api/identicon/team-c@example.com.svg?background=%23fff&margin=25
parent: boxoffice
children: []
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: calum.leavy
spec:
profile:
displayName: Calum Leavy
email: calum-leavy@example.com
picture: https://avatars.dicebear.com/api/avataaars/calum-leavy@example.com.svg?background=%23fff
memberOf: [team-c]
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: frank.tiernan
spec:
profile:
displayName: Frank Tiernan
email: frank-tiernan@example.com
picture: https://avatars.dicebear.com/api/avataaars/frank-tiernan@example.com.svg?background=%23fff
memberOf: [team-c]
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: peadar.macmahon
spec:
profile:
displayName: Peadar MacMahon
email: peadar-macmahon@example.com
picture: https://avatars.dicebear.com/api/avataaars/peadar-macmahon@example.com.svg?background=%23fff
memberOf: [team-c]
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: sarah.gilroy
spec:
profile:
displayName: Sarah Gilroy
email: sarah-gilroy@example.com
picture: https://avatars.dicebear.com/api/avataaars/sarah-gilroy@example.com.svg?background=%23fff
memberOf: [team-c]
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: tara.macgovern
spec:
profile:
displayName: Tara MacGovern
email: tara-macgovern@example.com
picture: https://avatars.dicebear.com/api/avataaars/tara-macgovern@example.com.svg?background=%23fff
memberOf: [team-c]

35
acme/team-d-group.yaml Normal file
View File

@@ -0,0 +1,35 @@
apiVersion: backstage.io/v1alpha1
kind: Group
metadata:
name: team-d
description: Team D
spec:
type: team
profile:
displayName: Team D
email: team-d@example.com
picture: https://avatars.dicebear.com/api/identicon/team-d@example.com.svg?background=%23fff&margin=25
parent: boxoffice
children: []
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: eva.macdowell
spec:
profile:
displayName: Eva MacDowell
email: eva-macdowell@example.com
picture: https://avatars.dicebear.com/api/avataaars/eva-macdowell@example.com.svg?background=%23fff
memberOf: [team-d]
---
apiVersion: backstage.io/v1alpha1
kind: User
metadata:
name: lucy.sheehan
spec:
profile:
displayName: Lucy Sheehan
email: lucy-sheehan@example.com
picture: https://avatars.dicebear.com/api/avataaars/lucy-sheehan@example.com.svg?background=%23fff
memberOf: [team-d]

15
all-apis.yaml Normal file
View File

@@ -0,0 +1,15 @@
apiVersion: backstage.io/v1alpha1
kind: Location
metadata:
name: example-apis
description: A collection of all Backstage example APIs
spec:
targets:
- ./apis/hello-world-api.yaml
- ./apis/hello-world-trpc-api.yaml
- ./apis/petstore-api.yaml
- ./apis/spotify-api.yaml
- ./apis/streetlights-api.yaml
- ./apis/swapi-graphql.yaml
- ./apis/wayback-archive-api.yaml
- ./apis/wayback-search-api.yaml

20
all-components.yaml Normal file
View File

@@ -0,0 +1,20 @@
apiVersion: backstage.io/v1alpha1
kind: Location
metadata:
name: example-components
description: A collection of all Backstage example components
spec:
targets:
- ./components/artist-lookup-component.yaml
- ./components/petstore-component.yaml
- ./components/playback-order-component.yaml
- ./components/podcast-api-component.yaml
- ./components/queue-proxy-component.yaml
- ./components/searcher-component.yaml
- ./components/playback-lib-component.yaml
- ./components/www-artist-component.yaml
- ./components/shuffle-api-component.yaml
- ./components/wayback-archive-component.yaml
- ./components/wayback-archive-ingestion-component.yaml
- ./components/wayback-archive-storage-component.yaml
- ./components/wayback-search-component.yaml

9
all-domains.yaml Normal file
View File

@@ -0,0 +1,9 @@
apiVersion: backstage.io/v1alpha1
kind: Location
metadata:
name: example-domains
description: A collection of all Backstage example domains
spec:
targets:
- ./domains/artists-domain.yaml
- ./domains/playback-domain.yaml

8
all-resources.yaml Normal file
View File

@@ -0,0 +1,8 @@
apiVersion: backstage.io/v1alpha1
kind: Location
metadata:
name: example-resources
description: A collection of all Backstage example resources
spec:
targets:
- ./resources/artists-db-resource.yaml

10
all-systems.yaml Normal file
View File

@@ -0,0 +1,10 @@
apiVersion: backstage.io/v1alpha1
kind: Location
metadata:
name: example-systems
description: A collection of all Backstage example systems
spec:
targets:
- ./systems/artist-engagement-portal-system.yaml
- ./systems/audio-playback-system.yaml
- ./systems/podcast-system.yaml

12
all.yaml Normal file
View File

@@ -0,0 +1,12 @@
apiVersion: backstage.io/v1alpha1
kind: Location
metadata:
name: example-all
description: A collection of all Backstage example entities, except users, groups, and templates
spec:
targets:
- ./all-apis.yaml
- ./all-components.yaml
- ./all-domains.yaml
- ./all-resources.yaml
- ./all-systems.yaml

48
apis/hello-world-api.yaml Normal file
View File

@@ -0,0 +1,48 @@
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
name: hello-world
description: Hello World example for gRPC
spec:
type: grpc
lifecycle: deprecated
owner: team-c
definition: |
// Copyright 2015 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
option java_multiple_files = true;
option java_package = "io.grpc.examples.helloworld";
option java_outer_classname = "HelloWorldProto";
option objc_class_prefix = "HLW";
package helloworld;
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}

View File

@@ -0,0 +1,25 @@
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
name: hello-world-trpc
description: Hello World example for tRPC
spec:
type: trpc
lifecycle: experimental
owner: team-c
definition: |
import { z } from 'zod';
import { publicProcedure, router } from '../trpc';
export const apiRouter = router({
version: publicProcedure.query(() => {
return { version: '0.42.0' };
}),
hello: publicProcedure
.input(z.object({ username: z.string().nullish() }).nullish())
.query(({ input, ctx }) => {
return {
text: `hello ${input?.username ?? ctx.user?.name ?? 'world'}`,
};
}),
});

131
apis/petstore-api.yaml Normal file
View File

@@ -0,0 +1,131 @@
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
name: petstore
description: The petstore API
tags:
- store
- rest
links:
- url: https://github.com/swagger-api/swagger-petstore
title: GitHub Repo
icon: github
- url: https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml
title: API Spec
icon: code
spec:
type: openapi
lifecycle: experimental
owner: team-c
definition: |
openapi: "3.0.0"
info:
version: 1.0.0
title: Swagger Petstore
license:
name: MIT
servers:
- url: http://petstore.swagger.io/v1
paths:
/pets:
get:
summary: List all pets
operationId: listPets
tags:
- pets
parameters:
- name: limit
in: query
description: How many items to return at one time (max 100)
required: false
schema:
type: integer
format: int32
responses:
'200':
description: A paged array of pets
headers:
x-next:
description: A link to the next page of responses
schema:
type: string
content:
application/json:
schema:
$ref: "#/components/schemas/Pets"
default:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
post:
summary: Create a pet
operationId: createPets
tags:
- pets
responses:
'201':
description: Null response
default:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/pets/{petId}:
get:
summary: Info for a specific pet
operationId: showPetById
tags:
- pets
parameters:
- name: petId
in: path
required: true
description: The id of the pet to retrieve
schema:
type: string
responses:
'200':
description: Expected response to a valid request
content:
application/json:
schema:
$ref: "#/components/schemas/Pet"
default:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
components:
schemas:
Pet:
type: object
required:
- id
- name
properties:
id:
type: integer
format: int64
name:
type: string
tag:
type: string
Pets:
type: array
items:
$ref: "#/components/schemas/Pet"
Error:
type: object
required:
- code
- message
properties:
code:
type: integer
format: int32
message:
type: string

17
apis/spotify-api.yaml Normal file
View File

@@ -0,0 +1,17 @@
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
name: spotify
description: The Spotify web API
tags:
- spotify
- rest
annotations:
# The annotation is deprecated, we use placeholders (see below) instead, remove it later.
backstage.io/definition-at-location: 'url:https://raw.githubusercontent.com/APIs-guru/openapi-directory/master/APIs/spotify.com/v1/swagger.yaml'
spec:
type: openapi
lifecycle: production
owner: team-a
definition:
$text: https://github.com/APIs-guru/openapi-directory/blob/dab6854d4d599aafb0eb36e6c7ae1fe0c37509b7/APIs/spotify.com/2021.4.2/openapi.yaml

225
apis/streetlights-api.yaml Normal file
View File

@@ -0,0 +1,225 @@
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
name: streetlights
description: The Smartylighting Streetlights API allows you to remotely manage the city lights.
tags:
- mqtt
links:
- url: https://github.com/asyncapi/asyncapi/blob/master/examples/1.2.0/streetlights.yml
title: Source Code
icon: code
spec:
type: asyncapi
lifecycle: production
owner: team-c
definition: |
asyncapi: 2.0.0
info:
title: Streetlights API
version: '1.0.0'
description: |
The Smartylighting Streetlights API allows you to remotely manage the city lights.
### Check out its awesome features:
* Turn a specific streetlight on/off 🌃
* Dim a specific streetlight 😎
* Receive real-time information about environmental lighting conditions 📈
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
servers:
production:
url: api.streetlights.smartylighting.com:{port}
protocol: mqtt
description: Test broker
variables:
port:
description: Secure connection (TLS) is available through port 8883.
default: '1883'
enum:
- '1883'
- '8883'
security:
- apiKey: []
- supportedOauthFlows:
- streetlights:on
- streetlights:off
- streetlights:dim
- openIdConnectWellKnown: []
defaultContentType: application/json
channels:
smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured:
description: The topic on which measured values may be produced and consumed.
parameters:
streetlightId:
$ref: '#/components/parameters/streetlightId'
subscribe:
summary: Receive information about environmental lighting conditions of a particular streetlight.
operationId: receiveLightMeasurement
traits:
- $ref: '#/components/operationTraits/kafka'
message:
$ref: '#/components/messages/lightMeasured'
smartylighting/streetlights/1/0/action/{streetlightId}/turn/on:
parameters:
streetlightId:
$ref: '#/components/parameters/streetlightId'
publish:
operationId: turnOn
traits:
- $ref: '#/components/operationTraits/kafka'
message:
$ref: '#/components/messages/turnOnOff'
smartylighting/streetlights/1/0/action/{streetlightId}/turn/off:
parameters:
streetlightId:
$ref: '#/components/parameters/streetlightId'
publish:
operationId: turnOff
traits:
- $ref: '#/components/operationTraits/kafka'
message:
$ref: '#/components/messages/turnOnOff'
smartylighting/streetlights/1/0/action/{streetlightId}/dim:
parameters:
streetlightId:
$ref: '#/components/parameters/streetlightId'
publish:
operationId: dimLight
traits:
- $ref: '#/components/operationTraits/kafka'
message:
$ref: '#/components/messages/dimLight'
components:
messages:
lightMeasured:
name: lightMeasured
title: Light measured
summary: Inform about environmental lighting conditions for a particular streetlight.
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: "#/components/schemas/lightMeasuredPayload"
turnOnOff:
name: turnOnOff
title: Turn on/off
summary: Command a particular streetlight to turn the lights on or off.
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: "#/components/schemas/turnOnOffPayload"
dimLight:
name: dimLight
title: Dim light
summary: Command a particular streetlight to dim the lights.
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: "#/components/schemas/dimLightPayload"
schemas:
lightMeasuredPayload:
type: object
properties:
lumens:
type: integer
minimum: 0
description: Light intensity measured in lumens.
sentAt:
$ref: "#/components/schemas/sentAt"
turnOnOffPayload:
type: object
properties:
command:
type: string
enum:
- on
- off
description: Whether to turn on or off the light.
sentAt:
$ref: "#/components/schemas/sentAt"
dimLightPayload:
type: object
properties:
percentage:
type: integer
description: Percentage to which the light should be dimmed to.
minimum: 0
maximum: 100
sentAt:
$ref: "#/components/schemas/sentAt"
sentAt:
type: string
format: date-time
description: Date and time when the message was sent.
securitySchemes:
apiKey:
type: apiKey
in: user
description: Provide your API key as the user and leave the password empty.
supportedOauthFlows:
type: oauth2
description: Flows to support OAuth 2.0
flows:
implicit:
authorizationUrl: 'https://authserver.example/auth'
scopes:
'streetlights:on': Ability to switch lights on
'streetlights:off': Ability to switch lights off
'streetlights:dim': Ability to dim the lights
password:
tokenUrl: 'https://authserver.example/token'
scopes:
'streetlights:on': Ability to switch lights on
'streetlights:off': Ability to switch lights off
'streetlights:dim': Ability to dim the lights
clientCredentials:
tokenUrl: 'https://authserver.example/token'
scopes:
'streetlights:on': Ability to switch lights on
'streetlights:off': Ability to switch lights off
'streetlights:dim': Ability to dim the lights
authorizationCode:
authorizationUrl: 'https://authserver.example/auth'
tokenUrl: 'https://authserver.example/token'
refreshUrl: 'https://authserver.example/refresh'
scopes:
'streetlights:on': Ability to switch lights on
'streetlights:off': Ability to switch lights off
'streetlights:dim': Ability to dim the lights
openIdConnectWellKnown:
type: openIdConnect
openIdConnectUrl: 'https://authserver.example/.well-known'
parameters:
streetlightId:
description: The ID of the streetlight.
schema:
type: string
messageTraits:
commonHeaders:
headers:
type: object
properties:
my-app-header:
type: integer
minimum: 0
maximum: 100
operationTraits:
kafka:
bindings:
kafka:
clientId: my-app-id

1180
apis/swapi-graphql.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
name: wayback-archive
description: Archive API for the wayback machine
spec:
type: openapi
lifecycle: production
owner: team-a
definition:
$text: https://github.com/APIs-guru/openapi-directory/blob/main/APIs/archive.org/wayback/1.0.0/openapi.yaml

View File

@@ -0,0 +1,11 @@
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
name: wayback-search
description: Search API for the wayback machine
spec:
type: openapi
lifecycle: production
owner: team-a
definition:
$text: https://github.com/APIs-guru/openapi-directory/blob/main/APIs/archive.org/search/1.0.0/openapi.yaml

View File

@@ -0,0 +1,39 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: artist-lookup
description: Artist Lookup
tags:
- java
- data
links:
- url: https://example.com/user
title: Examples Users
icon: user
- url: https://example.com/group
title: Example Group
icon: group
- url: https://example.com/cloud
title: Link with Cloud Icon
icon: cloud
- url: https://example.com/dashboard
title: Dashboard
icon: dashboard
- url: https://example.com/help
title: Support
icon: help
- url: https://example.com/web
title: Website
icon: web
- url: https://example.com/alert
title: Alerts
icon: alert
annotations:
backstage.io/linguist: 'https://github.com/backstage/backstage/tree/master/plugins/playlist'
spec:
type: service
lifecycle: experimental
owner: team-a
system: artist-engagement-portal
dependsOn: ['resource:artists-db']
apiConsumedBy: ['component:www-artist']

View File

@@ -0,0 +1,21 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: petstore
# This is an extra long description with Markdown
description: |
[The Petstore](http://petstore.example.com) is an example API used to show features of the OpenAPI spec.
- First item
- Second item
links:
- url: https://github.com/swagger-api/swagger-petstore
title: GitHub Repo
icon: github
spec:
type: service
lifecycle: experimental
owner: team-c
providesApis:
- petstore
- streetlights
- hello-world

View File

@@ -0,0 +1,10 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: playback-sdk
description: Audio and video playback SDK
spec:
type: library
lifecycle: experimental
owner: team-c
system: audio-playback

View File

@@ -0,0 +1,13 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: playback-order
description: Playback Order
tags:
- java
- playback
spec:
type: service
lifecycle: production
owner: user:guest
system: audio-playback

View File

@@ -0,0 +1,12 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: podcast-api
description: Podcast API
tags:
- java
spec:
type: service
lifecycle: experimental
owner: team-b
system: podcast

View File

@@ -0,0 +1,13 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: queue-proxy
description: Queue Proxy
tags:
- go
- website
spec:
type: website
lifecycle: production
owner: team-b
system: podcast

View File

@@ -0,0 +1,11 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: searcher
description: Searcher
tags:
- go
spec:
type: service
lifecycle: production
owner: user:guest

View File

@@ -0,0 +1,15 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: shuffle-api
description: Shuffle API
labels:
goVersion: go1.15.3
category: music
tags:
- go
spec:
type: service
lifecycle: production
owner: user:guest
system: audio-playback

View File

@@ -0,0 +1,11 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: wayback-archive
description: Archive of the wayback machine
spec:
type: service
lifecycle: production
owner: team-a
providesApis:
- wayback-archive

View File

@@ -0,0 +1,10 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: wayback-archive-ingestion
description: Ingestion subsystem of the Wayback Archive
spec:
type: service
lifecycle: production
owner: team-d
subcomponentOf: wayback-archive

View File

@@ -0,0 +1,10 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: wayback-archive-storage
description: Storage subsystem of the Wayback Archive
spec:
type: service
lifecycle: production
owner: team-a
subcomponentOf: wayback-archive

View File

@@ -0,0 +1,13 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: wayback-search
description: Search of the wayback machine
spec:
type: service
lifecycle: production
owner: team-a
providesApis:
- wayback-search
consumesApis:
- wayback-archive

View File

@@ -0,0 +1,11 @@
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: www-artist
description: Artist main website
spec:
type: website
lifecycle: production
owner: team-a
system: artist-engagement-portal
consumesApis: ['component:artist-lookup']

View File

@@ -0,0 +1,14 @@
apiVersion: backstage.io/v1alpha1
kind: Domain
metadata:
name: artists
description: Everything related to artists
title: Artists
links:
- url: http://example.com/domain/artists/
title: Domain Readme
- url: http://example.com/domains/artists/dashboard
title: Domain Metrics Dashboard
icon: dashboard
spec:
owner: team-a

View File

@@ -0,0 +1,7 @@
apiVersion: backstage.io/v1alpha1
kind: Domain
metadata:
name: playback
description: Everything related to audio playback
spec:
owner: user:frank.tiernan

View File

@@ -0,0 +1,9 @@
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
name: artists-db
description: Stores artist details
spec:
type: database
owner: team-a
system: artist-engagement-portal

View File

@@ -0,0 +1,10 @@
apiVersion: backstage.io/v1alpha1
kind: System
metadata:
name: artist-engagement-portal
description: Everything related to artists
tags:
- portal
spec:
owner: team-a
domain: artists

View File

@@ -0,0 +1,8 @@
apiVersion: backstage.io/v1alpha1
kind: System
metadata:
name: audio-playback
description: Audio playback system
spec:
owner: team-c
domain: playback

View File

@@ -0,0 +1,8 @@
apiVersion: backstage.io/v1alpha1
kind: System
metadata:
name: podcast
description: Podcast playback
spec:
owner: team-b
domain: playback