facetted-interfaces/history/FIAM_v0.2_Draft6/specimens/regression/03-graphql-over-https.yaml

240 lines
6.8 KiB
YAML
Raw Normal View History

fiam_version: '0.2'
instance:
id: specimen.graphql.https
kind: specimen
title: GraphQL application interface over HTTPS
status: provisional
intent: Separate GraphQL execution semantics from its HTTP realization.
nodes:
- id: node.web-client
kind: system-node
name: Web Client
node_type: fiam.node-type.application
- id: node.graphql-service
kind: system-node
name: GraphQL Service
node_type: fiam.node-type.service
ports:
- id: port.client.graphql
owner: node.web-client
participations:
- contract: contract.graphql.catalog
mode: requires
roles:
- fiam.role.client
- id: port.service.graphql
owner: node.graphql-service
participations:
- contract: contract.graphql.catalog
mode: offers
roles:
- fiam.role.server
contracts:
- id: contract.graphql.catalog
kind: interface-contract
purpose:
- fiam.purpose.query
- fiam.purpose.mutation
contract_forms:
- fiam.contract-form.graphql-schema
operations:
- id: operation.graphql.query
name: query
interaction_style: fiam.interaction-style.query
effect: fiam.effect.read
- id: operation.graphql.mutation
name: mutation
interaction_style: fiam.interaction-style.command
effect: fiam.effect.write
endpoints:
- id: endpoint.graphql
kind: endpoint
address: https://api.example.test/graphql
address_scheme: fiam.address-scheme.https-url
bindings:
- id: binding.graphql.https
contract: contract.graphql.catalog
provider_port: port.service.graphql
consumer_ports:
- port.client.graphql
binding_profile: fiam.binding-profile.graphql-over-http
communication_stack:
- role: fiam.stack-role.application-semantics
term: fiam.tech.graphql
- role: fiam.stack-role.application-transfer-protocol
term: fiam.protocol.http
- role: fiam.stack-role.security-protocol
term: fiam.protocol.tls
- role: fiam.stack-role.transport
term: fiam.transport.tcp
endpoints:
- endpoint.graphql
interactions:
- id: interaction.graphql-query
operation: operation.graphql.query
binding: binding.graphql.https
temporal_semantics: fiam.temporal.synchronous
assertions:
- id: assertion.graphql-transport-independence
subject: contract.graphql.catalog
predicate: fiam.property.transport-independent
value: true
evidence:
mode: fiam.evidence.declared
source: GraphQL specification
confidence: 1.0
assertion_kind: property
polarity: asserted
- id: assertion.graphql.request-embeds-document
assertion_kind: relation
subject: shape.graphql.request
predicate: fiam.relation.embeds-shape
polarity: asserted
object_ref: shape.graphql.document
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
facets:
slot: query
role: fiam.shape-role.payload
- id: assertion.graphql.response-embeds-item
assertion_kind: relation
subject: shape.graphql.response
predicate: fiam.relation.embeds-shape
polarity: asserted
object_ref: shape.graphql.catalog-item
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
facets:
slot: data.catalog
role: fiam.shape-role.payload
- id: assertion.graphql.query-accepts
assertion_kind: relation
subject: operation.graphql.query
predicate: fiam.relation.accepts-shape
polarity: asserted
object_ref: shape.graphql.request
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
facets:
role: fiam.shape-role.request
- id: assertion.graphql.query-produces
assertion_kind: relation
subject: operation.graphql.query
predicate: fiam.relation.produces-shape
polarity: asserted
object_ref: shape.graphql.response
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
facets:
role: fiam.shape-role.response
- id: assertion.graphql.binding-accepts-json
assertion_kind: relation
subject: binding.graphql.https
predicate: fiam.relation.accepts-shape
polarity: asserted
object_ref: shape.graphql.request
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
facets:
role: fiam.shape-role.request
representation: fiam.representation.json
operation_ref: operation.graphql.query
- id: assertion.graphql.binding-produces-json
assertion_kind: relation
subject: binding.graphql.https
predicate: fiam.relation.produces-shape
polarity: asserted
object_ref: shape.graphql.response
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
facets:
role: fiam.shape-role.response
representation: fiam.representation.json
operation_ref: operation.graphql.query
- id: assertion.graphql.interaction-produces-json
assertion_kind: relation
subject: interaction.graphql-query
predicate: fiam.relation.produces-shape
polarity: asserted
object_ref: shape.graphql.response
evidence:
mode: fiam.evidence.declared
source: FIAM v0.2 semantic specimen
confidence: 0.98
facets:
role: fiam.shape-role.response
representation: fiam.representation.json
tests:
stresses:
- execution-language-vs-transport
- operation-level-semantics
notes:
- GraphQL is modeled independently of HTTP.
expected_properties:
- id: check.evidence
kind: all-assertions-have-evidence
- id: check.no-deprecated
kind: no-deprecated-terms
- id: check.no-legacy-representations
kind: no-legacy-representations
- id: check.graphql.types
kind: entity-exists
ref: shape.graphql.catalog-item
entity_kind: information-shape
- id: check.graphql.slot
kind: relation-exists
subject: shape.graphql.response
predicate: fiam.relation.embeds-shape
object_ref: shape.graphql.catalog-item
facets:
slot: data.catalog
role: fiam.shape-role.payload
- id: check.graphql.binding-json
kind: relation-exists
subject: binding.graphql.https
predicate: fiam.relation.produces-shape
object_ref: shape.graphql.response
facets:
representation: fiam.representation.json
information_shapes:
- id: shape.graphql.request
kind: information-shape
name: GraphQL request envelope
shape_kind: fiam.information-shape.envelope
- id: shape.graphql.document
kind: information-shape
name: GraphQL executable document
shape_kind: fiam.information-shape.opaque
facets:
semantic_standard: fiam.tech.graphql
- id: shape.graphql.response
kind: information-shape
name: GraphQL response envelope
shape_kind: fiam.information-shape.envelope
- id: shape.graphql.catalog-item
kind: information-shape
name: Catalog item
shape_kind: fiam.information-shape.object
artifacts:
- id: artifact.graphql.schema
kind: artifact
name: schema.graphql
artifact_type: fiam.artifact.graphql-schema
describes:
- contract.graphql.catalog
- shape.graphql.catalog-item
- shape.graphql.response
locator: repo://graphql/schema.graphql