# SHACL Shapes generated by @inferal-relay/rdf-emitter

@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tsps: <https://relay.inferal.com/ontology/typespec/shapes/> .
@prefix tspv: <https://relay.inferal.com/ontology/typespec/versioning/> .
@prefix schema: <https://schema.org/> .
@prefix mailchimp: <https://relay.inferal.com/ontology/mailchimp/> .
@prefix http: <http://www.w3.org/2011/http#> .

# Class hierarchy
mailchimp:HALLink rdfs:subClassOf schema:EntryPoint .
mailchimp:FieldError rdfs:subClassOf schema:Thing .
mailchimp:Error rdfs:subClassOf schema:Thing .
mailchimp:DeliveryStatus rdfs:subClassOf schema:DeliveryEvent .
mailchimp:ReportSummaryEcommerce rdfs:subClassOf schema:QuantitativeValue .
mailchimp:ReportSummary rdfs:subClassOf schema:QuantitativeValue .
mailchimp:CampaignTrackingSalesforce rdfs:subClassOf schema:Thing .
mailchimp:CampaignTrackingCapsule rdfs:subClassOf schema:Thing .
mailchimp:TrackingConfiguration rdfs:subClassOf schema:Thing .
mailchimp:SegmentCondition rdfs:subClassOf schema:Thing .
mailchimp:ListContact rdfs:subClassOf schema:PostalAddress .
mailchimp:ListCampaignDefaults rdfs:subClassOf schema:Thing .
mailchimp:ListStats rdfs:subClassOf schema:QuantitativeValue .
mailchimp:List rdfs:subClassOf schema:Audience .
mailchimp:MemberStatsEcommerceData rdfs:subClassOf schema:QuantitativeValue .
mailchimp:MemberStats rdfs:subClassOf schema:QuantitativeValue .
mailchimp:MemberLocation rdfs:subClassOf schema:Place .
mailchimp:MemberMarketingPermission rdfs:subClassOf schema:Thing .
mailchimp:MemberLastNote rdfs:subClassOf schema:Comment .
mailchimp:MemberNote rdfs:subClassOf schema:Comment .
mailchimp:Member rdfs:subClassOf schema:Person .
mailchimp:MemberTag rdfs:subClassOf schema:DefinedTerm .
mailchimp:Tag rdfs:subClassOf schema:DefinedTerm .
mailchimp:SegmentOptions rdfs:subClassOf schema:Thing .
mailchimp:Segment rdfs:subClassOf schema:DefinedTermSet .
mailchimp:MergeFieldOptions rdfs:subClassOf schema:Thing .
mailchimp:MergeField rdfs:subClassOf schema:PropertyValueSpecification .
mailchimp:Campaign rdfs:subClassOf schema:CreativeWork .
mailchimp:CampaignRecipients rdfs:subClassOf schema:Audience .
mailchimp:SegmentOpts rdfs:subClassOf schema:Thing .
mailchimp:CampaignSettings rdfs:subClassOf schema:Thing .
mailchimp:VariateSettings rdfs:subClassOf schema:Thing .
mailchimp:VariateCombination rdfs:subClassOf schema:Thing .
mailchimp:RssOpts rdfs:subClassOf schema:Schedule .
mailchimp:RssSchedule rdfs:subClassOf schema:Schedule .
mailchimp:RssDailySend rdfs:subClassOf schema:Thing .
mailchimp:ABSplitOptions rdfs:subClassOf schema:Thing .
mailchimp:SocialCard rdfs:subClassOf schema:Thing .
mailchimp:ResendShortcutEligibility rdfs:subClassOf schema:Thing .
mailchimp:ResendEligibilityEntry rdfs:subClassOf schema:Thing .
mailchimp:ResendShortcutUsage rdfs:subClassOf schema:Thing .
mailchimp:ShortcutCampaign rdfs:subClassOf schema:Thing .
mailchimp:OriginalShortcutCampaign rdfs:subClassOf schema:Thing .
mailchimp:CampaignReport rdfs:subClassOf schema:Report .
mailchimp:Bounces rdfs:subClassOf schema:QuantitativeValue .
mailchimp:Forwards rdfs:subClassOf schema:QuantitativeValue .
mailchimp:Opens rdfs:subClassOf schema:InteractionCounter .
mailchimp:Clicks rdfs:subClassOf schema:InteractionCounter .
mailchimp:FacebookLikes rdfs:subClassOf schema:InteractionCounter .
mailchimp:IndustryStats rdfs:subClassOf schema:QuantitativeValue .
mailchimp:ReportListStats rdfs:subClassOf schema:QuantitativeValue .
mailchimp:ABSplitResult rdfs:subClassOf schema:Thing .
mailchimp:ABSplitArm rdfs:subClassOf schema:QuantitativeValue .
mailchimp:TimewarpEntry rdfs:subClassOf schema:QuantitativeValue .
mailchimp:TimeseriesEntry rdfs:subClassOf schema:QuantitativeValue .
mailchimp:ShareReport rdfs:subClassOf schema:Thing .
mailchimp:EcommerceReport rdfs:subClassOf schema:QuantitativeValue .
mailchimp:Automation rdfs:subClassOf schema:Action .
mailchimp:AutomationRecipients rdfs:subClassOf schema:Audience .
mailchimp:AutomationSegmentOpts rdfs:subClassOf schema:Thing .
mailchimp:AutomationSettings rdfs:subClassOf schema:Thing .
mailchimp:TriggerSettings rdfs:subClassOf schema:Thing .
mailchimp:AutomationRuntime rdfs:subClassOf schema:Schedule .
mailchimp:AutomationRuntimeHours rdfs:subClassOf schema:Schedule .
mailchimp:EmailActivity rdfs:subClassOf schema:InteractionCounter .
mailchimp:EmailActivityRecipient rdfs:subClassOf schema:Person .
mailchimp:EmailActivityEntry rdfs:subClassOf schema:Action .
mailchimp:ListWebhook rdfs:subClassOf schema:WebAPI .
mailchimp:WebhookEvents rdfs:subClassOf schema:Thing .
mailchimp:WebhookSources rdfs:subClassOf schema:Thing .
mailchimp:Interest rdfs:subClassOf schema:DefinedTerm .
mailchimp:InterestCategory rdfs:subClassOf schema:DefinedTermSet .

<https://relay.inferal.com/ontology/mailchimp/shapes> a tsps:ShapeGeneration ;
  tsps:shapeReferenceChainLimit 5 ;
  tsps:omittedShapeReferenceCount 11
  ;
  tsps:omittedShapeReference [
    tsps:referenceFrom mailchimp:AutomationListResponseShape ;
    tsps:referenceTo mailchimp:AutomationShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom mailchimp:CampaignListResponseShape ;
    tsps:referenceTo mailchimp:CampaignShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom mailchimp:CampaignReportShape ;
    tsps:referenceTo mailchimp:CampaignShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom mailchimp:CampaignShape ;
    tsps:referenceTo mailchimp:CampaignShape ;
    tsps:omittedBecause "cycle"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom mailchimp:CampaignShape ;
    tsps:referenceTo mailchimp:VariateSettingsShape ;
    tsps:omittedBecause "cycle"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom mailchimp:EmailActivityRecipientShape ;
    tsps:referenceTo mailchimp:CampaignShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom mailchimp:EmailActivityShape ;
    tsps:referenceTo mailchimp:CampaignShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom mailchimp:MemberNoteShape ;
    tsps:referenceTo mailchimp:MemberShape ;
    tsps:omittedBecause "cycle"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom mailchimp:OriginalShortcutCampaignShape ;
    tsps:referenceTo mailchimp:CampaignShape ;
    tsps:omittedBecause "cycle"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom mailchimp:ShortcutCampaignShape ;
    tsps:referenceTo mailchimp:CampaignShape ;
    tsps:omittedBecause "cycle"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom mailchimp:VariateSettingsShape ;
    tsps:referenceTo mailchimp:CampaignShape ;
    tsps:omittedBecause "over-long"
  ] .

# Shape for HALLink
mailchimp:HALLinkShape a sh:NodeShape ;
  sh:targetClass mailchimp:HALLink ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.HALLink/rel> ;
    sh:name "rel" ;
    sh:description "Link relation type (e.g. `self`, `parent`, `create`, `update`, `delete`)." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.HALLink/href> ;
    sh:name "href" ;
    sh:description "Absolute URL of the linked resource." ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.HALLink/method> ;
    sh:name "method" ;
    sh:description "HTTP method used to follow the link." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "GET" "POST" "PUT" "PATCH" "DELETE" "HEAD" "OPTIONS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.HALLink/targetSchema> ;
    sh:name "target schema" ;
    sh:description "JSON Schema describing the response payload for this link." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.HALLink/schema> ;
    sh:name "schema" ;
    sh:description "JSON Schema describing the request payload for this link (write methods only)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Mailchimp Field Error
mailchimp:FieldErrorShape a sh:NodeShape ;
  sh:targetClass mailchimp:FieldError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MailchimpFieldError/field> ;
    sh:name "field" ;
    sh:description "Dotted path of the offending request field." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MailchimpFieldError/message> ;
    sh:name "message" ;
    sh:description "Human-readable description of why validation failed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Mailchimp Error
mailchimp:ErrorShape a sh:NodeShape ;
  sh:targetClass mailchimp:Error ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MailchimpError/type> ;
    sh:name "type" ;
    sh:description "URI reference to the error-type documentation." ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MailchimpError/title> ;
    sh:name "title" ;
    sh:description "Short human-readable summary of the error category." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MailchimpError/status> ;
    sh:name "status" ;
    sh:description "HTTP status code repeated as an integer." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MailchimpError/detail> ;
    sh:name "detail" ;
    sh:description "Instance-specific explanation of what went wrong." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MailchimpError/instance> ;
    sh:name "instance" ;
    sh:description "Unique request identifier (UUID) for support correlation." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MailchimpError/errors> ;
    sh:name "errors" ;
    sh:description "Per-field validation errors. Present only on `400 Bad Request`." ;
    sh:node mailchimp:FieldErrorShape ;
    sh:class mailchimp:FieldError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Delivery Status
mailchimp:DeliveryStatusShape a sh:NodeShape ;
  sh:targetClass mailchimp:DeliveryStatus ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.DeliveryStatus/enabled> ;
    sh:name "enabled" ;
    sh:description "Whether delivery tracking is enabled for this campaign." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.DeliveryStatus/canCancel> ;
    sh:name "can cancel" ;
    sh:description "Whether the operator can still cancel the in-flight send." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.DeliveryStatus/status> ;
    sh:name "status" ;
    sh:description "Current state of the send pipeline." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "delivering" "delivered" "canceling" "canceled" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.DeliveryStatus/emailsSent> ;
    sh:name "emails sent" ;
    sh:description "Count of messages successfully handed off to the SMTP layer." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.DeliveryStatus/emailsCanceled> ;
    sh:name "emails canceled" ;
    sh:description "Count of messages that were canceled before send." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Report Summary Ecommerce
mailchimp:ReportSummaryEcommerceShape a sh:NodeShape ;
  sh:targetClass mailchimp:ReportSummaryEcommerce ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ReportSummaryEcommerce/totalOrders> ;
    sh:name "total orders" ;
    sh:description "Number of attributed orders." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ReportSummaryEcommerce/totalSpent> ;
    sh:name "total spent" ;
    sh:description "Total amount spent across attributed orders." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ReportSummaryEcommerce/totalRevenue> ;
    sh:name "total revenue" ;
    sh:description "Net attributed revenue." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Report Summary
mailchimp:ReportSummaryShape a sh:NodeShape ;
  sh:targetClass mailchimp:ReportSummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ReportSummary/opens> ;
    sh:name "opens" ;
    sh:description "Total opens across all recipients." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ReportSummary/uniqueOpens> ;
    sh:name "unique opens" ;
    sh:description "Distinct opening recipients." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ReportSummary/clicks> ;
    sh:name "clicks" ;
    sh:description "Total link clicks." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ReportSummary/subscriberClicks> ;
    sh:name "subscriber clicks" ;
    sh:description "Distinct clicking recipients." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ReportSummary/openRate> ;
    sh:name "open rate" ;
    sh:description "Opens divided by deliveries." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ReportSummary/clickRate> ;
    sh:name "click rate" ;
    sh:description "Clicks divided by deliveries." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ReportSummary/ecommerce> ;
    sh:name "ecommerce" ;
    sh:description "Attributed e-commerce aggregates. Absent on Automation summaries." ;
    sh:node mailchimp:ReportSummaryEcommerceShape ;
    sh:class mailchimp:ReportSummaryEcommerce ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Tracking Salesforce
mailchimp:CampaignTrackingSalesforceShape a sh:NodeShape ;
  sh:targetClass mailchimp:CampaignTrackingSalesforce ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTrackingSalesforce/campaign> ;
    sh:name "campaign" ;
    sh:description "Push a Salesforce campaign record on send." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTrackingSalesforce/notes> ;
    sh:name "notes" ;
    sh:description "Push send activity into Salesforce notes." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Tracking Capsule
mailchimp:CampaignTrackingCapsuleShape a sh:NodeShape ;
  sh:targetClass mailchimp:CampaignTrackingCapsule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTrackingCapsule/notes> ;
    sh:name "notes" ;
    sh:description "Push send activity into Capsule notes." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Tracking
mailchimp:TrackingConfigurationShape a sh:NodeShape ;
  sh:targetClass mailchimp:TrackingConfiguration ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTracking/opens> ;
    sh:name "opens" ;
    sh:description "Track open pixel events." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTracking/htmlClicks> ;
    sh:name "html clicks" ;
    sh:description "Track clicks in the HTML body." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTracking/textClicks> ;
    sh:name "text clicks" ;
    sh:description "Track clicks in the plain-text body." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTracking/goalTracking> ;
    sh:name "goal tracking" ;
    sh:description "Track conversions on the operator's website via Mailchimp goals." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTracking/ecomm360> ;
    sh:name "ecomm360" ;
    sh:description "Track e-commerce events via Mailchimp Ecomm360." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTracking/googleAnalytics> ;
    sh:name "google analytics" ;
    sh:description "Google Analytics campaign tag (max 50 bytes)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTracking/clicktale> ;
    sh:name "clicktale" ;
    sh:description "ClickTale campaign tag (max 50 bytes)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTracking/salesforce> ;
    sh:name "salesforce" ;
    sh:description "Salesforce CRM push toggles." ;
    sh:node mailchimp:CampaignTrackingSalesforceShape ;
    sh:class mailchimp:CampaignTrackingSalesforce ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTracking/capsule> ;
    sh:name "capsule" ;
    sh:description "Capsule CRM push toggles." ;
    sh:node mailchimp:CampaignTrackingCapsuleShape ;
    sh:class mailchimp:CampaignTrackingCapsule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Segment Condition
mailchimp:SegmentConditionShape a sh:NodeShape ;
  sh:targetClass mailchimp:SegmentCondition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentCondition/conditionType> ;
    sh:name "condition type" ;
    sh:description "Discriminator selecting the condition variant." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentCondition/field> ;
    sh:name "field" ;
    sh:description "Member or merge-field path the condition targets. Variant-defined." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentCondition/op> ;
    sh:name "op" ;
    sh:description "Comparison operator (e.g. `is`, `not`, `greater`). Variant-defined." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentCondition/value> ;
    sh:name "value" ;
    sh:description "Variant-specific comparison value. Concrete type depends on\n`conditionType` (string, number, boolean, array, or nested object)." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] .

# Shape for List Contact
mailchimp:ListContactShape a sh:NodeShape ;
  sh:targetClass mailchimp:ListContact ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListContact/company> ;
    sh:name "company" ;
    sh:description "Company or organization name printed in the footer." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListContact/address1> ;
    sh:name "address1" ;
    sh:description "Street address line 1." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListContact/address2> ;
    sh:name "address2" ;
    sh:description "Street address line 2 (suite, unit, etc.)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListContact/city> ;
    sh:name "city" ;
    sh:description "City." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListContact/state> ;
    sh:name "state" ;
    sh:description "State or province." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListContact/zip> ;
    sh:name "zip" ;
    sh:description "Postal code." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListContact/country> ;
    sh:name "country" ;
    sh:description "ISO 3166-1 alpha-2 country code." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListContact/phone> ;
    sh:name "phone" ;
    sh:description "Contact phone number." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for List Campaign Defaults
mailchimp:ListCampaignDefaultsShape a sh:NodeShape ;
  sh:targetClass mailchimp:ListCampaignDefaults ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListCampaignDefaults/fromName> ;
    sh:name "from name" ;
    sh:description "Default \"from\" display name." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListCampaignDefaults/fromEmail> ;
    sh:name "from email" ;
    sh:description "Default \"from\" email address." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListCampaignDefaults/subject> ;
    sh:name "subject" ;
    sh:description "Default subject line." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListCampaignDefaults/language> ;
    sh:name "language" ;
    sh:description "Default language code (e.g. `en`, `es`)." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for List Stats
mailchimp:ListStatsShape a sh:NodeShape ;
  sh:targetClass mailchimp:ListStats ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/memberCount> ;
    sh:name "member count" ;
    sh:description "Active subscriber count." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/totalContacts> ;
    sh:name "total contacts" ;
    sh:description "Total contacts in any state (subscribed + unsubscribed + cleaned)." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/unsubscribeCount> ;
    sh:name "unsubscribe count" ;
    sh:description "Unsubscribed contact count." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/cleanedCount> ;
    sh:name "cleaned count" ;
    sh:description "Cleaned (bounced/invalid) contact count." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/memberCountSinceSend> ;
    sh:name "member count since send" ;
    sh:description "Net subscribers added since the last send." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/unsubscribeCountSinceSend> ;
    sh:name "unsubscribe count since send" ;
    sh:description "Unsubscribes since the last send." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/cleanedCountSinceSend> ;
    sh:name "cleaned count since send" ;
    sh:description "Contacts cleaned since the last send." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/campaignCount> ;
    sh:name "campaign count" ;
    sh:description "Lifetime campaign count for this list." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/campaignLastSent> ;
    sh:name "campaign last sent" ;
    sh:description "Total campaigns ever sent to this list." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/mergeFieldCount> ;
    sh:name "merge field count" ;
    sh:description "Number of merge fields defined for the list." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/avgSubRate> ;
    sh:name "avg sub rate" ;
    sh:description "Average subscribe rate per month." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/avgUnsubRate> ;
    sh:name "avg unsub rate" ;
    sh:description "Average unsubscribe rate per month." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/targetSubRate> ;
    sh:name "target sub rate" ;
    sh:description "Target monthly subscribe rate set by the operator." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/openRate> ;
    sh:name "open rate" ;
    sh:description "Open rate averaged across recent campaigns." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/clickRate> ;
    sh:name "click rate" ;
    sh:description "Click rate averaged across recent campaigns." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/lastSubDate> ;
    sh:name "last sub date" ;
    sh:description "Timestamp of the most recent subscribe event." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListStats/lastUnsubDate> ;
    sh:name "last unsub date" ;
    sh:description "Timestamp of the most recent unsubscribe event." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for List
mailchimp:ListShape a sh:NodeShape ;
  sh:targetClass mailchimp:List ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/id> ;
    sh:name "id" ;
    sh:description "Opaque list identifier." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/webId> ;
    sh:name "web id" ;
    sh:description "Secondary numeric identifier surfaced in the Mailchimp admin UI URL." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/name> ;
    sh:name "name" ;
    sh:description "Display name of the list." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/contact> ;
    sh:name "contact" ;
    sh:description "Physical mailing address printed in the campaign footer." ;
    sh:node mailchimp:ListContactShape ;
    sh:class mailchimp:ListContact ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/permissionReminder> ;
    sh:name "permission reminder" ;
    sh:description "Reminder text explaining why a recipient is on this list." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/useArchiveBar> ;
    sh:name "use archive bar" ;
    sh:description "Whether to render the Mailchimp archive bar in sent campaigns." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/campaignDefaults> ;
    sh:name "campaign defaults" ;
    sh:description "Default field values applied to new campaigns drafted against this list." ;
    sh:node mailchimp:ListCampaignDefaultsShape ;
    sh:class mailchimp:ListCampaignDefaults ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/notifyOnSubscribe> ;
    sh:name "notify on subscribe" ;
    sh:description "Email address notified when a contact subscribes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/notifyOnUnsubscribe> ;
    sh:name "notify on unsubscribe" ;
    sh:description "Email address notified when a contact unsubscribes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/dateCreated> ;
    sh:name "date created" ;
    sh:description "Timestamp when the list was created." ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/listRating> ;
    sh:name "list rating" ;
    sh:description "Mailchimp-assigned engagement rating from 0 (lowest) to 5 (highest)." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/emailTypeOption> ;
    sh:name "email type option" ;
    sh:description "Whether subscribers can choose between HTML and plain-text email." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/subscribeUrlShort> ;
    sh:name "subscribe url short" ;
    sh:description "Branded short URL hosting the subscribe form." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/subscribeUrlLong> ;
    sh:name "subscribe url long" ;
    sh:description "Canonical long URL hosting the subscribe form." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/beamerAddress> ;
    sh:name "beamer address" ;
    sh:description "Email Beamer inbound address for converting emails into campaigns." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/visibility> ;
    sh:name "visibility" ;
    sh:description "Legacy public/private visibility flag. Newer accounts always see `prv`." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "pub" "prv" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/doubleOptin> ;
    sh:name "double optin" ;
    sh:description "Whether subscribers must confirm via a follow-up email before being added." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/hasWelcome> ;
    sh:name "has welcome" ;
    sh:description "Whether a welcome email is sent on subscribe." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/marketingPermissions> ;
    sh:name "marketing permissions" ;
    sh:description "Whether the list collects GDPR marketing permission flags." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/modules> ;
    sh:name "modules" ;
    sh:description "Mailchimp module identifiers enabled for the list (read-only)." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/stats> ;
    sh:name "stats" ;
    sh:description "Aggregate counters and rate metrics for the list." ;
    sh:node mailchimp:ListStatsShape ;
    sh:class mailchimp:ListStats ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.List/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for related resources." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Member Stats Ecommerce Data
mailchimp:MemberStatsEcommerceDataShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberStatsEcommerceData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberStatsEcommerceData/totalRevenue> ;
    sh:name "total revenue" ;
    sh:description "Lifetime attributed revenue." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberStatsEcommerceData/numberOfOrders> ;
    sh:name "number of orders" ;
    sh:description "Lifetime attributed order count." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberStatsEcommerceData/currencyCode> ;
    sh:name "currency code" ;
    sh:description "ISO 4217 currency code of the attributed totals." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Member Stats
mailchimp:MemberStatsShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberStats ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberStats/avgOpenRate> ;
    sh:name "avg open rate" ;
    sh:description "Open rate averaged across campaigns sent to this member." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberStats/avgClickRate> ;
    sh:name "avg click rate" ;
    sh:description "Click rate averaged across campaigns sent to this member." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberStats/ecommerceData> ;
    sh:name "ecommerce data" ;
    sh:description "Attributed e-commerce aggregates from Ecomm360." ;
    sh:node mailchimp:MemberStatsEcommerceDataShape ;
    sh:class mailchimp:MemberStatsEcommerceData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Member Location
mailchimp:MemberLocationShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberLocation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberLocation/latitude> ;
    sh:name "latitude" ;
    sh:description "Approximate latitude." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberLocation/longitude> ;
    sh:name "longitude" ;
    sh:description "Approximate longitude." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberLocation/gmtoff> ;
    sh:name "gmtoff" ;
    sh:description "GMT offset in hours at resolution time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberLocation/dstoff> ;
    sh:name "dstoff" ;
    sh:description "Daylight-savings offset in hours at resolution time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberLocation/countryCode> ;
    sh:name "country code" ;
    sh:description "ISO 3166-1 alpha-2 country code." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberLocation/timezone> ;
    sh:name "timezone" ;
    sh:description "IANA timezone identifier." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberLocation/region> ;
    sh:name "region" ;
    sh:description "ISO 3166-2 subdivision code." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Member Marketing Permission
mailchimp:MemberMarketingPermissionShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberMarketingPermission ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberMarketingPermission/marketingPermissionId> ;
    sh:name "marketing permission id" ;
    sh:description "Opaque permission identifier scoped to the parent list." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberMarketingPermission/text> ;
    sh:name "text" ;
    sh:description "Human-readable description of what the subscriber consented to." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberMarketingPermission/enabled> ;
    sh:name "enabled" ;
    sh:description "Whether the subscriber currently grants the permission." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Member Last Note
mailchimp:MemberLastNoteShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberLastNote ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberLastNote/noteId> ;
    sh:name "note id" ;
    sh:description "Opaque identifier of the source `MemberNote`." ;
    sh:node mailchimp:MemberNoteShape ;
    sh:class mailchimp:MemberNote ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberLastNote/createdAt> ;
    sh:name "created at" ;
    sh:description "Timestamp when the note was authored." ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberLastNote/createdBy> ;
    sh:name "created by" ;
    sh:description "Display name of the account user who authored the note." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberLastNote/note> ;
    sh:name "note" ;
    sh:description "Free-text note body." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Member Note
mailchimp:MemberNoteShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberNote ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberNote/id> ;
    sh:name "id" ;
    sh:description "Opaque member-note ID." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberNote/memberId> ;
    sh:name "member id" ;
    sh:description "Parent member this note is attached to." ;
    sh:class mailchimp:Member ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberNote/note> ;
    sh:name "note" ;
    sh:description "Free-text note body." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberNote/createdAt> ;
    sh:name "created at" ;
    sh:description "Timestamp when the note was created." ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Member
mailchimp:MemberShape a sh:NodeShape ;
  sh:targetClass mailchimp:Member ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/id> ;
    sh:name "id" ;
    sh:description "MD5 hash of the lowercased email address. Distinct from `uniqueEmailId`." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^[a-f0-9]{32}$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/emailAddress> ;
    sh:name "email address" ;
    sh:description "Subscriber's email address." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/uniqueEmailId> ;
    sh:name "unique email id" ;
    sh:description "Cross-Mailchimp email-address identifier (different from `id`)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/contactId> ;
    sh:name "contact id" ;
    sh:description "Email-agnostic contact identifier persistent across address changes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/fullName> ;
    sh:name "full name" ;
    sh:description "Subscriber's full name as resolved from merge fields." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/webId> ;
    sh:name "web id" ;
    sh:description "Secondary numeric identifier surfaced in the Mailchimp admin UI URL." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/emailType> ;
    sh:name "email type" ;
    sh:description "Delivery format preference (`html` or `text`)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "html" "text" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/status> ;
    sh:name "status" ;
    sh:description "Subscription state of the contact on the list." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "subscribed" "unsubscribed" "cleaned" "pending" "transactional" "archived" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/unsubscribeReason> ;
    sh:name "unsubscribe reason" ;
    sh:description "Free-text reason captured when the subscriber unsubscribed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/consentsToOneToOneMessaging> ;
    sh:name "consents to one to one messaging" ;
    sh:description "Whether the subscriber consents to one-to-one outreach." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/smsPhoneNumber> ;
    sh:name "sms phone number" ;
    sh:description "SMS phone number on file. US numbers only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/smsSubscriptionStatus> ;
    sh:name "sms subscription status" ;
    sh:description "SMS subscription state." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "subscribed" "unsubscribed" "nonsubscribed" "pending" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/smsSubscriptionLastUpdated> ;
    sh:name "sms subscription last updated" ;
    sh:description "Last update to SMS subscription state. Wire format is unspecified; emitted as a string." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/mergeFields> ;
    sh:name "merge fields" ;
    sh:description "Open dictionary of merge-field values keyed by merge tag." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/interests> ;
    sh:name "interests" ;
    sh:description "Map of interest opt-ins. Keys are `Ref<Interest>` identifiers; values indicate whether the subscriber is opted in." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/stats> ;
    sh:name "stats" ;
    sh:description "Engagement and e-commerce summary for the subscriber." ;
    sh:node mailchimp:MemberStatsShape ;
    sh:class mailchimp:MemberStats ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/ipSignup> ;
    sh:name "ip signup" ;
    sh:description "IP address recorded at signup." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/ipOpt> ;
    sh:name "ip opt" ;
    sh:description "IP address recorded at confirmed opt-in." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/timestampSignup> ;
    sh:name "timestamp signup" ;
    sh:description "Timestamp recorded at signup." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/timestampOpt> ;
    sh:name "timestamp opt" ;
    sh:description "Timestamp recorded at confirmed opt-in." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/memberRating> ;
    sh:name "member rating" ;
    sh:description "Mailchimp-assigned engagement rating from 1 (lowest) to 5 (highest)." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/lastChanged> ;
    sh:name "last changed" ;
    sh:description "Timestamp of the most recent change to the subscriber record." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/language> ;
    sh:name "language" ;
    sh:description "Subscriber language code (e.g. `en`, `es`)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/vip> ;
    sh:name "vip" ;
    sh:description "Whether the subscriber is flagged as a VIP for the account." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/emailClient> ;
    sh:name "email client" ;
    sh:description "Inferred email client (`Apple Mail`, `Gmail`, etc.)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/location> ;
    sh:name "location" ;
    sh:description "Approximate geographic location resolved from the subscriber's IP." ;
    sh:node mailchimp:MemberLocationShape ;
    sh:class mailchimp:MemberLocation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/marketingPermissions> ;
    sh:name "marketing permissions" ;
    sh:description "GDPR marketing-permission flags. One entry per permission defined on the parent list." ;
    sh:node mailchimp:MemberMarketingPermissionShape ;
    sh:class mailchimp:MemberMarketingPermission ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/lastNote> ;
    sh:name "last note" ;
    sh:description "Most recent note attached to the subscriber." ;
    sh:node mailchimp:MemberLastNoteShape ;
    sh:class mailchimp:MemberLastNote ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/source> ;
    sh:name "source" ;
    sh:description "Acquisition source (e.g. signup form, API, import)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/tagsCount> ;
    sh:name "tags count" ;
    sh:description "Number of tags currently applied to the subscriber." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/tags> ;
    sh:name "tags" ;
    sh:description "Tag associations for the subscriber. Each `id` references a `Tag` on the parent list." ;
    sh:node mailchimp:MemberTagShape ;
    sh:class mailchimp:MemberTag ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/listId> ;
    sh:name "list id" ;
    sh:description "Parent list that owns the subscriber." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for related resources." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Member Tag
mailchimp:MemberTagShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberTag ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberTag/id> ;
    sh:name "id" ;
    sh:description "Tag identifier within the parent list." ;
    sh:node mailchimp:TagShape ;
    sh:class mailchimp:Tag ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberTag/name> ;
    sh:name "name" ;
    sh:description "Tag display name." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Tag
mailchimp:TagShape a sh:NodeShape ;
  sh:targetClass mailchimp:Tag ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Tag/id> ;
    sh:name "id" ;
    sh:description "Integer tag identifier scoped to the parent list." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Tag/name> ;
    sh:name "name" ;
    sh:description "Display name of the tag." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Segment Options
mailchimp:SegmentOptionsShape a sh:NodeShape ;
  sh:targetClass mailchimp:SegmentOptions ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentOptions/match> ;
    sh:name "match" ;
    sh:description "Whether condition rows are combined with logical OR (`any`) or AND (`all`)." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "any" "all" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentOptions/conditions> ;
    sh:name "conditions" ;
    sh:description "Polymorphic condition rows; variant is keyed by `conditionType`." ;
    sh:node mailchimp:SegmentConditionShape ;
    sh:class mailchimp:SegmentCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Segment
mailchimp:SegmentShape a sh:NodeShape ;
  sh:targetClass mailchimp:Segment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Segment/id> ;
    sh:name "id" ;
    sh:description "Integer segment identifier scoped to the parent list." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Segment/name> ;
    sh:name "name" ;
    sh:description "Display name of the segment." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Segment/memberCount> ;
    sh:name "member count" ;
    sh:description "Cached count of subscribers matching the segment predicate." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Segment/type> ;
    sh:name "type" ;
    sh:description "Segment kind." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "saved" "static" "fuzzy" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Segment/createdAt> ;
    sh:name "created at" ;
    sh:description "Timestamp when the segment was created." ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Segment/updatedAt> ;
    sh:name "updated at" ;
    sh:description "Timestamp of the most recent edit." ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Segment/options> ;
    sh:name "options" ;
    sh:description "Predicate definition. Absent on `static` and `fuzzy` segments." ;
    sh:node mailchimp:SegmentOptionsShape ;
    sh:class mailchimp:SegmentOptions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Segment/listId> ;
    sh:name "list id" ;
    sh:description "Parent list that owns the segment." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Segment/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for related resources." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Merge Field Options
mailchimp:MergeFieldOptionsShape a sh:NodeShape ;
  sh:targetClass mailchimp:MergeFieldOptions ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldOptions/defaultCountry> ;
    sh:name "default country" ;
    sh:description "Numeric Mailchimp country code applied as the default for `address` merge fields." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldOptions/phoneFormat> ;
    sh:name "phone format" ;
    sh:description "Phone-number format applied to `phone` merge fields." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "US" "International" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldOptions/dateFormat> ;
    sh:name "date format" ;
    sh:description "Date format string for `date` and `birthday` merge fields (e.g. `MM/DD/YYYY`)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldOptions/choices> ;
    sh:name "choices" ;
    sh:description "Enumerated choices for `radio` and `dropdown` merge fields." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldOptions/size> ;
    sh:name "size" ;
    sh:description "Input width hint for `text` and `number` merge fields." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Merge Field
mailchimp:MergeFieldShape a sh:NodeShape ;
  sh:targetClass mailchimp:MergeField ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeField/mergeId> ;
    sh:name "merge id" ;
    sh:description "Integer merge-field identifier scoped to the parent list." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeField/tag> ;
    sh:name "tag" ;
    sh:description "Merge tag used in campaign content (e.g. `FNAME`, `LNAME`, `EMAIL`)." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeField/name> ;
    sh:name "name" ;
    sh:description "Display name shown in the Mailchimp admin UI and on forms." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeField/type> ;
    sh:name "type" ;
    sh:description "Data type of the merge field." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "text" "number" "address" "phone" "date" "url" "imageurl" "radio" "dropdown" "birthday" "zip" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeField/required> ;
    sh:name "required" ;
    sh:description "Whether the merge field is required on signup." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeField/defaultValue> ;
    sh:name "default value" ;
    sh:description "Default value applied when the subscriber does not supply one." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeField/public> ;
    sh:name "public" ;
    sh:description "Whether the merge field is shown on the public signup form." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeField/displayOrder> ;
    sh:name "display order" ;
    sh:description "Position of the merge field within the list's form." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeField/options> ;
    sh:name "options" ;
    sh:description "Type-specific configuration options. Populated keys depend on `type`." ;
    sh:node mailchimp:MergeFieldOptionsShape ;
    sh:class mailchimp:MergeFieldOptions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeField/helpText> ;
    sh:name "help text" ;
    sh:description "Helper text rendered under the merge field on signup forms." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeField/listId> ;
    sh:name "list id" ;
    sh:description "Parent list that owns the merge field." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeField/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for related resources." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Merge Field Post Response
mailchimp:MergeFieldPostResponseShape a sh:NodeShape ;
  sh:targetClass mailchimp:MergeFieldPostResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/mergeId> ;
    sh:name "merge id" ;
    sh:description "Integer merge-field identifier scoped to the parent list." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/tag> ;
    sh:name "tag" ;
    sh:description "Merge tag used in campaign content (e.g. `FNAME`, `LNAME`, `EMAIL`)." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/name> ;
    sh:name "name" ;
    sh:description "Display name shown in the Mailchimp admin UI and on forms." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/type> ;
    sh:name "type" ;
    sh:description "Data type of the merge field." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "text" "number" "address" "phone" "date" "url" "imageurl" "radio" "dropdown" "birthday" "zip" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/required> ;
    sh:name "required" ;
    sh:description "Whether the merge field is required on signup." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/defaultValue> ;
    sh:name "default value" ;
    sh:description "Default value applied when the subscriber does not supply one." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/public> ;
    sh:name "public" ;
    sh:description "Whether the merge field is shown on the public signup form." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/displayOrder> ;
    sh:name "display order" ;
    sh:description "Position of the merge field within the list's form." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/options> ;
    sh:name "options" ;
    sh:description "Type-specific configuration options. Populated keys depend on `type`." ;
    sh:node mailchimp:MergeFieldOptionsShape ;
    sh:class mailchimp:MergeFieldOptions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/helpText> ;
    sh:name "help text" ;
    sh:description "Helper text rendered under the merge field on signup forms." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/listId> ;
    sh:name "list id" ;
    sh:description "Parent list that owns the merge field." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for related resources." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/totalItems> ;
    sh:name "total items" ;
    sh:description "Total merge fields defined for the parent list after this insert." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldPostResponse/mergeFieldLimit> ;
    sh:name "merge field limit" ;
    sh:description "Account-level cap on merge fields per list." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign
mailchimp:CampaignShape a sh:NodeShape ;
  sh:targetClass mailchimp:Campaign ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/id> ;
    sh:name "id" ;
    sh:description "Campaign ID. Opaque string assigned by Mailchimp." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/webId> ;
    sh:name "web id" ;
    sh:description "Display ID used in the Mailchimp web UI; not an entity reference" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/parentCampaignId> ;
    sh:name "parent campaign id" ;
    sh:description "Parent campaign ID for RSS/automation child campaigns; self-reference" ;
    sh:class mailchimp:Campaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/type> ;
    sh:name "type" ;
    sh:description "Campaign type (regular, plaintext, absplit, rss, variate)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "regular" "plaintext" "absplit" "rss" "variate" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/createTime> ;
    sh:name "create time" ;
    sh:description "Timestamp when the campaign was created" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/archiveUrl> ;
    sh:name "archive url" ;
    sh:description "Public archive URL for the campaign" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/longArchiveUrl> ;
    sh:name "long archive url" ;
    sh:description "Long-form public archive URL for the campaign" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/status> ;
    sh:name "status" ;
    sh:description "Campaign lifecycle status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "save" "paused" "schedule" "sending" "sent" "canceled" "canceling" "archived" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/emailsSent> ;
    sh:name "emails sent" ;
    sh:description "Total number of emails sent" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/sendTime> ;
    sh:name "send time" ;
    sh:description "Timestamp when the campaign was sent" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/contentType> ;
    sh:name "content type" ;
    sh:description "Source of the campaign content" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "template" "html" "url" "multichannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/needsBlockRefresh> ;
    sh:name "needs block refresh" ;
    sh:description "Deprecated; always false in current responses" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/resendable> ;
    sh:name "resendable" ;
    sh:description "Whether this campaign is eligible to be resent" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/recipients> ;
    sh:name "recipients" ;
    sh:description "Recipient targeting for the campaign" ;
    sh:node mailchimp:CampaignRecipientsShape ;
    sh:class mailchimp:CampaignRecipients ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/settings> ;
    sh:name "settings" ;
    sh:description "Campaign settings (subject, from, content options)" ;
    sh:node mailchimp:CampaignSettingsShape ;
    sh:class mailchimp:CampaignSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/variateSettings> ;
    sh:name "variate settings" ;
    sh:description "Variate (multivariate) test configuration; present when type is variate" ;
    sh:class mailchimp:VariateSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/tracking> ;
    sh:name "tracking" ;
    sh:description "Open/click/ecommerce tracking flags; see common CampaignTracking" ;
    sh:node mailchimp:TrackingConfigurationShape ;
    sh:class mailchimp:TrackingConfiguration ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/rssOpts> ;
    sh:name "rss opts" ;
    sh:description "RSS feed options; present when type is rss" ;
    sh:node mailchimp:RssOptsShape ;
    sh:class mailchimp:RssOpts ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/abSplitOpts> ;
    sh:name "ab split opts" ;
    sh:description "Deprecated legacy A/B split test options. Mailchimp no longer authors classic A/B from the API; use `Campaigns.VariateSettings` for multivariate tests." ;
    sh:node mailchimp:ABSplitOptionsShape ;
    sh:class mailchimp:ABSplitOptions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/socialCard> ;
    sh:name "social card" ;
    sh:description "Social-card preview image, title, and description" ;
    sh:node mailchimp:SocialCardShape ;
    sh:class mailchimp:SocialCard ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/reportSummary> ;
    sh:name "report summary" ;
    sh:description "Per-campaign report summary; see common ReportSummary" ;
    sh:node mailchimp:ReportSummaryShape ;
    sh:class mailchimp:ReportSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/deliveryStatus> ;
    sh:name "delivery status" ;
    sh:description "Delivery status; see common DeliveryStatus" ;
    sh:node mailchimp:DeliveryStatusShape ;
    sh:class mailchimp:DeliveryStatus ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/resendShortcutEligibility> ;
    sh:name "resend shortcut eligibility" ;
    sh:description "Eligibility flags for the four resend-shortcut variants" ;
    sh:node mailchimp:ResendShortcutEligibilityShape ;
    sh:class mailchimp:ResendShortcutEligibility ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/resendShortcutUsage> ;
    sh:name "resend shortcut usage" ;
    sh:description "Records of resend-shortcut campaigns spawned from this campaign" ;
    sh:node mailchimp:ResendShortcutUsageShape ;
    sh:class mailchimp:ResendShortcutUsage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaign/links> ;
    sh:name "links" ;
    sh:description "HATEOAS links for the campaign resource" ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Recipients
mailchimp:CampaignRecipientsShape a sh:NodeShape ;
  sh:targetClass mailchimp:CampaignRecipients ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignRecipients/listId> ;
    sh:name "list id" ;
    sh:description "Audience (list) ID this campaign sends to" ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignRecipients/listIsActive> ;
    sh:name "list is active" ;
    sh:description "Whether the target audience is currently active" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignRecipients/listName> ;
    sh:name "list name" ;
    sh:description "Display name of the target audience" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignRecipients/segmentText> ;
    sh:name "segment text" ;
    sh:description "HTML description of the targeted segment" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignRecipients/recipientCount> ;
    sh:name "recipient count" ;
    sh:description "Number of recipients targeted by this campaign" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignRecipients/segmentOpts> ;
    sh:name "segment opts" ;
    sh:description "Segment options applied to the audience" ;
    sh:node mailchimp:SegmentOptsShape ;
    sh:class mailchimp:SegmentOpts ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Segment Opts
mailchimp:SegmentOptsShape a sh:NodeShape ;
  sh:targetClass mailchimp:SegmentOpts ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSegmentOpts/savedSegmentId> ;
    sh:name "saved segment id" ;
    sh:description "Saved segment ID (integer variant)" ;
    sh:node mailchimp:SegmentShape ;
    sh:class mailchimp:Segment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSegmentOpts/prebuiltSegmentId> ;
    sh:name "prebuilt segment id" ;
    sh:description "Prebuilt segment ID (string variant). Modeled as plain string because heterogeneous Ref<Segment> across int and string key types cannot be expressed through dual scalars cleanly; resolve at consumer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSegmentOpts/match> ;
    sh:name "match" ;
    sh:description "Whether all or any conditions must match" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "any" "all" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSegmentOpts/conditions> ;
    sh:name "conditions" ;
    sh:description "Segment conditions (polymorphic, discriminator condition_type). Promoted to shared SegmentCondition base model in common.tsp." ;
    sh:node mailchimp:SegmentConditionShape ;
    sh:class mailchimp:SegmentCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Settings
mailchimp:CampaignSettingsShape a sh:NodeShape ;
  sh:targetClass mailchimp:CampaignSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/subjectLine> ;
    sh:name "subject line" ;
    sh:description "Subject line shown in the recipient's inbox" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/previewText> ;
    sh:name "preview text" ;
    sh:description "Preview snippet rendered in inbox clients alongside the subject" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/title> ;
    sh:name "title" ;
    sh:description "Internal title of the campaign (not shown to recipients)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/fromName> ;
    sh:name "from name" ;
    sh:description "Display name shown in the From header" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/replyTo> ;
    sh:name "reply to" ;
    sh:description "Reply-to email address" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/useConversation> ;
    sh:name "use conversation" ;
    sh:description "Whether to enable Mailchimp Conversation for inbound replies" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/toName> ;
    sh:name "to name" ;
    sh:description "Recipient name expression (merge-tag aware)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/folderId> ;
    sh:name "folder id" ;
    sh:description "Campaign folder ID. Dangling Ref<CampaignFolder>; CampaignFolder entity not in v1." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/authenticate> ;
    sh:name "authenticate" ;
    sh:description "Whether the campaign is authenticated (DKIM/SPF)" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/autoFooter> ;
    sh:name "auto footer" ;
    sh:description "Whether the default Mailchimp footer is automatically appended" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/inlineCss> ;
    sh:name "inline css" ;
    sh:description "Whether CSS is inlined automatically on send" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/autoTweet> ;
    sh:name "auto tweet" ;
    sh:description "Whether the campaign auto-tweets when sent" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/autoFbPost> ;
    sh:name "auto fb post" ;
    sh:description "Facebook page IDs to auto-post the campaign to" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/fbComments> ;
    sh:name "fb comments" ;
    sh:description "Whether Facebook comments are enabled on the campaign" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/timewarp> ;
    sh:name "timewarp" ;
    sh:description "Whether Timewarp delivery is enabled" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/templateId> ;
    sh:name "template id" ;
    sh:description "Template ID used to construct the campaign content. Dangling Ref<Template>; Template entity not in v1." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/dragAndDrop> ;
    sh:name "drag and drop" ;
    sh:description "Whether the campaign was built with the drag-and-drop editor" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/googleAnalytics> ;
    sh:name "google analytics" ;
    sh:description "Google Analytics campaign name (max 50 bytes)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.CampaignSettings/clicktale> ;
    sh:name "clicktale" ;
    sh:description "Clicktale campaign name (max 50 bytes)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Variate Settings
mailchimp:VariateSettingsShape a sh:NodeShape ;
  sh:targetClass mailchimp:VariateSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateSettings/winningCombinationId> ;
    sh:name "winning combination id" ;
    sh:description "ID of the combination chosen as the variate winner" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateSettings/winningCampaignId> ;
    sh:name "winning campaign id" ;
    sh:description "ID of the campaign sent to the remaining audience after a variate winner is selected" ;
    sh:class mailchimp:Campaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateSettings/winnerCriteria> ;
    sh:name "winner criteria" ;
    sh:description "Criterion used to pick the variate winner" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "opens" "clicks" "manual" "total_revenue" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateSettings/waitTime> ;
    sh:name "wait time" ;
    sh:description "Wait time before evaluating variate combinations" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateSettings/testSize> ;
    sh:name "test size" ;
    sh:description "Fraction of the audience used for the variate test" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateSettings/subjectLines> ;
    sh:name "subject lines" ;
    sh:description "Subject lines tested in this variate campaign" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateSettings/sendTimes> ;
    sh:name "send times" ;
    sh:description "Send times tested in this variate campaign. Local-clock format YYYY-MM-DD HH:MM:SS, not ISO 8601; deliberately string[] rather than utcDateTime[]." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateSettings/fromNames> ;
    sh:name "from names" ;
    sh:description "From names tested in this variate campaign" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateSettings/replyToAddresses> ;
    sh:name "reply to addresses" ;
    sh:description "Reply-to addresses tested in this variate campaign" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateSettings/contents> ;
    sh:name "contents" ;
    sh:description "Content blocks tested in this variate campaign" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateSettings/combinations> ;
    sh:name "combinations" ;
    sh:description "Resolved variate combinations and their per-arm metrics" ;
    sh:node mailchimp:VariateCombinationShape ;
    sh:class mailchimp:VariateCombination ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Variate Combination
mailchimp:VariateCombinationShape a sh:NodeShape ;
  sh:targetClass mailchimp:VariateCombination ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateCombination/id> ;
    sh:name "id" ;
    sh:description "Unique ID for this variate combination" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateCombination/subjectLine> ;
    sh:name "subject line" ;
    sh:description "Array index into Campaign.variateSettings.subject_lines; NOT a Ref." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateCombination/sendTime> ;
    sh:name "send time" ;
    sh:description "Array index into Campaign.variateSettings.send_times; NOT a Ref." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateCombination/fromName> ;
    sh:name "from name" ;
    sh:description "Array index into Campaign.variateSettings.from_names; NOT a Ref." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateCombination/replyTo> ;
    sh:name "reply to" ;
    sh:description "Array index into Campaign.variateSettings.reply_to_addresses; NOT a Ref." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateCombination/contentDescription> ;
    sh:name "content description" ;
    sh:description "Array index into Campaign.variateSettings.contents; NOT a Ref." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.VariateCombination/recipients> ;
    sh:name "recipients" ;
    sh:description "Array index recording which recipient slice received this combination; NOT a Ref." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Rss Opts
mailchimp:RssOptsShape a sh:NodeShape ;
  sh:targetClass mailchimp:RssOpts ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssOpts/feedUrl> ;
    sh:name "feed url" ;
    sh:description "RSS feed URL polled to drive the campaign" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssOpts/frequency> ;
    sh:name "frequency" ;
    sh:description "Polling cadence for the RSS feed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "daily" "weekly" "monthly" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssOpts/schedule> ;
    sh:name "schedule" ;
    sh:description "Detailed schedule controlling when the feed is polled" ;
    sh:node mailchimp:RssScheduleShape ;
    sh:class mailchimp:RssSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssOpts/lastSent> ;
    sh:name "last sent" ;
    sh:description "Timestamp of the most recent RSS send" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssOpts/constrainRssImg> ;
    sh:name "constrain rss img" ;
    sh:description "Whether to constrain RSS images to the template width" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Rss Schedule
mailchimp:RssScheduleShape a sh:NodeShape ;
  sh:targetClass mailchimp:RssSchedule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssSchedule/hour> ;
    sh:name "hour" ;
    sh:description "Hour of the day to send (0-23)" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssSchedule/dailySend> ;
    sh:name "daily send" ;
    sh:description "Per-day enable flags for daily RSS sends" ;
    sh:node mailchimp:RssDailySendShape ;
    sh:class mailchimp:RssDailySend ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssSchedule/weeklySendDay> ;
    sh:name "weekly send day" ;
    sh:description "Day of the week to send for weekly RSS campaigns" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "sunday" "monday" "tuesday" "wednesday" "thursday" "friday" "saturday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssSchedule/monthlySendDate> ;
    sh:name "monthly send date" ;
    sh:description "Day of the month to send for monthly RSS campaigns (0-31; 0 means the last day of the month)" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Rss Daily Send
mailchimp:RssDailySendShape a sh:NodeShape ;
  sh:targetClass mailchimp:RssDailySend ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssDailySend/sunday> ;
    sh:name "sunday" ;
    sh:description "Send on Sundays" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssDailySend/monday> ;
    sh:name "monday" ;
    sh:description "Send on Mondays" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssDailySend/tuesday> ;
    sh:name "tuesday" ;
    sh:description "Send on Tuesdays" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssDailySend/wednesday> ;
    sh:name "wednesday" ;
    sh:description "Send on Wednesdays" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssDailySend/thursday> ;
    sh:name "thursday" ;
    sh:description "Send on Thursdays" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssDailySend/friday> ;
    sh:name "friday" ;
    sh:description "Send on Fridays" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.RssDailySend/saturday> ;
    sh:name "saturday" ;
    sh:description "Send on Saturdays" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for ABSplit Opts
mailchimp:ABSplitOptionsShape a sh:NodeShape ;
  sh:targetClass mailchimp:ABSplitOptions ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/splitTest> ;
    sh:name "split test" ;
    sh:description "Which campaign attribute is being split-tested" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "subject" "from_name" "schedule" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/pickWinner> ;
    sh:name "pick winner" ;
    sh:description "How the winning variant is selected" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "opens" "clicks" "manual" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/waitUnits> ;
    sh:name "wait units" ;
    sh:description "Unit used for waitTime before evaluating the winner" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "hours" "days" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/waitTime> ;
    sh:name "wait time" ;
    sh:description "Time to wait before evaluating the winner" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/splitSize> ;
    sh:name "split size" ;
    sh:description "Percentage of the audience used for the test split" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/fromNameA> ;
    sh:name "from name a" ;
    sh:description "From name used for variant A" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/fromNameB> ;
    sh:name "from name b" ;
    sh:description "From name used for variant B" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/replyEmailA> ;
    sh:name "reply email a" ;
    sh:description "Reply-to email used for variant A" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/replyEmailB> ;
    sh:name "reply email b" ;
    sh:description "Reply-to email used for variant B" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/subjectA> ;
    sh:name "subject a" ;
    sh:description "Subject line used for variant A" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/subjectB> ;
    sh:name "subject b" ;
    sh:description "Subject line used for variant B" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/sendTimeA> ;
    sh:name "send time a" ;
    sh:description "Send time for variant A" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/sendTimeB> ;
    sh:name "send time b" ;
    sh:description "Send time for variant B" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ABSplitOpts/sendTimeWinner> ;
    sh:name "send time winner" ;
    sh:description "Send time for the winning variant. Local-clock string, not ISO 8601; deliberately string rather than utcDateTime." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Social Card
mailchimp:SocialCardShape a sh:NodeShape ;
  sh:targetClass mailchimp:SocialCard ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.SocialCard/imageUrl> ;
    sh:name "image url" ;
    sh:description "Image URL used for the social-card preview" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.SocialCard/description> ;
    sh:name "description" ;
    sh:description "Social-card description text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.SocialCard/title> ;
    sh:name "title" ;
    sh:description "Social-card title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Resend Shortcut Eligibility
mailchimp:ResendShortcutEligibilityShape a sh:NodeShape ;
  sh:targetClass mailchimp:ResendShortcutEligibility ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ResendShortcutEligibility/toNonOpeners> ;
    sh:name "to non openers" ;
    sh:description "Eligibility for resending to non-openers" ;
    sh:node mailchimp:ResendEligibilityEntryShape ;
    sh:class mailchimp:ResendEligibilityEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ResendShortcutEligibility/toNewSubscribers> ;
    sh:name "to new subscribers" ;
    sh:description "Eligibility for resending to new subscribers" ;
    sh:node mailchimp:ResendEligibilityEntryShape ;
    sh:class mailchimp:ResendEligibilityEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ResendShortcutEligibility/toNonClickers> ;
    sh:name "to non clickers" ;
    sh:description "Eligibility for resending to non-clickers" ;
    sh:node mailchimp:ResendEligibilityEntryShape ;
    sh:class mailchimp:ResendEligibilityEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ResendShortcutEligibility/toNonPurchasers> ;
    sh:name "to non purchasers" ;
    sh:description "Eligibility for resending to non-purchasers" ;
    sh:node mailchimp:ResendEligibilityEntryShape ;
    sh:class mailchimp:ResendEligibilityEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Resend Eligibility Entry
mailchimp:ResendEligibilityEntryShape a sh:NodeShape ;
  sh:targetClass mailchimp:ResendEligibilityEntry ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ResendEligibilityEntry/isEligible> ;
    sh:name "is eligible" ;
    sh:description "Whether this shortcut is eligible to be triggered" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ResendEligibilityEntry/reason> ;
    sh:name "reason" ;
    sh:description "Reason explaining why this shortcut is or is not eligible" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Resend Shortcut Usage
mailchimp:ResendShortcutUsageShape a sh:NodeShape ;
  sh:targetClass mailchimp:ResendShortcutUsage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ResendShortcutUsage/shortcutCampaigns> ;
    sh:name "shortcut campaigns" ;
    sh:description "Campaigns generated from resend shortcuts on this original campaign" ;
    sh:node mailchimp:ShortcutCampaignShape ;
    sh:class mailchimp:ShortcutCampaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ResendShortcutUsage/originalCampaign> ;
    sh:name "original campaign" ;
    sh:description "Original campaign that produced these resend shortcuts" ;
    sh:node mailchimp:OriginalShortcutCampaignShape ;
    sh:class mailchimp:OriginalShortcutCampaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Shortcut Campaign
mailchimp:ShortcutCampaignShape a sh:NodeShape ;
  sh:targetClass mailchimp:ShortcutCampaign ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ShortcutCampaign/id> ;
    sh:name "id" ;
    sh:description "Resend campaign ID" ;
    sh:class mailchimp:Campaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ShortcutCampaign/webId> ;
    sh:name "web id" ;
    sh:description "Display ID used in the Mailchimp web UI; not an entity reference" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ShortcutCampaign/shortcutType> ;
    sh:name "shortcut type" ;
    sh:description "Resend shortcut variant used to generate this campaign" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "non_openers" "new_subscribers" "non_clickers" "non_purchasers" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ShortcutCampaign/sendTime> ;
    sh:name "send time" ;
    sh:description "Send time of the resend campaign" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.ShortcutCampaign/status> ;
    sh:name "status" ;
    sh:description "Lifecycle status of the resend campaign" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "save" "paused" "schedule" "sending" "sent" "canceled" "canceling" "archived" ) ;
  ] .

# Shape for Original Shortcut Campaign
mailchimp:OriginalShortcutCampaignShape a sh:NodeShape ;
  sh:targetClass mailchimp:OriginalShortcutCampaign ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.OriginalShortcutCampaign/id> ;
    sh:name "id" ;
    sh:description "Original campaign ID" ;
    sh:class mailchimp:Campaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.OriginalShortcutCampaign/webId> ;
    sh:name "web id" ;
    sh:description "Display ID used in the Mailchimp web UI; not an entity reference" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.OriginalShortcutCampaign/title> ;
    sh:name "title" ;
    sh:description "Internal title of the original campaign" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Campaigns.OriginalShortcutCampaign/shortcutType> ;
    sh:name "shortcut type" ;
    sh:description "Resend shortcut variant used" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "non_openers" "new_subscribers" "non_clickers" "non_purchasers" ) ;
  ] .

# Shape for Campaign Report
mailchimp:CampaignReportShape a sh:NodeShape ;
  sh:targetClass mailchimp:CampaignReport ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/id> ;
    sh:name "id" ;
    sh:description "Campaign report ID. Equal to the corresponding Campaign.id verbatim (1:1 keying). Acts as @key for this entity AND as Ref<Campaign>." ;
    sh:class mailchimp:Campaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/campaignTitle> ;
    sh:name "campaign title" ;
    sh:description "Title of the source campaign" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/type> ;
    sh:name "type" ;
    sh:description "Campaign report type. Wire formats differ from Campaign.type (hyphen/underscore drift; extra `automation` and `auto` values)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "regular" "plain-text" "ab_split" "rss" "variate" "automation" "auto" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/listId> ;
    sh:name "list id" ;
    sh:description "Audience (list) the source campaign sent to" ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/listIsActive> ;
    sh:name "list is active" ;
    sh:description "Whether the target audience is currently active" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/listName> ;
    sh:name "list name" ;
    sh:description "Display name of the target audience" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/subjectLine> ;
    sh:name "subject line" ;
    sh:description "Subject line of the source campaign" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/previewText> ;
    sh:name "preview text" ;
    sh:description "Preview text of the source campaign" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/emailsSent> ;
    sh:name "emails sent" ;
    sh:description "Total number of emails sent" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/abuseReports> ;
    sh:name "abuse reports" ;
    sh:description "Total number of abuse reports" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/unsubscribed> ;
    sh:name "unsubscribed" ;
    sh:description "Total number of unsubscribes" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/sendTime> ;
    sh:name "send time" ;
    sh:description "Timestamp when the campaign was sent" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/rssLastSend> ;
    sh:name "rss last send" ;
    sh:description "Timestamp of the most recent RSS send for RSS campaigns" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/bounces> ;
    sh:name "bounces" ;
    sh:description "Bounce breakdown" ;
    sh:node mailchimp:BouncesShape ;
    sh:class mailchimp:Bounces ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/forwards> ;
    sh:name "forwards" ;
    sh:description "Forward counts" ;
    sh:node mailchimp:ForwardsShape ;
    sh:class mailchimp:Forwards ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/opens> ;
    sh:name "opens" ;
    sh:description "Open counts, rates, and last-open timestamp" ;
    sh:node mailchimp:OpensShape ;
    sh:class mailchimp:Opens ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/clicks> ;
    sh:name "clicks" ;
    sh:description "Click counts, rates, and last-click timestamp" ;
    sh:node mailchimp:ClicksShape ;
    sh:class mailchimp:Clicks ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/facebookLikes> ;
    sh:name "facebook likes" ;
    sh:description "Facebook likes attributable to the campaign" ;
    sh:node mailchimp:FacebookLikesShape ;
    sh:class mailchimp:FacebookLikes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/industryStats> ;
    sh:name "industry stats" ;
    sh:description "Industry benchmark rates" ;
    sh:node mailchimp:IndustryStatsShape ;
    sh:class mailchimp:IndustryStats ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/listStats> ;
    sh:name "list stats" ;
    sh:description "Audience-level rate snapshot" ;
    sh:node mailchimp:ReportListStatsShape ;
    sh:class mailchimp:ReportListStats ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/abSplit> ;
    sh:name "ab split" ;
    sh:description "Legacy A/B split test arm metrics" ;
    sh:node mailchimp:ABSplitResultShape ;
    sh:class mailchimp:ABSplitResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/timewarp> ;
    sh:name "timewarp" ;
    sh:description "Per-timezone Timewarp delivery slices" ;
    sh:node mailchimp:TimewarpEntryShape ;
    sh:class mailchimp:TimewarpEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/timeseries> ;
    sh:name "timeseries" ;
    sh:description "Send/open/click counts bucketed over time" ;
    sh:node mailchimp:TimeseriesEntryShape ;
    sh:class mailchimp:TimeseriesEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/shareReport> ;
    sh:name "share report" ;
    sh:description "Shareable URL and password for the campaign report" ;
    sh:node mailchimp:ShareReportShape ;
    sh:class mailchimp:ShareReport ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/ecommerce> ;
    sh:name "ecommerce" ;
    sh:description "Ecommerce totals attributed to the campaign" ;
    sh:node mailchimp:EcommerceReportShape ;
    sh:class mailchimp:EcommerceReport ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/deliveryStatus> ;
    sh:name "delivery status" ;
    sh:description "Delivery status; see common DeliveryStatus" ;
    sh:node mailchimp:DeliveryStatusShape ;
    sh:class mailchimp:DeliveryStatus ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignReport/links> ;
    sh:name "links" ;
    sh:description "HATEOAS links for the campaign report resource" ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Bounces
mailchimp:BouncesShape a sh:NodeShape ;
  sh:targetClass mailchimp:Bounces ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Bounces/hardBounces> ;
    sh:name "hard bounces" ;
    sh:description "Number of hard bounces" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Bounces/softBounces> ;
    sh:name "soft bounces" ;
    sh:description "Number of soft bounces" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Bounces/syntaxErrors> ;
    sh:name "syntax errors" ;
    sh:description "Number of syntax errors in recipient addresses" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Forwards
mailchimp:ForwardsShape a sh:NodeShape ;
  sh:targetClass mailchimp:Forwards ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Forwards/forwardsCount> ;
    sh:name "forwards count" ;
    sh:description "Number of times the campaign was forwarded" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Forwards/forwardsOpens> ;
    sh:name "forwards opens" ;
    sh:description "Number of opens generated by forwarded copies" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Opens
mailchimp:OpensShape a sh:NodeShape ;
  sh:targetClass mailchimp:Opens ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Opens/opensTotal> ;
    sh:name "opens total" ;
    sh:description "Total number of opens (including proxy opens)" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Opens/proxyExcludedOpens> ;
    sh:name "proxy excluded opens" ;
    sh:description "Total opens excluding privacy-proxy-generated opens" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Opens/uniqueOpens> ;
    sh:name "unique opens" ;
    sh:description "Number of unique recipients who opened the campaign" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Opens/proxyExcludedUniqueOpens> ;
    sh:name "proxy excluded unique opens" ;
    sh:description "Unique opens excluding privacy-proxy-generated opens" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Opens/openRate> ;
    sh:name "open rate" ;
    sh:description "Open rate (opens / emails sent)" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Opens/proxyExcludedOpenRate> ;
    sh:name "proxy excluded open rate" ;
    sh:description "Open rate excluding privacy-proxy-generated opens" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Opens/lastOpen> ;
    sh:name "last open" ;
    sh:description "Timestamp of the most recent open" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Clicks
mailchimp:ClicksShape a sh:NodeShape ;
  sh:targetClass mailchimp:Clicks ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Clicks/clicksTotal> ;
    sh:name "clicks total" ;
    sh:description "Total number of clicks" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Clicks/uniqueClicks> ;
    sh:name "unique clicks" ;
    sh:description "Number of unique clicks" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Clicks/uniqueSubscriberClicks> ;
    sh:name "unique subscriber clicks" ;
    sh:description "Number of unique subscribers who clicked" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Clicks/clickRate> ;
    sh:name "click rate" ;
    sh:description "Click rate (clicks / emails sent)" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Clicks/lastClick> ;
    sh:name "last click" ;
    sh:description "Timestamp of the most recent click" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Facebook Likes
mailchimp:FacebookLikesShape a sh:NodeShape ;
  sh:targetClass mailchimp:FacebookLikes ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.FacebookLikes/recipientLikes> ;
    sh:name "recipient likes" ;
    sh:description "Number of likes from recipients of this campaign" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.FacebookLikes/uniqueLikes> ;
    sh:name "unique likes" ;
    sh:description "Number of unique users who liked the campaign on Facebook" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.FacebookLikes/facebookLikes> ;
    sh:name "facebook likes" ;
    sh:description "Total Facebook likes attributed to the campaign" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Industry Stats
mailchimp:IndustryStatsShape a sh:NodeShape ;
  sh:targetClass mailchimp:IndustryStats ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.IndustryStats/type> ;
    sh:name "type" ;
    sh:description "Industry segment label" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.IndustryStats/openRate> ;
    sh:name "open rate" ;
    sh:description "Industry-average open rate" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.IndustryStats/clickRate> ;
    sh:name "click rate" ;
    sh:description "Industry-average click rate" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.IndustryStats/bounceRate> ;
    sh:name "bounce rate" ;
    sh:description "Industry-average bounce rate" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.IndustryStats/unopenRate> ;
    sh:name "unopen rate" ;
    sh:description "Industry-average unopen rate" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.IndustryStats/unsubRate> ;
    sh:name "unsub rate" ;
    sh:description "Industry-average unsubscribe rate" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.IndustryStats/abuseRate> ;
    sh:name "abuse rate" ;
    sh:description "Industry-average abuse-report rate" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Report List Stats
mailchimp:ReportListStatsShape a sh:NodeShape ;
  sh:targetClass mailchimp:ReportListStats ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ReportListStats/subRate> ;
    sh:name "sub rate" ;
    sh:description "Audience subscribe rate" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ReportListStats/unsubRate> ;
    sh:name "unsub rate" ;
    sh:description "Audience unsubscribe rate" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ReportListStats/openRate> ;
    sh:name "open rate" ;
    sh:description "Audience open rate" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ReportListStats/proxyExcludedOpenRate> ;
    sh:name "proxy excluded open rate" ;
    sh:description "Audience open rate excluding privacy-proxy-generated opens" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ReportListStats/clickRate> ;
    sh:name "click rate" ;
    sh:description "Audience click rate" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for ABSplit Result
mailchimp:ABSplitResultShape a sh:NodeShape ;
  sh:targetClass mailchimp:ABSplitResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ABSplitResult/a> ;
    sh:name "a" ;
    sh:description "Metrics for variant A" ;
    sh:node mailchimp:ABSplitArmShape ;
    sh:class mailchimp:ABSplitArm ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ABSplitResult/b> ;
    sh:name "b" ;
    sh:description "Metrics for variant B" ;
    sh:node mailchimp:ABSplitArmShape ;
    sh:class mailchimp:ABSplitArm ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for ABSplit Arm
mailchimp:ABSplitArmShape a sh:NodeShape ;
  sh:targetClass mailchimp:ABSplitArm ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ABSplitArm/bounces> ;
    sh:name "bounces" ;
    sh:description "Number of bounces for this arm" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ABSplitArm/abuseReports> ;
    sh:name "abuse reports" ;
    sh:description "Number of abuse reports for this arm" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ABSplitArm/unsubs> ;
    sh:name "unsubs" ;
    sh:description "Number of unsubscribes for this arm" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ABSplitArm/recipientClicks> ;
    sh:name "recipient clicks" ;
    sh:description "Total recipient clicks for this arm" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ABSplitArm/forwards> ;
    sh:name "forwards" ;
    sh:description "Number of forwards for this arm" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ABSplitArm/forwardsOpens> ;
    sh:name "forwards opens" ;
    sh:description "Number of opens from forwarded copies for this arm" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ABSplitArm/opens> ;
    sh:name "opens" ;
    sh:description "Number of opens for this arm" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ABSplitArm/uniqueOpens> ;
    sh:name "unique opens" ;
    sh:description "Number of unique opens for this arm" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ABSplitArm/lastOpen> ;
    sh:name "last open" ;
    sh:description "Timestamp of the last open in this arm. The spec does not declare a datetime format on this field; deliberately string." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Timewarp Entry
mailchimp:TimewarpEntryShape a sh:NodeShape ;
  sh:targetClass mailchimp:TimewarpEntry ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimewarpEntry/gmtOffset> ;
    sh:name "gmt offset" ;
    sh:description "GMT offset (in hours) for this delivery slice" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimewarpEntry/opens> ;
    sh:name "opens" ;
    sh:description "Number of opens in this slice" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimewarpEntry/uniqueOpens> ;
    sh:name "unique opens" ;
    sh:description "Number of unique opens in this slice" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimewarpEntry/clicks> ;
    sh:name "clicks" ;
    sh:description "Number of clicks in this slice" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimewarpEntry/uniqueClicks> ;
    sh:name "unique clicks" ;
    sh:description "Number of unique clicks in this slice" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimewarpEntry/bounces> ;
    sh:name "bounces" ;
    sh:description "Number of bounces in this slice" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimewarpEntry/lastOpen> ;
    sh:name "last open" ;
    sh:description "Timestamp of the last open in this slice" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimewarpEntry/lastClick> ;
    sh:name "last click" ;
    sh:description "Timestamp of the last click in this slice" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Timeseries Entry
mailchimp:TimeseriesEntryShape a sh:NodeShape ;
  sh:targetClass mailchimp:TimeseriesEntry ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimeseriesEntry/timestamp> ;
    sh:name "timestamp" ;
    sh:description "Timestamp marking the start of this time-series bucket" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimeseriesEntry/emailsSent> ;
    sh:name "emails sent" ;
    sh:description "Number of emails sent during this bucket" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimeseriesEntry/uniqueOpens> ;
    sh:name "unique opens" ;
    sh:description "Number of unique opens recorded during this bucket" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimeseriesEntry/proxyExcludedUniqueOpens> ;
    sh:name "proxy excluded unique opens" ;
    sh:description "Unique opens during this bucket excluding privacy-proxy-generated opens" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.TimeseriesEntry/recipientsClicks> ;
    sh:name "recipients clicks" ;
    sh:description "Number of recipient clicks during this bucket" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Share Report
mailchimp:ShareReportShape a sh:NodeShape ;
  sh:targetClass mailchimp:ShareReport ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ShareReport/shareUrl> ;
    sh:name "share url" ;
    sh:description "Shareable URL for the campaign report" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.ShareReport/sharePassword> ;
    sh:name "share password" ;
    sh:description "Password protecting the share URL" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ecommerce
mailchimp:EcommerceReportShape a sh:NodeShape ;
  sh:targetClass mailchimp:EcommerceReport ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Ecommerce/totalOrders> ;
    sh:name "total orders" ;
    sh:description "Total ecommerce orders attributed to the campaign" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Ecommerce/totalSpent> ;
    sh:name "total spent" ;
    sh:description "Total spent by attributed orders" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Ecommerce/totalRevenue> ;
    sh:name "total revenue" ;
    sh:description "Total revenue attributed to the campaign" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Reports.Ecommerce/currencyCode> ;
    sh:name "currency code" ;
    sh:description "ISO 4217 currency code for the ecommerce totals" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Automation
mailchimp:AutomationShape a sh:NodeShape ;
  sh:targetClass mailchimp:Automation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automation/id> ;
    sh:name "id" ;
    sh:description "Opaque automation workflow ID." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automation/createTime> ;
    sh:name "create time" ;
    sh:description "Timestamp when the workflow was created." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automation/startTime> ;
    sh:name "start time" ;
    sh:description "Timestamp when the workflow was last started (set to sending)." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automation/status> ;
    sh:name "status" ;
    sh:description "Lifecycle state of the workflow." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "save" "paused" "sending" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automation/emailsSent> ;
    sh:name "emails sent" ;
    sh:description "Total emails dispatched across all steps of the workflow." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automation/recipients> ;
    sh:name "recipients" ;
    sh:description "Recipient targeting (parent list and optional segment)." ;
    sh:node mailchimp:AutomationRecipientsShape ;
    sh:class mailchimp:AutomationRecipients ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automation/settings> ;
    sh:name "settings" ;
    sh:description "Sender, footer, and content toggles applied to every step." ;
    sh:node mailchimp:AutomationSettingsShape ;
    sh:class mailchimp:AutomationSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automation/tracking> ;
    sh:name "tracking" ;
    sh:description "Engagement-tracking toggles shared with regular campaigns." ;
    sh:node mailchimp:TrackingConfigurationShape ;
    sh:class mailchimp:TrackingConfiguration ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automation/triggerSettings> ;
    sh:name "trigger settings" ;
    sh:description "Trigger recipe and runtime constraints. The nested `workflowType` is the single required field across the entire Automation response shape per Mailchimp's OpenAPI; the wrapper is therefore non-optional so that requirement is reachable on the wire." ;
    sh:node mailchimp:TriggerSettingsShape ;
    sh:class mailchimp:TriggerSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automation/reportSummary> ;
    sh:name "report summary" ;
    sh:description "Aggregate engagement summary (without the e-commerce sub-block)." ;
    sh:node mailchimp:ReportSummaryShape ;
    sh:class mailchimp:ReportSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automation/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for this resource." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Automation Recipients
mailchimp:AutomationRecipientsShape a sh:NodeShape ;
  sh:targetClass mailchimp:AutomationRecipients ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationRecipients/listId> ;
    sh:name "list id" ;
    sh:description "Parent audience the workflow runs against." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationRecipients/listIsActive> ;
    sh:name "list is active" ;
    sh:description "Whether the parent list is currently active." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationRecipients/listName> ;
    sh:name "list name" ;
    sh:description "Display name of the parent list." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationRecipients/segmentOpts> ;
    sh:name "segment opts" ;
    sh:description "Segment definition narrowing the recipient set." ;
    sh:node mailchimp:AutomationSegmentOptsShape ;
    sh:class mailchimp:AutomationSegmentOpts ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationRecipients/storeId> ;
    sh:name "store id" ;
    sh:description "Connected store ID. Dangling Ref<Store>; not in v1." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Automation Segment Opts
mailchimp:AutomationSegmentOptsShape a sh:NodeShape ;
  sh:targetClass mailchimp:AutomationSegmentOpts ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationSegmentOpts/savedSegmentId> ;
    sh:name "saved segment id" ;
    sh:description "Saved-segment integer ID referenced by this automation." ;
    sh:node mailchimp:SegmentShape ;
    sh:class mailchimp:Segment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationSegmentOpts/match> ;
    sh:name "match" ;
    sh:description "Combinator across `conditions`." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "any" "all" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationSegmentOpts/conditions> ;
    sh:name "conditions" ;
    sh:description "Ordered list of segment conditions evaluated against the parent list.\nConcrete shape is variant-defined; see the `SegmentCondition` stub in\n`common.tsp` for the discriminator contract." ;
    sh:node mailchimp:SegmentConditionShape ;
    sh:class mailchimp:SegmentCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Automation Settings
mailchimp:AutomationSettingsShape a sh:NodeShape ;
  sh:targetClass mailchimp:AutomationSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationSettings/title> ;
    sh:name "title" ;
    sh:description "Internal title shown in the Mailchimp UI." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationSettings/fromName> ;
    sh:name "from name" ;
    sh:description "Display \"from\" name presented to recipients." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationSettings/replyTo> ;
    sh:name "reply to" ;
    sh:description "Reply-to address attached to every send in the workflow." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationSettings/toName> ;
    sh:name "to name" ;
    sh:description "Personalised \"to\" name template (e.g. `*|FNAME|*`)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationSettings/useConversation> ;
    sh:name "use conversation" ;
    sh:description "Convert replies to recipients into a Mailchimp Conversation thread." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationSettings/authenticate> ;
    sh:name "authenticate" ;
    sh:description "Apply Mailchimp's authentication (SPF/DKIM) on outbound mail." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationSettings/autoFooter> ;
    sh:name "auto footer" ;
    sh:description "Append the standard Mailchimp footer to the body." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationSettings/inlineCss> ;
    sh:name "inline css" ;
    sh:description "Inline CSS on send to maximise email-client compatibility." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Trigger Settings
mailchimp:TriggerSettingsShape a sh:NodeShape ;
  sh:targetClass mailchimp:TriggerSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.TriggerSettings/workflowType> ;
    sh:name "workflow type" ;
    sh:description "Built-in workflow recipe selected for this automation. Required by\nthe Mailchimp spec." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "abandonedBrowse" "abandonedCart" "api" "bestCustomers" "categoryFollowup" "dateAdded" "emailFollowup" "emailSeries" "groupAdd" "groupRemove" "mandrill" "productFollowup" "purchaseFollowup" "recurringEvent" "specialEvent" "visitUrl" "welcomeSeries" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.TriggerSettings/workflowTitle> ;
    sh:name "workflow title" ;
    sh:description "Display title of the workflow recipe." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.TriggerSettings/runtime> ;
    sh:name "runtime" ;
    sh:description "Schedule constraints restricting when the workflow fires." ;
    sh:node mailchimp:AutomationRuntimeShape ;
    sh:class mailchimp:AutomationRuntime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.TriggerSettings/workflowEmailsCount> ;
    sh:name "workflow emails count" ;
    sh:description "Count of email steps configured under this workflow." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Automation Runtime
mailchimp:AutomationRuntimeShape a sh:NodeShape ;
  sh:targetClass mailchimp:AutomationRuntime ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationRuntime/days> ;
    sh:name "days" ;
    sh:description "Weekdays on which the workflow may fire. Empty array means the\ntrigger fires on any day." ;
    sh:datatype xsd:string ;
    sh:in ( "sunday" "monday" "tuesday" "wednesday" "thursday" "friday" "saturday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationRuntime/hours> ;
    sh:name "hours" ;
    sh:description "Daily run-window configuration." ;
    sh:node mailchimp:AutomationRuntimeHoursShape ;
    sh:class mailchimp:AutomationRuntimeHours ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Automation Runtime Hours
mailchimp:AutomationRuntimeHoursShape a sh:NodeShape ;
  sh:targetClass mailchimp:AutomationRuntimeHours ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Automations.AutomationRuntimeHours/type> ;
    sh:name "type" ;
    sh:description "How the daily run-window is interpreted. Required by the Mailchimp\nspec on every runtime block; flagged as `required: true` alongside\nthe parent `workflowType`." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "send_asap" "send_between" "send_at" ) ;
  ] .

# Shape for Email Activity
mailchimp:EmailActivityShape a sh:NodeShape ;
  sh:targetClass mailchimp:EmailActivity ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivity/emails> ;
    sh:name "emails" ;
    sh:description "Per-recipient activity envelopes for this campaign." ;
    sh:node mailchimp:EmailActivityRecipientShape ;
    sh:class mailchimp:EmailActivityRecipient ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivity/campaignId> ;
    sh:name "campaign id" ;
    sh:description "Parent campaign the report belongs to." ;
    sh:class mailchimp:Campaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivity/listId> ;
    sh:name "list id" ;
    sh:description "Parent audience the campaign sent to." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivity/totalItems> ;
    sh:name "total items" ;
    sh:description "Total recipient rows available across all pages." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivity/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for this report." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Email Activity Recipient
mailchimp:EmailActivityRecipientShape a sh:NodeShape ;
  sh:targetClass mailchimp:EmailActivityRecipient ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivities.EmailActivityRecipient/campaignId> ;
    sh:name "campaign id" ;
    sh:description "Parent campaign this activity row belongs to." ;
    sh:class mailchimp:Campaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivities.EmailActivityRecipient/listId> ;
    sh:name "list id" ;
    sh:description "Parent audience the recipient is subscribed to." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivities.EmailActivityRecipient/listIsActive> ;
    sh:name "list is active" ;
    sh:description "Whether the parent list is currently active." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivities.EmailActivityRecipient/emailId> ;
    sh:name "email id" ;
    sh:description "Member subscriber-hash (MD5 of the lowercased email address) — same\nvalue as `Member.id`. Used to join activity back to the Member\nresource." ;
    sh:node mailchimp:MemberShape ;
    sh:class mailchimp:Member ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivities.EmailActivityRecipient/emailAddress> ;
    sh:name "email address" ;
    sh:description "Recipient email address." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivities.EmailActivityRecipient/activity> ;
    sh:name "activity" ;
    sh:description "Chronological list of per-action events for this recipient. Capped at\n1000 opens + 1000 clicks per recipient per campaign." ;
    sh:node mailchimp:EmailActivityEntryShape ;
    sh:class mailchimp:EmailActivityEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Email Activity Entry
mailchimp:EmailActivityEntryShape a sh:NodeShape ;
  sh:targetClass mailchimp:EmailActivityEntry ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivities.EmailActivityEntry/action> ;
    sh:name "action" ;
    sh:description "Which action this row records." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "open" "click" "bounce" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivities.EmailActivityEntry/type> ;
    sh:name "type" ;
    sh:description "Bounce sub-classification. Set only when `action == bounce`." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "hard" "soft" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivities.EmailActivityEntry/timestamp> ;
    sh:name "timestamp" ;
    sh:description "Timestamp at which the action was recorded." ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivities.EmailActivityEntry/url> ;
    sh:name "url" ;
    sh:description "Destination URL of the click. Set only when `action == click`." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.EmailActivities.EmailActivityEntry/ip> ;
    sh:name "ip" ;
    sh:description "Originating IP address. Best-effort; may be empty for proxy opens." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for List Webhook
mailchimp:ListWebhookShape a sh:NodeShape ;
  sh:targetClass mailchimp:ListWebhook ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhook/id> ;
    sh:name "id" ;
    sh:description "Opaque webhook subscription ID assigned by Mailchimp on create." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhook/url> ;
    sh:name "url" ;
    sh:description "Callback URL Mailchimp POSTs form-encoded events to." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhook/events> ;
    sh:name "events" ;
    sh:description "Event-type subscription mask (subscribe, unsubscribe, profile, upemail, cleaned, campaign)." ;
    sh:node mailchimp:WebhookEventsShape ;
    sh:class mailchimp:WebhookEvents ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhook/sources> ;
    sh:name "sources" ;
    sh:description "Origin-source filter mask (user, admin, api)." ;
    sh:node mailchimp:WebhookSourcesShape ;
    sh:class mailchimp:WebhookSources ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhook/listId> ;
    sh:name "list id" ;
    sh:description "Parent audience the webhook is attached to." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhook/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for this resource." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Webhook Events
mailchimp:WebhookEventsShape a sh:NodeShape ;
  sh:targetClass mailchimp:WebhookEvents ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhooks.WebhookEvents/subscribe> ;
    sh:name "subscribe" ;
    sh:description "Deliver a callback when a subscriber opts in." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhooks.WebhookEvents/unsubscribe> ;
    sh:name "unsubscribe" ;
    sh:description "Deliver a callback when a subscriber opts out." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhooks.WebhookEvents/profile> ;
    sh:name "profile" ;
    sh:description "Deliver a callback when a subscriber's profile (merge fields) changes." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhooks.WebhookEvents/upemail> ;
    sh:name "upemail" ;
    sh:description "Deliver a callback when a subscriber changes their email address." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhooks.WebhookEvents/cleaned> ;
    sh:name "cleaned" ;
    sh:description "Deliver a callback when an address is cleaned (bounced/removed)." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhooks.WebhookEvents/campaign> ;
    sh:name "campaign" ;
    sh:description "Deliver a callback when a campaign send completes." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Webhook Sources
mailchimp:WebhookSourcesShape a sh:NodeShape ;
  sh:targetClass mailchimp:WebhookSources ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhooks.WebhookSources/user> ;
    sh:name "user" ;
    sh:description "Deliver events triggered by the subscriber themselves." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhooks.WebhookSources/admin> ;
    sh:name "admin" ;
    sh:description "Deliver events triggered by operators inside the Mailchimp UI." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhooks.WebhookSources/api> ;
    sh:name "api" ;
    sh:description "Deliver events triggered programmatically through the API." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Interest
mailchimp:InterestShape a sh:NodeShape ;
  sh:targetClass mailchimp:Interest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Interest/id> ;
    sh:name "id" ;
    sh:description "Opaque Interest ID. Appears as the key in `Member.interests`." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Interest/name> ;
    sh:name "name" ;
    sh:description "Display name shown in subscribe forms and the admin UI." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Interest/categoryId> ;
    sh:name "category id" ;
    sh:description "Parent interest category that groups this interest." ;
    sh:node mailchimp:InterestCategoryShape ;
    sh:class mailchimp:InterestCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Interest Category
mailchimp:InterestCategoryShape a sh:NodeShape ;
  sh:targetClass mailchimp:InterestCategory ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.InterestCategory/id> ;
    sh:name "id" ;
    sh:description "Opaque interest-category ID." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.InterestCategory/listId> ;
    sh:name "list id" ;
    sh:description "Parent list that owns the interest category." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.InterestCategory/title> ;
    sh:name "title" ;
    sh:description "Display title shown above the interest checkboxes." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.InterestCategory/type> ;
    sh:name "type" ;
    sh:description "Presentation style for the category on subscribe forms." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "checkboxes" "dropdown" "radio" "hidden" ) ;
  ] .

# Shape for List List Response
mailchimp:ListListResponseShape a sh:NodeShape ;
  sh:targetClass mailchimp:ListListResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListListResponse/lists> ;
    sh:name "lists" ;
    sh:description "Audiences in the current page." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListListResponse/totalItems> ;
    sh:name "total items" ;
    sh:description "Total number of audiences on the account (across all pages)." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListListResponse/constraints> ;
    sh:name "constraints" ;
    sh:description "Per-account audience-count limits applied to this response." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListListResponse/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for the collection." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for List Batch Members Input
mailchimp:ListBatchMembersInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:ListBatchMembersInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersInput/members> ;
    sh:name "members" ;
    sh:description "Member descriptors to subscribe, update, or unsubscribe in bulk." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersInput/syncTags> ;
    sh:name "sync tags" ;
    sh:description "Replace each member's tag set with the tags supplied in the payload." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersInput/updateExisting> ;
    sh:name "update existing" ;
    sh:description "Update members already on the list instead of skipping duplicates." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for List Batch Members Response
mailchimp:ListBatchMembersResponseShape a sh:NodeShape ;
  sh:targetClass mailchimp:ListBatchMembersResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersResponse/newMembers> ;
    sh:name "new members" ;
    sh:description "Members created by this batch." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersResponse/updatedMembers> ;
    sh:name "updated members" ;
    sh:description "Members updated by this batch." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersResponse/errors> ;
    sh:name "errors" ;
    sh:description "Per-row error reports for rejected members." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/inline/Mailchimp.ListBatchMembersResponse/errorsShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/inline/Mailchimp.ListBatchMembersResponse/errors> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersResponse/totalCreated> ;
    sh:name "total created" ;
    sh:description "Number of members created in this batch." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersResponse/totalUpdated> ;
    sh:name "total updated" ;
    sh:description "Number of members updated in this batch." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersResponse/errorCount> ;
    sh:name "error count" ;
    sh:description "Number of members rejected by this batch." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersResponse/listId> ;
    sh:name "list id" ;
    sh:description "Parent audience identifier." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for List Input
mailchimp:ListInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:ListInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListInput/name> ;
    sh:name "name" ;
    sh:description "Human-readable audience name." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListInput/contact> ;
    sh:name "contact" ;
    sh:description "Audience postal contact information shown in campaign footers (CAN-SPAM)." ;
    sh:node mailchimp:ListContactShape ;
    sh:class mailchimp:ListContact ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListInput/permissionReminder> ;
    sh:name "permission reminder" ;
    sh:description "Permission reminder displayed at the bottom of campaigns sent to this audience." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListInput/useArchiveBar> ;
    sh:name "use archive bar" ;
    sh:description "Show the Mailchimp archive bar in campaigns sent to this audience." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListInput/campaignDefaults> ;
    sh:name "campaign defaults" ;
    sh:description "Default `from_name`, `from_email`, `subject`, and `language` for new campaigns." ;
    sh:node mailchimp:ListCampaignDefaultsShape ;
    sh:class mailchimp:ListCampaignDefaults ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListInput/notifyOnSubscribe> ;
    sh:name "notify on subscribe" ;
    sh:description "Email address that receives notifications when someone subscribes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListInput/notifyOnUnsubscribe> ;
    sh:name "notify on unsubscribe" ;
    sh:description "Email address that receives notifications when someone unsubscribes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListInput/emailTypeOption> ;
    sh:name "email type option" ;
    sh:description "Allow subscribers to choose between HTML and plain-text emails." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListInput/doubleOptin> ;
    sh:name "double optin" ;
    sh:description "Require subscribers to confirm via opt-in email." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListInput/marketingPermissions> ;
    sh:name "marketing permissions" ;
    sh:description "Surface GDPR-style marketing permissions on the signup form." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Member List Response
mailchimp:MemberListResponseShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberListResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberListResponse/members> ;
    sh:name "members" ;
    sh:description "Members in the current page." ;
    sh:node mailchimp:MemberShape ;
    sh:class mailchimp:Member ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberListResponse/listId> ;
    sh:name "list id" ;
    sh:description "Parent audience identifier." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberListResponse/totalItems> ;
    sh:name "total items" ;
    sh:description "Total number of members on the audience (unfiltered by pagination)." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberListResponse/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for the collection." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Member Create Input
mailchimp:MemberCreateInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberCreateInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/emailAddress> ;
    sh:name "email address" ;
    sh:description "Member email address. The MD5 of the lowercased email becomes the `subscriber_hash` used as `Member.id` and as the path parameter for per-member endpoints." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/emailType> ;
    sh:name "email type" ;
    sh:description "Preferred email format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "html" "text" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/status> ;
    sh:name "status" ;
    sh:description "Initial subscription status (`subscribed`, `pending`, `unsubscribed`, `cleaned`, `transactional`)." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "subscribed" "unsubscribed" "cleaned" "pending" "transactional" "archived" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/mergeFields> ;
    sh:name "merge fields" ;
    sh:description "Map of merge-tag names to scalar values (e.g. `FNAME`, `LNAME`)." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/interests> ;
    sh:name "interests" ;
    sh:description "Map of interest IDs to boolean subscription flags." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/language> ;
    sh:name "language" ;
    sh:description "Subscriber language code (ISO 639-1)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/vip> ;
    sh:name "vip" ;
    sh:description "Designate the subscriber as VIP." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/location> ;
    sh:name "location" ;
    sh:description "Subscriber geo location (`latitude`, `longitude`)." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/marketingPermissions> ;
    sh:name "marketing permissions" ;
    sh:description "Per-permission consent records (GDPR-style)." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/ipSignup> ;
    sh:name "ip signup" ;
    sh:description "Source IP recorded at signup." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/timestampSignup> ;
    sh:name "timestamp signup" ;
    sh:description "Signup timestamp." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/ipOpt> ;
    sh:name "ip opt" ;
    sh:description "Source IP recorded at confirmed opt-in." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/timestampOpt> ;
    sh:name "timestamp opt" ;
    sh:description "Confirmed opt-in timestamp." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/tags> ;
    sh:name "tags" ;
    sh:description "Tag names to apply at create time. Mailchimp creates missing tags." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Member Upsert Input
mailchimp:MemberUpsertInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberUpsertInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/emailAddress> ;
    sh:name "email address" ;
    sh:description "Member email address. Required only when upserting a new member." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/statusIfNew> ;
    sh:name "status if new" ;
    sh:description "Status to assign when the member does not yet exist on the audience." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/emailType> ;
    sh:name "email type" ;
    sh:description "Preferred email format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "html" "text" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/status> ;
    sh:name "status" ;
    sh:description "Current subscription status. Ignored when creating a new member (use `status_if_new`)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/mergeFields> ;
    sh:name "merge fields" ;
    sh:description "Map of merge-tag names to scalar values." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/interests> ;
    sh:name "interests" ;
    sh:description "Map of interest IDs to boolean subscription flags." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/language> ;
    sh:name "language" ;
    sh:description "Subscriber language code (ISO 639-1)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/vip> ;
    sh:name "vip" ;
    sh:description "Designate the subscriber as VIP." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/location> ;
    sh:name "location" ;
    sh:description "Subscriber geo location (`latitude`, `longitude`)." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/marketingPermissions> ;
    sh:name "marketing permissions" ;
    sh:description "Per-permission consent records (GDPR-style)." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/ipSignup> ;
    sh:name "ip signup" ;
    sh:description "Source IP recorded at signup." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/timestampSignup> ;
    sh:name "timestamp signup" ;
    sh:description "Signup timestamp." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/ipOpt> ;
    sh:name "ip opt" ;
    sh:description "Source IP recorded at confirmed opt-in." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/timestampOpt> ;
    sh:name "timestamp opt" ;
    sh:description "Confirmed opt-in timestamp." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Member Patch Input
mailchimp:MemberPatchInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberPatchInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/emailAddress> ;
    sh:name "email address" ;
    sh:description "New email address. Updates the subscriber identity." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/emailType> ;
    sh:name "email type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "html" "text" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/status> ;
    sh:name "status" ;
    sh:description "Current subscription status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/mergeFields> ;
    sh:name "merge fields" ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/interests> ;
    sh:name "interests" ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/language> ;
    sh:name "language" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/vip> ;
    sh:name "vip" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/location> ;
    sh:name "location" ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/marketingPermissions> ;
    sh:name "marketing permissions" ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/ipSignup> ;
    sh:name "ip signup" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/timestampSignup> ;
    sh:name "timestamp signup" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/ipOpt> ;
    sh:name "ip opt" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/timestampOpt> ;
    sh:name "timestamp opt" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Member Tag Assignment
mailchimp:MemberTagAssignmentShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberTagAssignment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberTagAssignment/id> ;
    sh:name "id" ;
    sh:description "Numeric tag identifier scoped to the parent list." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberTagAssignment/name> ;
    sh:name "name" ;
    sh:description "Tag display name." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberTagAssignment/dateAdded> ;
    sh:name "date added" ;
    sh:description "When this tag was applied to the member." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Member Tags Response
mailchimp:MemberTagsResponseShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberTagsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberTagsResponse/tags> ;
    sh:name "tags" ;
    sh:description "Tags currently applied to the member." ;
    sh:node mailchimp:MemberTagAssignmentShape ;
    sh:class mailchimp:MemberTagAssignment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberTagsResponse/totalItems> ;
    sh:name "total items" ;
    sh:description "Total number of tags applied to the member." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Member Tags Mutate Input
mailchimp:MemberTagsMutateInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:MemberTagsMutateInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberTagsMutateInput/tags> ;
    sh:name "tags" ;
    sh:description "Tag mutations to apply. Each row names a tag and an action." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/inline/Mailchimp.MemberTagsMutateInput/tagsShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/inline/Mailchimp.MemberTagsMutateInput/tags> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberTagsMutateInput/isSyncing> ;
    sh:name "is syncing" ;
    sh:description "Treat the call as part of a background sync to suppress some side effects." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Segment List Response
mailchimp:SegmentListResponseShape a sh:NodeShape ;
  sh:targetClass mailchimp:SegmentListResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentListResponse/segments> ;
    sh:name "segments" ;
    sh:description "Segments in the current page." ;
    sh:node mailchimp:SegmentShape ;
    sh:class mailchimp:Segment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentListResponse/listId> ;
    sh:name "list id" ;
    sh:description "Parent audience identifier." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentListResponse/totalItems> ;
    sh:name "total items" ;
    sh:description "Total number of segments defined on the audience." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentListResponse/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for the collection." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Segment Input
mailchimp:SegmentInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:SegmentInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentInput/name> ;
    sh:name "name" ;
    sh:description "Display name of the segment." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentInput/staticSegment> ;
    sh:name "static segment" ;
    sh:description "Seed emails for a static segment. Unknown emails are created on the audience as transactional." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentInput/options> ;
    sh:name "options" ;
    sh:description "Saved-segment condition tree (`match` plus an array of `conditions`)." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Segment Batch Members Input
mailchimp:SegmentBatchMembersInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:SegmentBatchMembersInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentBatchMembersInput/membersToAdd> ;
    sh:name "members to add" ;
    sh:description "Emails to add to the static segment. Required unless `members_to_remove` is supplied; at least one of the two arrays must be present and non-empty per Mailchimp's API contract." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentBatchMembersInput/membersToRemove> ;
    sh:name "members to remove" ;
    sh:description "Emails to remove from the static segment. Required unless `members_to_add` is supplied; at least one of the two arrays must be present and non-empty per Mailchimp's API contract." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Segment Batch Members Response
mailchimp:SegmentBatchMembersResponseShape a sh:NodeShape ;
  sh:targetClass mailchimp:SegmentBatchMembersResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentBatchMembersResponse/membersAdded> ;
    sh:name "members added" ;
    sh:description "Members successfully added by this batch." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentBatchMembersResponse/membersRemoved> ;
    sh:name "members removed" ;
    sh:description "Members successfully removed by this batch." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentBatchMembersResponse/errors> ;
    sh:name "errors" ;
    sh:description "Per-row error reports for rejected emails." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/inline/Mailchimp.SegmentBatchMembersResponse/errorsShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/inline/Mailchimp.SegmentBatchMembersResponse/errors> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentBatchMembersResponse/totalAdded> ;
    sh:name "total added" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentBatchMembersResponse/totalRemoved> ;
    sh:name "total removed" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentBatchMembersResponse/errorCount> ;
    sh:name "error count" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Tag Search Response
mailchimp:TagSearchResponseShape a sh:NodeShape ;
  sh:targetClass mailchimp:TagSearchResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.TagSearchResponse/tags> ;
    sh:name "tags" ;
    sh:description "Tags matching the search query, ordered by relevance." ;
    sh:node mailchimp:TagShape ;
    sh:class mailchimp:Tag ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.TagSearchResponse/totalItems> ;
    sh:name "total items" ;
    sh:description "Total number of matching tags across all pages." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Merge Field List Response
mailchimp:MergeFieldListResponseShape a sh:NodeShape ;
  sh:targetClass mailchimp:MergeFieldListResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldListResponse/mergeFields> ;
    sh:name "merge fields" ;
    sh:description "Merge fields in the current page." ;
    sh:node mailchimp:MergeFieldShape ;
    sh:class mailchimp:MergeField ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldListResponse/listId> ;
    sh:name "list id" ;
    sh:description "Parent audience identifier." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldListResponse/totalItems> ;
    sh:name "total items" ;
    sh:description "Total number of merge fields defined on the audience." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldListResponse/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for the collection." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Merge Field Create Input
mailchimp:MergeFieldCreateInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:MergeFieldCreateInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldCreateInput/tag> ;
    sh:name "tag" ;
    sh:description "Merge tag short code used inside campaigns (e.g. `FNAME`). Auto-generated when omitted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldCreateInput/name> ;
    sh:name "name" ;
    sh:description "Human-readable merge field name." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldCreateInput/type> ;
    sh:name "type" ;
    sh:description "Merge field data type." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "text" "number" "address" "phone" "date" "url" "imageurl" "radio" "dropdown" "birthday" "zip" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldCreateInput/required> ;
    sh:name "required" ;
    sh:description "Whether subscribers must supply a value for this field." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldCreateInput/defaultValue> ;
    sh:name "default value" ;
    sh:description "Default value substituted when the field is empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldCreateInput/public> ;
    sh:name "public" ;
    sh:description "Surface the field on hosted signup forms." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldCreateInput/displayOrder> ;
    sh:name "display order" ;
    sh:description "Position of the field on hosted signup forms." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldCreateInput/options> ;
    sh:name "options" ;
    sh:description "Type-specific options (e.g. `choices` for `dropdown`, `format` for `date`)." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldCreateInput/helpText> ;
    sh:name "help text" ;
    sh:description "Helper text shown beside the field on signup forms." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Merge Field Update Input
mailchimp:MergeFieldUpdateInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:MergeFieldUpdateInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldUpdateInput/tag> ;
    sh:name "tag" ;
    sh:description "Merge tag short code (e.g. `FNAME`)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldUpdateInput/name> ;
    sh:name "name" ;
    sh:description "Human-readable merge field name." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldUpdateInput/required> ;
    sh:name "required" ;
    sh:description "Whether subscribers must supply a value for this field." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldUpdateInput/defaultValue> ;
    sh:name "default value" ;
    sh:description "Default value substituted when the field is empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldUpdateInput/public> ;
    sh:name "public" ;
    sh:description "Surface the field on hosted signup forms." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldUpdateInput/displayOrder> ;
    sh:name "display order" ;
    sh:description "Position of the field on hosted signup forms." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldUpdateInput/options> ;
    sh:name "options" ;
    sh:description "Type-specific options." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldUpdateInput/helpText> ;
    sh:name "help text" ;
    sh:description "Helper text shown beside the field on signup forms." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign List Response
mailchimp:CampaignListResponseShape a sh:NodeShape ;
  sh:targetClass mailchimp:CampaignListResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignListResponse/campaigns> ;
    sh:name "campaigns" ;
    sh:description "Campaigns in the current page." ;
    sh:class mailchimp:Campaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignListResponse/totalItems> ;
    sh:name "total items" ;
    sh:description "Total number of campaigns on the account." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignListResponse/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for the collection." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Create Input
mailchimp:CampaignCreateInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:CampaignCreateInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignCreateInput/type> ;
    sh:name "type" ;
    sh:description "Campaign type. One of `regular`, `plaintext`, `absplit`, `rss`, `variate`." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "regular" "plaintext" "absplit" "rss" "variate" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignCreateInput/recipients> ;
    sh:name "recipients" ;
    sh:description "Recipient settings: `list_id` and optional segment options." ;
    sh:node mailchimp:CampaignRecipientsShape ;
    sh:class mailchimp:CampaignRecipients ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignCreateInput/settings> ;
    sh:name "settings" ;
    sh:description "Campaign settings: subject line, from name, from email, reply-to, etc." ;
    sh:node mailchimp:CampaignSettingsShape ;
    sh:class mailchimp:CampaignSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignCreateInput/variateSettings> ;
    sh:name "variate settings" ;
    sh:description "A/B variate settings. Only used when `type = variate`." ;
    sh:node mailchimp:VariateSettingsShape ;
    sh:class mailchimp:VariateSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignCreateInput/tracking> ;
    sh:name "tracking" ;
    sh:description "Engagement-tracking toggles (opens, clicks, GA, etc.)." ;
    sh:node mailchimp:TrackingConfigurationShape ;
    sh:class mailchimp:TrackingConfiguration ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignCreateInput/rssOpts> ;
    sh:name "rss opts" ;
    sh:description "RSS feed settings. Only used when `type = rss`." ;
    sh:node mailchimp:RssOptsShape ;
    sh:class mailchimp:RssOpts ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignCreateInput/socialCard> ;
    sh:name "social card" ;
    sh:description "Social card metadata for archive previews." ;
    sh:node mailchimp:SocialCardShape ;
    sh:class mailchimp:SocialCard ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignCreateInput/contentType> ;
    sh:name "content type" ;
    sh:description "Editor used to compose the campaign (`template`, `html`, `url`, `multichannel`)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "template" "html" "url" "multichannel" ) ;
  ] .

# Shape for Campaign Update Input
mailchimp:CampaignUpdateInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:CampaignUpdateInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignUpdateInput/recipients> ;
    sh:name "recipients" ;
    sh:description "Recipient settings: `list_id` and optional segment options." ;
    sh:node mailchimp:CampaignRecipientsShape ;
    sh:class mailchimp:CampaignRecipients ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignUpdateInput/settings> ;
    sh:name "settings" ;
    sh:description "Campaign settings: subject line, from name, from email, reply-to, etc." ;
    sh:node mailchimp:CampaignSettingsShape ;
    sh:class mailchimp:CampaignSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignUpdateInput/variateSettings> ;
    sh:name "variate settings" ;
    sh:node mailchimp:VariateSettingsShape ;
    sh:class mailchimp:VariateSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignUpdateInput/tracking> ;
    sh:name "tracking" ;
    sh:description "Engagement-tracking toggles." ;
    sh:node mailchimp:TrackingConfigurationShape ;
    sh:class mailchimp:TrackingConfiguration ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignUpdateInput/rssOpts> ;
    sh:name "rss opts" ;
    sh:node mailchimp:RssOptsShape ;
    sh:class mailchimp:RssOpts ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignUpdateInput/socialCard> ;
    sh:name "social card" ;
    sh:node mailchimp:SocialCardShape ;
    sh:class mailchimp:SocialCard ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Test Input
mailchimp:CampaignTestInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:CampaignTestInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTestInput/testEmails> ;
    sh:name "test emails" ;
    sh:description "Recipients of the test send. Must be a non-empty array of email addresses." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignTestInput/sendType> ;
    sh:name "send type" ;
    sh:description "Whether to send the HTML or plain-text variant." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "html" "plaintext" ) ;
  ] .

# Shape for Campaign Schedule Input
mailchimp:CampaignScheduleInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:CampaignScheduleInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignScheduleInput/scheduleTime> ;
    sh:name "schedule time" ;
    sh:description "UTC ISO 8601 timestamp to schedule the campaign for delivery." ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignScheduleInput/timewarp> ;
    sh:name "timewarp" ;
    sh:description "Send across multiple timezones to align with each recipient's local time of day." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignScheduleInput/batchDelivery> ;
    sh:name "batch delivery" ;
    sh:description "Trickle-send settings (`batch_count`, `batch_delay`)." ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Create Resend Input
mailchimp:CampaignCreateResendInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:CampaignCreateResendInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignCreateResendInput/shortcutType> ;
    sh:name "shortcut type" ;
    sh:description "Which resend shortcut to use. Defaults to `to_non_openers` server-side." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "to_non_openers" "to_non_clickers" "to_non_purchasers" "to_new_subscribers" ) ;
  ] .

# Shape for Automation List Response
mailchimp:AutomationListResponseShape a sh:NodeShape ;
  sh:targetClass mailchimp:AutomationListResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.AutomationListResponse/automations> ;
    sh:name "automations" ;
    sh:description "Workflows in the current page." ;
    sh:class mailchimp:Automation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.AutomationListResponse/totalItems> ;
    sh:name "total items" ;
    sh:description "Total number of classic automation workflows on the account." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.AutomationListResponse/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for the collection." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Automation Create Input
mailchimp:AutomationCreateInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:AutomationCreateInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.AutomationCreateInput/recipients> ;
    sh:name "recipients" ;
    sh:description "Recipient settings: `list_id` and optional segment options." ;
    sh:node mailchimp:AutomationRecipientsShape ;
    sh:class mailchimp:AutomationRecipients ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.AutomationCreateInput/settings> ;
    sh:name "settings" ;
    sh:description "Workflow-level settings (`from_name`, `reply_to`, etc.)." ;
    sh:node mailchimp:AutomationSettingsShape ;
    sh:class mailchimp:AutomationSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.AutomationCreateInput/triggerSettings> ;
    sh:name "trigger settings" ;
    sh:description "Trigger configuration that fires this workflow." ;
    sh:node mailchimp:TriggerSettingsShape ;
    sh:class mailchimp:TriggerSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for List Webhook List Response
mailchimp:ListWebhookListResponseShape a sh:NodeShape ;
  sh:targetClass mailchimp:ListWebhookListResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhookListResponse/webhooks> ;
    sh:name "webhooks" ;
    sh:description "Webhooks registered on the audience." ;
    sh:node mailchimp:ListWebhookShape ;
    sh:class mailchimp:ListWebhook ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhookListResponse/listId> ;
    sh:name "list id" ;
    sh:description "Parent audience identifier." ;
    sh:node mailchimp:ListShape ;
    sh:class mailchimp:List ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhookListResponse/links> ;
    sh:name "links" ;
    sh:description "HATEOAS link descriptors for the collection." ;
    sh:node mailchimp:HALLinkShape ;
    sh:class mailchimp:HALLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for List Webhook Input
mailchimp:ListWebhookInputShape a sh:NodeShape ;
  sh:targetClass mailchimp:ListWebhookInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhookInput/url> ;
    sh:name "url" ;
    sh:description "HTTPS URL Mailchimp will POST events to. Embed any secret token in the URL itself." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhookInput/events> ;
    sh:name "events" ;
    sh:description "Per-event-type subscription toggles." ;
    sh:node mailchimp:WebhookEventsShape ;
    sh:class mailchimp:WebhookEvents ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListWebhookInput/sources> ;
    sh:name "sources" ;
    sh:description "Per-source subscription toggles (user/admin/api)." ;
    sh:node mailchimp:WebhookSourcesShape ;
    sh:class mailchimp:WebhookSources ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Errors
<https://relay.inferal.com/ontology/mailchimp/inline/Mailchimp.ListBatchMembersResponse/errorsShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/inline/Mailchimp.ListBatchMembersResponse/errors> ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersResponse.errors/emailAddress> ;
    sh:name "email address" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersResponse.errors/error> ;
    sh:name "error" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersResponse.errors/errorCode> ;
    sh:name "error code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Tags
<https://relay.inferal.com/ontology/mailchimp/inline/Mailchimp.MemberTagsMutateInput/tagsShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/inline/Mailchimp.MemberTagsMutateInput/tags> ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberTagsMutateInput.tags/name> ;
    sh:name "name" ;
    sh:description "Tag name. Mailchimp creates the tag if it does not exist." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberTagsMutateInput.tags/status> ;
    sh:name "status" ;
    sh:description "`active` to attach, `inactive` to detach." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Errors
<https://relay.inferal.com/ontology/mailchimp/inline/Mailchimp.SegmentBatchMembersResponse/errorsShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/inline/Mailchimp.SegmentBatchMembersResponse/errors> ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentBatchMembersResponse.errors/emailAddresses> ;
    sh:name "email addresses" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentBatchMembersResponse.errors/error> ;
    sh:name "error" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Generated Record container shape for Mailchimp.CampaignScheduleInput.batchDelivery
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.CampaignScheduleInput/batchDelivery> ] ;
    sh:class mailchimp:CampaignScheduleInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.CampaignScheduleInput.batchDelivery
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.CampaignScheduleInput/batchDelivery/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.ListBatchMembersInput.members
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersInput/members> ] ;
    sh:class mailchimp:ListBatchMembersInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.ListBatchMembersInput.members
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersInput/members/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.ListBatchMembersResponse.newMembers
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersResponse/newMembers> ] ;
    sh:class mailchimp:ListBatchMembersResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.ListBatchMembersResponse.newMembers
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/newMembers/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.ListBatchMembersResponse.updatedMembers
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListBatchMembersResponse/updatedMembers> ] ;
    sh:class mailchimp:ListBatchMembersResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.ListBatchMembersResponse.updatedMembers
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListBatchMembersResponse/updatedMembers/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.ListListResponse.constraints
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.ListListResponse/constraints> ] ;
    sh:class mailchimp:ListListResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.ListListResponse.constraints
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.ListListResponse/constraints/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.Member.interests
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/interests> ] ;
    sh:class mailchimp:Member ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.Member.interests
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/interests/value> ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.Member.mergeFields
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.Member/mergeFields> ] ;
    sh:class mailchimp:Member ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.Member.mergeFields
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.Member/mergeFields/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MemberCreateInput.interests
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/interests> ] ;
    sh:class mailchimp:MemberCreateInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MemberCreateInput.interests
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/interests/value> ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MemberCreateInput.location
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/location> ] ;
    sh:class mailchimp:MemberCreateInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MemberCreateInput.location
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/location/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MemberCreateInput.marketingPermissions
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/marketingPermissions> ] ;
    sh:class mailchimp:MemberCreateInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MemberCreateInput.marketingPermissions
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/marketingPermissions/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MemberCreateInput.mergeFields
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberCreateInput/mergeFields> ] ;
    sh:class mailchimp:MemberCreateInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MemberCreateInput.mergeFields
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberCreateInput/mergeFields/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MemberPatchInput.interests
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/interests> ] ;
    sh:class mailchimp:MemberPatchInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MemberPatchInput.interests
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/interests/value> ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MemberPatchInput.location
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/location> ] ;
    sh:class mailchimp:MemberPatchInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MemberPatchInput.location
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/location/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MemberPatchInput.marketingPermissions
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/marketingPermissions> ] ;
    sh:class mailchimp:MemberPatchInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MemberPatchInput.marketingPermissions
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/marketingPermissions/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MemberPatchInput.mergeFields
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberPatchInput/mergeFields> ] ;
    sh:class mailchimp:MemberPatchInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MemberPatchInput.mergeFields
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberPatchInput/mergeFields/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MemberUpsertInput.interests
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/interests> ] ;
    sh:class mailchimp:MemberUpsertInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MemberUpsertInput.interests
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/interests/value> ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MemberUpsertInput.location
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/location> ] ;
    sh:class mailchimp:MemberUpsertInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MemberUpsertInput.location
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/location/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MemberUpsertInput.marketingPermissions
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/marketingPermissions> ] ;
    sh:class mailchimp:MemberUpsertInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MemberUpsertInput.marketingPermissions
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/marketingPermissions/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MemberUpsertInput.mergeFields
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MemberUpsertInput/mergeFields> ] ;
    sh:class mailchimp:MemberUpsertInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MemberUpsertInput.mergeFields
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MemberUpsertInput/mergeFields/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MergeFieldCreateInput.options
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldCreateInput/options> ] ;
    sh:class mailchimp:MergeFieldCreateInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MergeFieldCreateInput.options
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldCreateInput/options/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.MergeFieldUpdateInput.options
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.MergeFieldUpdateInput/options> ] ;
    sh:class mailchimp:MergeFieldUpdateInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.MergeFieldUpdateInput.options
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.MergeFieldUpdateInput/options/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.SegmentBatchMembersResponse.membersAdded
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentBatchMembersResponse/membersAdded> ] ;
    sh:class mailchimp:SegmentBatchMembersResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.SegmentBatchMembersResponse.membersAdded
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersAdded/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.SegmentBatchMembersResponse.membersRemoved
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentBatchMembersResponse/membersRemoved> ] ;
    sh:class mailchimp:SegmentBatchMembersResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.SegmentBatchMembersResponse.membersRemoved
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentBatchMembersResponse/membersRemoved/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Mailchimp.SegmentInput.options
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/property/Mailchimp.SegmentInput/options> ] ;
    sh:class mailchimp:SegmentInput ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/entry> ;
    sh:node <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/key> ?key . ?right <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/key> ?key . }"""
  ] .

# Generated Record entry shape for Mailchimp.SegmentInput.options
<https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/mailchimp/record/Mailchimp.SegmentInput/options/value> ;
    sh:datatype rdf:JSON ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .
