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