# 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 gr: <http://purl.org/goodrelations/v1#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix pinterest: <https://relay.inferal.com/ontology/pinterest/> .
@prefix adm: <https://ontology.inferal.com/modules/advertising-measurement/> .

# Class hierarchy
pinterest:AudienceInsightCategory rdfs:subClassOf schema:Thing .
pinterest:BoardBase rdfs:subClassOf schema:ItemList .
pinterest:BoardMedia rdfs:subClassOf schema:ImageObject .
pinterest:BoardOwner rdfs:subClassOf schema:Person .
pinterest:Board rdfs:subClassOf schema:ItemList .
pinterest:BusinessAccessError rdfs:subClassOf schema:Thing .
pinterest:BusinessAccessUserSummary rdfs:subClassOf schema:Person .
pinterest:ConversionTag rdfs:subClassOf schema:Thing .
pinterest:ConversionTagConfigs rdfs:subClassOf schema:Thing .
pinterest:ConversionTagCommon rdfs:subClassOf schema:Thing .
pinterest:Exception rdfs:subClassOf schema:Thing .
pinterest:ImageDetails rdfs:subClassOf schema:ImageObject .
pinterest:ImageMetadata rdfs:subClassOf schema:ImageObject .
pinterest:ImageSize rdfs:subClassOf schema:ImageObject .
pinterest:OrderLine rdfs:subClassOf schema:OrderItem .
pinterest:OrderLines rdfs:subClassOf schema:OrderItem .
pinterest:Pin rdfs:subClassOf schema:CreativeWork .
pinterest:PinMediaWithImage rdfs:subClassOf schema:ImageObject .
pinterest:PinMediaWithVideo rdfs:subClassOf schema:VideoObject .
pinterest:PinMediaWithImages rdfs:subClassOf schema:ImageObject .
pinterest:PinMediaWithVideos rdfs:subClassOf schema:VideoObject .
pinterest:VideoMetadataWithItemType rdfs:subClassOf schema:VideoObject .
pinterest:PinMediaWithImageAndVideo rdfs:subClassOf schema:MediaObject .
pinterest:TrackingUrls rdfs:subClassOf schema:Thing .
pinterest:LocalStore rdfs:subClassOf schema:PostalAddress .
pinterest:ConversionTagResponse rdfs:subClassOf schema:Thing .
pinterest:UpdatableItemAttributes rdfs:subClassOf schema:Product .
pinterest:AdAccount rdfs:subClassOf schema:Organization .
pinterest:AdAccountOwner rdfs:subClassOf schema:Person .
pinterest:AdGroup rdfs:subClassOf schema:Thing .
pinterest:OptimizationGoalMetadata rdfs:subClassOf schema:Thing .
pinterest:AdGroupAudienceSizing rdfs:subClassOf schema:QuantitativeValue .
pinterest:BidFloor rdfs:subClassOf schema:MonetaryAmount .
pinterest:AdDailyStats rdfs:subClassOf schema:InteractionCounter .
pinterest:Ad rdfs:subClassOf schema:CreativeWork .
pinterest:QuizPinData rdfs:subClassOf schema:Quiz .
pinterest:QuizPinQuestion rdfs:subClassOf schema:Question .
pinterest:QuizPinOption rdfs:subClassOf schema:Answer .
pinterest:QuizPinResult rdfs:subClassOf schema:Thing .
pinterest:AdPreviewURL rdfs:subClassOf schema:Thing .
pinterest:AdvancedAuctionKey rdfs:subClassOf schema:Thing .
pinterest:AdvancedAuctionItemsGetRecord rdfs:subClassOf schema:Thing .
pinterest:AdvancedAuctionItems rdfs:subClassOf schema:Thing .
pinterest:AdvancedAuctionItem rdfs:subClassOf schema:Thing .
pinterest:AdvancedAuctionBidOptions rdfs:subClassOf schema:Thing .
pinterest:AdvancedAuctionItemsSubmitUpsertRecord rdfs:subClassOf pinterest:AdvancedAuctionItemsSubmitRecord .
pinterest:AdvancedAuctionItemsSubmitDeleteRecord rdfs:subClassOf pinterest:AdvancedAuctionItemsSubmitRecord .
pinterest:AudienceCategory rdfs:subClassOf schema:QuantitativeValue .
pinterest:AudienceDefinition rdfs:subClassOf schema:Dataset .
pinterest:AudienceDemographicValue rdfs:subClassOf schema:QuantitativeValue .
pinterest:AudienceDemographics rdfs:subClassOf schema:Dataset .
pinterest:Audience rdfs:subClassOf schema:Audience .
pinterest:SharedAudienceAccount rdfs:subClassOf schema:Thing .
pinterest:SharedAudience rdfs:subClassOf schema:Audience .
pinterest:BusinessSharedAudience rdfs:subClassOf schema:Audience .
pinterest:AdsCreditDiscount rdfs:subClassOf schema:Thing .
pinterest:BillingProfile rdfs:subClassOf schema:Organization .
pinterest:BillingInvoice rdfs:subClassOf schema:Invoice .
pinterest:BillingInvoiceDownload rdfs:subClassOf schema:DigitalDocument .
pinterest:SsioAccountAddress rdfs:subClassOf schema:PostalAddress .
pinterest:SsioAccountItem rdfs:subClassOf schema:Organization .
pinterest:SsioAccountPmpName rdfs:subClassOf schema:Thing .
pinterest:SsioAccount rdfs:subClassOf schema:Organization .
pinterest:SsioInsertionOrderCommon rdfs:subClassOf schema:Order .
pinterest:SsioInsertionOrderStatus rdfs:subClassOf schema:Order .
pinterest:SsioInsertionOrderStatusResponse rdfs:subClassOf pinterest:SsioInsertionOrderStatus, schema:Order .
pinterest:SsioOrderLine rdfs:subClassOf schema:OrderItem .
pinterest:BoardSection rdfs:subClassOf schema:ItemList .
pinterest:BoardWithUpdatePrivacy rdfs:subClassOf schema:ItemList .
pinterest:BulkDownloadResponse rdfs:subClassOf schema:DownloadAction .
pinterest:ProductGroupPromotion rdfs:subClassOf schema:Offer .
pinterest:BulkUpsertResponse rdfs:subClassOf schema:Action .
pinterest:BulkUpsertStatusResponse rdfs:subClassOf schema:Action .
pinterest:AssetIdPermissions rdfs:subClassOf schema:Thing .
pinterest:AssetGroupBinding rdfs:subClassOf schema:Thing .
pinterest:DeletePartnerAssetsResult rdfs:subClassOf schema:Thing .
pinterest:DeleteMemberAccessResult rdfs:subClassOf schema:Thing .
pinterest:UsersForIndividualAssetResponse rdfs:subClassOf schema:Thing .
pinterest:UserSingleAssetBinding rdfs:subClassOf schema:Thing .
pinterest:UpdatePartnerAssetsResult rdfs:subClassOf schema:Thing .
pinterest:BaseInviteDataResponse rdfs:subClassOf schema:InviteAction .
pinterest:InviteAssetsSummary rdfs:subClassOf schema:Thing .
pinterest:InviteExceptionResponse rdfs:subClassOf schema:Thing .
pinterest:InviteBusinessRoleBinding rdfs:subClassOf schema:InviteAction .
pinterest:InviteResponse rdfs:subClassOf schema:InviteAction .
pinterest:BusinessMemberAssetsSummary rdfs:subClassOf schema:Thing .
pinterest:UpdateMemberResult rdfs:subClassOf schema:Person .
pinterest:UserBusinessRoleBinding rdfs:subClassOf schema:Thing .
pinterest:AdPinAnalytics rdfs:subClassOf schema:InteractionCounter .
pinterest:Campaign rdfs:subClassOf schema:Thing .
pinterest:CatalogsDbItem rdfs:subClassOf schema:Thing .
pinterest:CatalogsCreativeAssetsFeed rdfs:subClassOf schema:DataFeed .
pinterest:CatalogsFeedProcessingSchedule rdfs:subClassOf schema:Schedule .
pinterest:CatalogsHotelFeed rdfs:subClassOf schema:DataFeed .
pinterest:CatalogsRetailFeed rdfs:subClassOf schema:DataFeed .
pinterest:CatalogsFeedIngestion rdfs:subClassOf schema:Action .
pinterest:CatalogsFeedProcessingResult rdfs:subClassOf schema:Action .
pinterest:CatalogsFeedProductCounts rdfs:subClassOf schema:QuantitativeValue .
pinterest:CatalogsFeedVideoCounts rdfs:subClassOf schema:QuantitativeValue .
pinterest:CatalogsItemsBatch rdfs:subClassOf schema:Action .
pinterest:CatalogsUpdatableHotelAttributes rdfs:subClassOf schema:Hotel .
pinterest:CatalogsHotelAddress rdfs:subClassOf schema:PostalAddress .
pinterest:CatalogsHotelGuestRatings rdfs:subClassOf schema:AggregateRating .
pinterest:CatalogsHotelAttributes rdfs:subClassOf schema:Hotel .
pinterest:CatalogsRetailItemsPostFilter rdfs:subClassOf pinterest:CatalogsItemsPostFilters .
pinterest:CatalogsHotelItemsPostFilter rdfs:subClassOf pinterest:CatalogsItemsPostFilters .
pinterest:CatalogsCreativeAssetsItemsPostFilter rdfs:subClassOf pinterest:CatalogsItemsPostFilters .
pinterest:CatalogsRetailItemResponse rdfs:subClassOf schema:Product .
pinterest:ItemAttributes rdfs:subClassOf schema:Product .
pinterest:CatalogsHotelItemResponse rdfs:subClassOf schema:Hotel .
pinterest:CatalogsCreativeAssetsItemResponse rdfs:subClassOf schema:Product .
pinterest:CatalogsCreativeAssetsAttributes rdfs:subClassOf schema:Product .
pinterest:CatalogsUpdatableCreativeAssetsAttributes rdfs:subClassOf schema:Product .
pinterest:CatalogsCreativeAssetsItemsBatch rdfs:subClassOf pinterest:CatalogsItemsBatch, schema:Action .
pinterest:CatalogsHotelItemsBatch rdfs:subClassOf pinterest:CatalogsItemsBatch, schema:Action .
pinterest:CatalogsRetailItemsBatch rdfs:subClassOf pinterest:CatalogsItemsBatch, schema:Action .
pinterest:CatalogsProduct rdfs:subClassOf schema:Product .
pinterest:CatalogsProductGroupProductCountsVertical rdfs:subClassOf schema:QuantitativeValue .
pinterest:CatalogsCreativeAssetsProductGroup rdfs:subClassOf schema:ProductCollection .
pinterest:CatalogsHotelProductGroup rdfs:subClassOf schema:ProductCollection .
pinterest:CatalogsRetailProductGroup rdfs:subClassOf schema:ProductCollection .
pinterest:CatalogsHotelProductGroupProductCounts rdfs:subClassOf pinterest:CatalogsProductGroupProductCountsVertical, schema:QuantitativeValue .
pinterest:CatalogsCreativeAssetsProductGroupProductCounts rdfs:subClassOf pinterest:CatalogsProductGroupProductCountsVertical, schema:QuantitativeValue .
pinterest:CatalogsRetailProductGroupProductCounts rdfs:subClassOf pinterest:CatalogsProductGroupProductCountsVertical, schema:QuantitativeValue .
pinterest:CatalogsRetailProduct rdfs:subClassOf gr:ProductOrService, pinterest:CatalogsProduct, schema:Product .
pinterest:CatalogsRetailProductMetadata rdfs:subClassOf schema:Product .
pinterest:CatalogsHotelProduct rdfs:subClassOf pinterest:CatalogsProduct, schema:Hotel .
pinterest:CatalogsHotelProductMetadata rdfs:subClassOf schema:Hotel .
pinterest:CatalogsCreativeAssetsProductMetadata rdfs:subClassOf schema:Product .
pinterest:CatalogsCreativeAssetsProduct rdfs:subClassOf pinterest:CatalogsProduct, schema:Product .
pinterest:CatalogsReportStats rdfs:subClassOf schema:Report .
pinterest:CatalogsReportParameters rdfs:subClassOf schema:Report .
pinterest:CatalogsReport rdfs:subClassOf schema:Report .
pinterest:CatalogsReportFeedIngestionStats rdfs:subClassOf pinterest:CatalogsReportStats, schema:Report .
pinterest:CatalogsReportDistributionStats rdfs:subClassOf pinterest:CatalogsReportStats, schema:Report .
pinterest:CatalogsHotelReportParameters rdfs:subClassOf pinterest:CatalogsReportParameters, schema:Report .
pinterest:CatalogsHotelReportStatsParameters rdfs:subClassOf schema:Report .
pinterest:CatalogsRetailReportParameters rdfs:subClassOf pinterest:CatalogsReportParameters, schema:Report .
pinterest:CatalogsRetailReportStatsParameters rdfs:subClassOf schema:Report .
pinterest:Catalog rdfs:subClassOf schema:DataFeed .
pinterest:EventQualityScore rdfs:subClassOf schema:QuantitativeValue .
pinterest:QualityComponents rdfs:subClassOf schema:Thing .
pinterest:QualityComponentDetails rdfs:subClassOf schema:QuantitativeValue .
pinterest:QualityComponentIssue rdfs:subClassOf schema:Thing .
pinterest:ConversionEvents rdfs:subClassOf schema:Action .
pinterest:ConversionEventAppInfo rdfs:subClassOf schema:SoftwareApplication .
pinterest:ConversionEventDeviceInfo rdfs:subClassOf schema:Thing .
pinterest:ConversionEventsUserData rdfs:subClassOf schema:Person .
pinterest:ConversionEventResponse rdfs:subClassOf schema:Thing .
pinterest:CustomerListUpload rdfs:subClassOf schema:CreateAction .
pinterest:CustomerListUploadResponse rdfs:subClassOf schema:CreateAction .
pinterest:CustomerList rdfs:subClassOf schema:ItemList .
pinterest:IntegrationLog rdfs:subClassOf schema:Thing .
pinterest:IntegrationMetadata rdfs:subClassOf schema:Thing .
pinterest:Keyword rdfs:subClassOf schema:DefinedTerm .
pinterest:KeywordMetrics rdfs:subClassOf schema:QuantitativeValue .
pinterest:KeywordMetricsResponse rdfs:subClassOf schema:QuantitativeValue .
pinterest:Label rdfs:subClassOf schema:DefinedTerm .
pinterest:LeadSubscription rdfs:subClassOf schema:Thing .
pinterest:LeadFormCommon rdfs:subClassOf schema:ContactPage .
pinterest:LeadFormQuestion rdfs:subClassOf schema:Question .
pinterest:LeadForm rdfs:subClassOf schema:ContactPage .
pinterest:LeadFormCreateRequest rdfs:subClassOf pinterest:LeadFormCommon .
pinterest:LeadsExportResponseData rdfs:subClassOf schema:DownloadAction .
pinterest:MediaUpload rdfs:subClassOf schema:MediaObject .
pinterest:MediaUploadParameters rdfs:subClassOf schema:Thing .
pinterest:Media rdfs:subClassOf schema:MediaObject .
pinterest:ConversionMSOTEvents rdfs:subClassOf schema:Event .
pinterest:PinAnalytics rdfs:subClassOf schema:InteractionCounter .
pinterest:CarouselSlot rdfs:subClassOf schema:CreativeWork .
pinterest:PinMediaSourceImageBase64 rdfs:subClassOf schema:ImageObject .
pinterest:PinMediaSourceImageURL rdfs:subClassOf schema:ImageObject .
pinterest:PinMediaSourceVideoID rdfs:subClassOf schema:VideoObject .
pinterest:PinMediaSourceImagesBase64 rdfs:subClassOf schema:ImageObject .
pinterest:PinMediaSourceImagesBase64Item rdfs:subClassOf schema:ImageObject .
pinterest:PinMediaSourceImagesURL rdfs:subClassOf schema:ImageObject .
pinterest:PinMediaSourceImagesURLItem rdfs:subClassOf schema:ImageObject .
pinterest:PinMediaSourcePinURL rdfs:subClassOf schema:CreativeWork .
pinterest:ProductCategoryDetails rdfs:subClassOf schema:CategoryCode .
pinterest:TrendingProductCategory rdfs:subClassOf schema:CategoryCode .
pinterest:FeaturedTrend rdfs:subClassOf schema:Thing .
pinterest:TrendingTopic rdfs:subClassOf schema:Thing .
pinterest:TrendingPin rdfs:subClassOf schema:ImageObject .
pinterest:Promotion rdfs:subClassOf schema:Offer .
pinterest:PromotionTemplateValue rdfs:subClassOf schema:PriceSpecification .
pinterest:PromotionCreateRequest rdfs:subClassOf pinterest:PromotionCommon .
pinterest:AdAccountCountry rdfs:subClassOf schema:CategoryCode .
pinterest:BookClosed rdfs:subClassOf schema:Thing .
pinterest:InterestTargetingOption rdfs:subClassOf schema:DefinedTerm .
pinterest:SummaryPin rdfs:subClassOf schema:Thing .
pinterest:TargetingTemplateAudienceSizing rdfs:subClassOf schema:Thing .
pinterest:TargetingTemplateKeyword rdfs:subClassOf schema:DefinedTerm .
pinterest:TargetingTemplateResponseData rdfs:subClassOf schema:Thing .
pinterest:TargetingTemplateGetResponseData rdfs:subClassOf schema:Thing .
pinterest:RelatedTerms rdfs:subClassOf schema:DefinedTerm .
pinterest:TermsOfService rdfs:subClassOf schema:DigitalDocument .
pinterest:AnalyticsMetricsResponse rdfs:subClassOf schema:InteractionCounter .
pinterest:AnalyticsDailyMetrics rdfs:subClassOf schema:InteractionCounter .
pinterest:Account rdfs:subClassOf schema:Person .
pinterest:Interest rdfs:subClassOf schema:Thing .
pinterest:LinkedBusiness rdfs:subClassOf schema:Organization .
pinterest:TopPinsAnalyticsResponse rdfs:subClassOf schema:InteractionCounter .
pinterest:TopVideoPinsAnalyticsResponse rdfs:subClassOf schema:InteractionCounter .
pinterest:UserSummary rdfs:subClassOf schema:Person .
pinterest:UserWebsiteSummary rdfs:subClassOf schema:WebSite .
pinterest:UserWebsiteVerificationCode rdfs:subClassOf schema:Thing .

<https://relay.inferal.com/ontology/pinterest/shapes> a tsps:ShapeGeneration ;
  tsps:shapeReferenceChainLimit 5 ;
  tsps:omittedShapeReferenceCount 5
  ;
  tsps:omittedShapeReference [
    tsps:referenceFrom pinterest:BulkUpsertRequestShape ;
    tsps:referenceTo pinterest:BulkUpsertRequestCreateShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom pinterest:BulkUpsertRequestShape ;
    tsps:referenceTo pinterest:BulkUpsertRequestUpdateShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom pinterest:CatalogsItemsShape ;
    tsps:referenceTo pinterest:CatalogsCreativeAssetsItemResponseShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom pinterest:CatalogsItemsShape ;
    tsps:referenceTo pinterest:CatalogsHotelItemResponseShape ;
    tsps:omittedBecause "over-long"
  ] ;
  tsps:omittedShapeReference [
    tsps:referenceFrom pinterest:CatalogsItemsShape ;
    tsps:referenceTo pinterest:CatalogsRetailItemResponseShape ;
    tsps:omittedBecause "over-long"
  ] .

# Shape for Oauth Access Token Request
pinterest:OauthAccessTokenRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:OauthAccessTokenRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OauthAccessTokenRequest/grantType> ;
    sh:name "grant type" ;
    sh:description "Grant type for the token request" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "authorization_code" "refresh_token" "client_credentials" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OauthAccessTokenRequest/clientId> ;
    sh:name "client id" ;
    sh:description "Your app's client ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OauthAccessTokenRequest/clientSecret> ;
    sh:name "client secret" ;
    sh:description "Your app's client secret" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OauthAccessTokenRequest/code> ;
    sh:name "code" ;
    sh:description "Authorization code from the OAuth flow" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OauthAccessTokenRequest/redirectUri> ;
    sh:name "redirect uri" ;
    sh:description "Redirect URI used in the authorization request" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OauthAccessTokenRequest/refreshToken> ;
    sh:name "refresh token" ;
    sh:description "Refresh token for token renewal" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Oauth Access Token Response
pinterest:OauthAccessTokenResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:OauthAccessTokenResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OauthAccessTokenResponse/accessToken> ;
    sh:name "access token" ;
    sh:description "The access token" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OauthAccessTokenResponse/tokenType> ;
    sh:name "token type" ;
    sh:description "Token type (always 'bearer')" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "bearer" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OauthAccessTokenResponse/expiresIn> ;
    sh:name "expires in" ;
    sh:description "Token lifetime in seconds" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OauthAccessTokenResponse/scope> ;
    sh:name "scope" ;
    sh:description "Space-separated list of granted scopes" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OauthAccessTokenResponse/refreshToken> ;
    sh:name "refresh token" ;
    sh:description "Refresh token for renewing access" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OauthAccessTokenResponse/refreshTokenExpiresIn> ;
    sh:name "refresh token expires in" ;
    sh:description "Refresh token lifetime in seconds" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Pinterest Error
pinterest:PinterestErrorShape a sh:NodeShape ;
  sh:targetClass pinterest:PinterestError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinterestError/statusCode> ;
    sh:name "status code" ;
    sh:description "HTTP status code" ;
    sh:datatype xsd:integer ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "400"^^xsd:integer "401"^^xsd:integer "403"^^xsd:integer "404"^^xsd:integer "409"^^xsd:integer "429"^^xsd:integer "500"^^xsd:integer ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinterestError/code> ;
    sh:name "code" ;
    sh:description "Error code" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinterestError/message> ;
    sh:name "message" ;
    sh:description "Human-readable error message" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Access Token Response
pinterest:ConversionAccessTokenResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionAccessTokenResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionAccessTokenResponse/accessToken> ;
    sh:name "access token" ;
    sh:description "The conversion access token" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionAccessTokenResponse/tokenType> ;
    sh:name "token type" ;
    sh:description "Token type (always 'conversion')" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for App Type Multipliers
pinterest:AppTypeMultipliersShape a sh:NodeShape ;
  sh:targetClass pinterest:AppTypeMultipliers ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AppTypeMultipliers/APP_TYPE> ;
    sh:name "app type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "android_mobile" "android_tablet" "ipad" "iphone" "web" "web_mobile" ) ;
  ] .

# Shape for Placement Multipliers
pinterest:PlacementMultipliersShape a sh:NodeShape ;
  sh:targetClass pinterest:PlacementMultipliers ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PlacementMultipliers/PLACEMENT> ;
    sh:name "placement" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "SEARCH" "BROWSE" "RELATED_PINS" ) ;
  ] .

# Shape for Audience Insight Category Common
pinterest:AudienceInsightCategoryShape a sh:NodeShape ;
  sh:targetClass pinterest:AudienceInsightCategory ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceInsightCategoryCommon/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceInsightCategoryCommon/index> ;
    sh:name "index" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceInsightCategoryCommon/key> ;
    sh:name "key" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceInsightCategoryCommon/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceInsightCategoryCommon/ratio> ;
    sh:name "ratio" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Board Base
pinterest:BoardBaseShape a sh:NodeShape ;
  sh:targetClass pinterest:BoardBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardBase/boardPinsModifiedAt> ;
    sh:name "board pins modified at" ;
    sh:description "Date and time of last board pins modified." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardBase/collaboratorCount> ;
    sh:name "collaborator count" ;
    sh:description "Count of collaborators on the board." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardBase/createdAt> ;
    sh:name "created at" ;
    sh:description "Date and time of board creation." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardBase/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardBase/followerCount> ;
    sh:name "follower count" ;
    sh:description "Board follower count." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardBase/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardBase/isAdsOnly> ;
    sh:name "is ads only" ;
    sh:description "If set to `true`, the board will be ad-only and can store ad-only Pins." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardBase/media> ;
    sh:name "media" ;
    sh:description "Board media." ;
    sh:node pinterest:BoardMediaShape ;
    sh:class pinterest:BoardMedia ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardBase/name> ;
    sh:name "name" ;
    sh:description "\n\n    Name of the board.\n\n    **Note:** If you create an ad-only board by setting `is_ads_only`\n    to `true`, the board name automatically becomes \"Ad-only Pins\"." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardBase/owner> ;
    sh:name "owner" ;
    sh:node pinterest:BoardOwnerShape ;
    sh:class pinterest:BoardOwner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardBase/pinCount> ;
    sh:name "pin count" ;
    sh:description "Count of Pins on the board." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] .

# Shape for Board Media
pinterest:BoardMediaShape a sh:NodeShape ;
  sh:targetClass pinterest:BoardMedia ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardMedia/imageCoverUrl> ;
    sh:name "image cover url" ;
    sh:description "Board cover image" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardMedia/pinThumbnailUrls> ;
    sh:name "pin thumbnail urls" ;
    sh:description "Board pin thumbnail urls." ;
    sh:datatype xsd:anyURI ;
  ] .

# Shape for Board Owner
pinterest:BoardOwnerShape a sh:NodeShape ;
  sh:targetClass pinterest:BoardOwner ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardOwner/username> ;
    sh:name "username" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Board
pinterest:BoardShape a sh:NodeShape ;
  sh:targetClass pinterest:Board ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Board/boardPinsModifiedAt> ;
    sh:name "board pins modified at" ;
    sh:description "Date and time of last board pins modified." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Board/collaboratorCount> ;
    sh:name "collaborator count" ;
    sh:description "Count of collaborators on the board." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Board/createdAt> ;
    sh:name "created at" ;
    sh:description "Date and time of board creation." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Board/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Board/followerCount> ;
    sh:name "follower count" ;
    sh:description "Board follower count." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Board/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Board/isAdsOnly> ;
    sh:name "is ads only" ;
    sh:description "If set to `true`, the board will be ad-only and can store ad-only Pins." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Board/media> ;
    sh:name "media" ;
    sh:description "Board media." ;
    sh:node pinterest:BoardMediaShape ;
    sh:class pinterest:BoardMedia ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Board/name> ;
    sh:name "name" ;
    sh:description "\n\n    Name of the board.\n\n    **Note:** If you create an ad-only board by setting `is_ads_only`\n    to `true`, the board name automatically becomes \"Ad-only Pins\"." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Board/owner> ;
    sh:name "owner" ;
    sh:node pinterest:BoardOwnerShape ;
    sh:class pinterest:BoardOwner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Board/pinCount> ;
    sh:name "pin count" ;
    sh:description "Count of Pins on the board." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Board/privacy> ;
    sh:name "privacy" ;
    sh:description "    Privacy setting for a board. Learn more about [secret](https://help.pinterest.com/en/article/secret-boards)\n    boards and [protected](https://help.pinterest.com/en/business/article/protected-boards) boards.\n\n    **Note:** If you create an ad-only board by setting `is_ads_only`\n    to `true`, the `privacy` settng automatically becomes `PROTECTED`. " ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PUBLIC" "PROTECTED" "SECRET" ) ;
  ] .

# Shape for Business Access Error
pinterest:BusinessAccessErrorShape a sh:NodeShape ;
  sh:targetClass pinterest:BusinessAccessError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessAccessError/code> ;
    sh:name "code" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessAccessError/message> ;
    sh:name "message" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Business Access User Summary
pinterest:BusinessAccessUserSummaryShape a sh:NodeShape ;
  sh:targetClass pinterest:BusinessAccessUserSummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessAccessUserSummary/email> ;
    sh:name "email" ;
    sh:description "Email of the business member/partner." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessAccessUserSummary/id> ;
    sh:name "id" ;
    sh:description "Unique identifier of the business member/partner." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:minLength 1 ;
    sh:maxLength 20 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessAccessUserSummary/username> ;
    sh:name "username" ;
    sh:description "Username of the business member/partner." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Tag
pinterest:ConversionTagShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionTag ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTag/codeSnippet> ;
    sh:name "code snippet" ;
    sh:description "Tag code snippet." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTag/configs> ;
    sh:name "configs" ;
    sh:node pinterest:ConversionTagConfigsShape ;
    sh:class pinterest:ConversionTagConfigs ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTag/enhancedMatchStatus> ;
    sh:name "enhanced match status" ;
    sh:description "The enhanced match status of the tag" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNKNOWN" "NOT_VALIDATED" "VALIDATING_IN_PROGRESS" "VALIDATION_COMPLETE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTag/id> ;
    sh:name "id" ;
    sh:description "Tag ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTag/lastFiredTimeMs> ;
    sh:name "last fired time ms" ;
    sh:description "Time for the last event fired." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTag/name> ;
    sh:name "name" ;
    sh:description "Conversion tag name." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTag/version> ;
    sh:name "version" ;
    sh:description "Version number." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTag/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Ad account ID." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTag/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] .

# Shape for Conversion Tag Configs
pinterest:ConversionTagConfigsShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionTagConfigs ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagConfigs/aemDbEnabled> ;
    sh:name "aem db enabled" ;
    sh:description "Whether Automatic Enhanced Match birthdate is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagConfigs/aemEnabled> ;
    sh:name "aem enabled" ;
    sh:description "Whether Automatic Enhanced Match email is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagConfigs/aemExternalIdEnabled> ;
    sh:name "aem external id enabled" ;
    sh:description "Whether Automatic Enhanced Match location is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagConfigs/aemFnlnEnabled> ;
    sh:name "aem fnln enabled" ;
    sh:description "Whether Automatic Enhanced Match name is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagConfigs/aemGeEnabled> ;
    sh:name "aem ge enabled" ;
    sh:description "Whether Automatic Enhanced Match gender is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagConfigs/aemLocEnabled> ;
    sh:name "aem loc enabled" ;
    sh:description "Whether Automatic Enhanced Match location is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagConfigs/aemPhEnabled> ;
    sh:name "aem ph enabled" ;
    sh:description "Whether Automatic Enhanced Match phone is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagConfigs/mdFrequency> ;
    sh:name "md frequency" ;
    sh:description "Metadata ingestion frequency." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagConfigs/noCodeCapiDomains> ;
    sh:name "no code capi domains" ;
    sh:description "List of advertiser subdomains configured for NoCodeCAPI calls." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Conversion Tag Common
pinterest:ConversionTagCommonShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionTagCommon ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCommon/codeSnippet> ;
    sh:name "code snippet" ;
    sh:description "Tag code snippet." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCommon/configs> ;
    sh:name "configs" ;
    sh:node pinterest:ConversionTagConfigsShape ;
    sh:class pinterest:ConversionTagConfigs ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCommon/enhancedMatchStatus> ;
    sh:name "enhanced match status" ;
    sh:description "The enhanced match status of the tag" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNKNOWN" "NOT_VALIDATED" "VALIDATING_IN_PROGRESS" "VALIDATION_COMPLETE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCommon/id> ;
    sh:name "id" ;
    sh:description "Tag ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCommon/lastFiredTimeMs> ;
    sh:name "last fired time ms" ;
    sh:description "Time for the last event fired." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCommon/name> ;
    sh:name "name" ;
    sh:description "Conversion tag name." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCommon/version> ;
    sh:name "version" ;
    sh:description "Version number." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Exception
pinterest:ExceptionShape a sh:NodeShape ;
  sh:targetClass pinterest:Exception ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Exception/code> ;
    sh:name "code" ;
    sh:description "Exception error code." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Exception/message> ;
    sh:name "message" ;
    sh:description "Exception message." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Image Details
pinterest:ImageDetailsShape a sh:NodeShape ;
  sh:targetClass pinterest:ImageDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ImageDetails/height> ;
    sh:name "height" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ImageDetails/url> ;
    sh:name "url" ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ImageDetails/width> ;
    sh:name "width" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Image Metadata
pinterest:ImageMetadataShape a sh:NodeShape ;
  sh:targetClass pinterest:ImageMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ImageMetadata/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ImageMetadata/images> ;
    sh:name "images" ;
    sh:node pinterest:ImageSizeShape ;
    sh:class pinterest:ImageSize ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ImageMetadata/itemType> ;
    sh:name "item type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ImageMetadata/link> ;
    sh:name "link" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ImageMetadata/title> ;
    sh:name "title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Image Size
pinterest:ImageSizeShape a sh:NodeShape ;
  sh:targetClass pinterest:ImageSize ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ImageSize/1200x> ;
    sh:name "1200x" ;
    sh:node pinterest:ImageDetailsShape ;
    sh:class pinterest:ImageDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ImageSize/150x150> ;
    sh:name "150x150" ;
    sh:node pinterest:ImageDetailsShape ;
    sh:class pinterest:ImageDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ImageSize/400x300> ;
    sh:name "400x300" ;
    sh:node pinterest:ImageDetailsShape ;
    sh:class pinterest:ImageDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ImageSize/600x> ;
    sh:name "600x" ;
    sh:node pinterest:ImageDetailsShape ;
    sh:class pinterest:ImageDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Metrics Response
pinterest:MetricsResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:MetricsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MetricsResponse/data> ;
    sh:name "data" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MetricsResponse/data/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MetricsResponse/data/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Order Line
pinterest:OrderLineShape a sh:NodeShape ;
  sh:targetClass pinterest:OrderLine ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLine/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Ad account ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLine/budget> ;
    sh:name "budget" ;
    sh:description "Order line budget in micro currency." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLine/endTime> ;
    sh:name "end time" ;
    sh:description "End time. Unix timestamp." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLine/id> ;
    sh:name "id" ;
    sh:description "Order line ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLine/name> ;
    sh:name "name" ;
    sh:description "Order line name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLine/paidBudget> ;
    sh:name "paid budget" ;
    sh:description "Order line paid budget in micro currency." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLine/paidType> ;
    sh:name "paid type" ;
    sh:description "Order line paid type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PAID" "BONUS" "MAKE_GOOD" "TEST" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLine/purchaseOrderId> ;
    sh:name "purchase order id" ;
    sh:description "Purchase order ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLine/startTime> ;
    sh:name "start time" ;
    sh:description "Start time. Unix timestamp." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLine/status> ;
    sh:name "status" ;
    sh:description "Order line status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "DELETED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLine/type> ;
    sh:name "type" ;
    sh:description "Always \"orderline\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLine/campaignIds> ;
    sh:name "campaign ids" ;
    sh:description "Associated List of campaign IDs." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Order Lines
pinterest:OrderLinesShape a sh:NodeShape ;
  sh:targetClass pinterest:OrderLines ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLines/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Ad account ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLines/budget> ;
    sh:name "budget" ;
    sh:description "Order line budget in micro currency." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLines/endTime> ;
    sh:name "end time" ;
    sh:description "End time. Unix timestamp." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLines/id> ;
    sh:name "id" ;
    sh:description "Order line ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLines/name> ;
    sh:name "name" ;
    sh:description "Order line name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLines/paidBudget> ;
    sh:name "paid budget" ;
    sh:description "Order line paid budget in micro currency." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLines/paidType> ;
    sh:name "paid type" ;
    sh:description "Order line paid type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PAID" "BONUS" "MAKE_GOOD" "TEST" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLines/purchaseOrderId> ;
    sh:name "purchase order id" ;
    sh:description "Purchase order ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLines/startTime> ;
    sh:name "start time" ;
    sh:description "Start time. Unix timestamp." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLines/status> ;
    sh:name "status" ;
    sh:description "Order line status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "DELETED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OrderLines/type> ;
    sh:name "type" ;
    sh:description "Always \"orderline\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Paginated
pinterest:PaginatedShape a sh:NodeShape ;
  sh:targetClass pinterest:Paginated ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Paginated/bookmark> ;
    sh:name "bookmark" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Paginated/items> ;
    sh:name "items" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Paginated/items/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Paginated/items/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Pin
pinterest:PinShape a sh:NodeShape ;
  sh:targetClass pinterest:Pin ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/altText> ;
    sh:name "alt text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 500 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/boardId> ;
    sh:name "board id" ;
    sh:description "The board to which this Pin belongs." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/boardOwner> ;
    sh:name "board owner" ;
    sh:node pinterest:BoardOwnerShape ;
    sh:class pinterest:BoardOwner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/boardSectionId> ;
    sh:name "board section id" ;
    sh:description "The board section to which this Pin belongs." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/createdAt> ;
    sh:name "created at" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/creativeType> ;
    sh:name "creative type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "REGULAR" "VIDEO" "SHOPPING" "CAROUSEL" "MAX_VIDEO" "SHOP_THE_PIN" "COLLECTION" "IDEA" "SHOWCASE" "QUIZ" "COLLAGE" "MAX_WIDTH_REGULAR_COLLECTION" "MAX_WIDTH_VIDEO_COLLECTION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 800 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/dominantColor> ;
    sh:name "dominant color" ;
    sh:description "Dominant pin color. Hex number, e.g. `#6E7874`." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/hasBeenPromoted> ;
    sh:name "has been promoted" ;
    sh:description "Whether the Pin has been promoted or not." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/isOwner> ;
    sh:name "is owner" ;
    sh:description "Whether the \"operation user_account\" is the Pin owner." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/isStandard> ;
    sh:name "is standard" ;
    sh:description "Whether the Pin is standard or not. See documentation on [Changes to Pin creation](/docs/api-features/content-overview/) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/link> ;
    sh:name "link" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
    sh:maxLength 2048 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/media> ;
    sh:name "media" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:PinMediaWithImageShape ; sh:class pinterest:PinMediaWithImage ]
      [ sh:node pinterest:PinMediaWithVideoShape ; sh:class pinterest:PinMediaWithVideo ]
      [ sh:node pinterest:PinMediaWithImagesShape ; sh:class pinterest:PinMediaWithImages ]
      [ sh:node pinterest:PinMediaWithVideosShape ; sh:class pinterest:PinMediaWithVideos ]
      [ sh:node pinterest:PinMediaWithImageAndVideoShape ; sh:class pinterest:PinMediaWithImageAndVideo ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/parentPinId> ;
    sh:name "parent pin id" ;
    sh:description "The source pin id if this pin was saved from another pin. [Learn more](https://help.pinterest.com/article/save-pins-on-pinterest)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/pinMetrics> ;
    sh:name "pin metrics" ;
    sh:description "Pin metrics with associated time intervals if any." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Pin/pinMetrics/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Pin/pinMetrics/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/title> ;
    sh:name "title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] .

# Shape for Pin Media With Image
pinterest:PinMediaWithImageShape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaWithImage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithImage/images> ;
    sh:name "images" ;
    sh:node pinterest:ImageSizeShape ;
    sh:class pinterest:ImageSize ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithImage/mediaType> ;
    sh:name "media type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "image" ;
  ] .

# Shape for Pin Media With Video
pinterest:PinMediaWithVideoShape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaWithVideo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithVideo/coverImageUrl> ;
    sh:name "cover image url" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithVideo/duration> ;
    sh:name "duration" ;
    sh:description "Duration (in miliseconds). Field maybe null after creation due to video processing time." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithVideo/height> ;
    sh:name "height" ;
    sh:description "Height (in pixels). Field maybe null after creation due to video processing time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithVideo/images> ;
    sh:name "images" ;
    sh:node pinterest:ImageSizeShape ;
    sh:class pinterest:ImageSize ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithVideo/mediaType> ;
    sh:name "media type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "video" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithVideo/videoUrl> ;
    sh:name "video url" ;
    sh:description "Video url (720p).\n\n**Note:** This field is limited and not available to all apps." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithVideo/width> ;
    sh:name "width" ;
    sh:description "Width (in pixels). Field maybe null after creation due to video processing time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Pin Media With Images
pinterest:PinMediaWithImagesShape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaWithImages ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithImages/items> ;
    sh:name "items" ;
    sh:node pinterest:ImageMetadataShape ;
    sh:class pinterest:ImageMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithImages/mediaType> ;
    sh:name "media type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "multiple_images" ;
  ] .

# Shape for Pin Media With Videos
pinterest:PinMediaWithVideosShape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaWithVideos ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithVideos/items> ;
    sh:name "items" ;
    sh:node pinterest:VideoMetadataWithItemTypeShape ;
    sh:class pinterest:VideoMetadataWithItemType ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithVideos/mediaType> ;
    sh:name "media type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "multiple_videos" ;
  ] .

# Shape for Video Metadata With Item Type
pinterest:VideoMetadataWithItemTypeShape a sh:NodeShape ;
  sh:targetClass pinterest:VideoMetadataWithItemType ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.VideoMetadataWithItemType/coverImageUrl> ;
    sh:name "cover image url" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.VideoMetadataWithItemType/duration> ;
    sh:name "duration" ;
    sh:description "Duration (in miliseconds). Field maybe null after creation due to video processing time." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.VideoMetadataWithItemType/height> ;
    sh:name "height" ;
    sh:description "Height (in pixels). Field maybe null after creation due to video processing time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.VideoMetadataWithItemType/itemType> ;
    sh:name "item type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.VideoMetadataWithItemType/videoUrl> ;
    sh:name "video url" ;
    sh:description "Video url (720p).\n\n**Note:** This field is limited and not available to all apps." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.VideoMetadataWithItemType/width> ;
    sh:name "width" ;
    sh:description "Width (in pixels). Field maybe null after creation due to video processing time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Pin Media With Image And Video
pinterest:PinMediaWithImageAndVideoShape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaWithImageAndVideo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithImageAndVideo/items> ;
    sh:name "items" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:ImageMetadataShape ; sh:class pinterest:ImageMetadata ]
      [ sh:node pinterest:VideoMetadataWithItemTypeShape ; sh:class pinterest:VideoMetadataWithItemType ]
    ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaWithImageAndVideo/mediaType> ;
    sh:name "media type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "multiple_mixed" ;
  ] .

# Shape for Targeting Spec
pinterest:TargetingSpecShape a sh:NodeShape ;
  sh:targetClass pinterest:TargetingSpec ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/AGE_BUCKET> ;
    sh:name "age bucket" ;
    sh:description "**Legacy field.** Predefined age ranges. We recommend using MINIMUM_AGE and MAXIMUM_AGE instead for more flexible targeting. Cannot be combined with MINIMUM_AGE/MAXIMUM_AGE. If neither AGE_BUCKET nor MINIMUM_AGE/MAXIMUM_AGE are specified, all ages will be targeted." ;
    sh:datatype xsd:string ;
    sh:in ( "18-24" "19+" "20+" "21+" "25-34" "35-44" "45-49" "50-54" "55-64" "65+" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/APPTYPE> ;
    sh:name "apptype" ;
    sh:description "Allowed devices. If the APPTYPE field is missing, the default behavior in terms of ad delivery is that **All devices/apptypes** will be targeted." ;
    sh:datatype xsd:string ;
    sh:in ( "android_mobile" "android_tablet" "ipad" "iphone" "web" "web_mobile" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/AUDIENCE_EXCLUDE> ;
    sh:name "audience exclude" ;
    sh:description "Excluded customer list IDs. Used to drive new customer acquisition goals. For example: [\"2542620905475\"]. Audience lists need to have at least 100 people with Pinterest accounts in them. If the AUDIENCE_EXCLUDE field is missing, the default behavior in terms of ad delivery is that **No users will be excluded**." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/AUDIENCE_INCLUDE> ;
    sh:name "audience include" ;
    sh:description "Targeted customer list IDs. For example: [\"2542620905473\"]. Audience lists need to have at least 100 people with Pinterest accounts in them Audience lists need to have at least 100 people with Pinterest accounts in them. If the AUDIENCE_INCLUDE field is missing, the default behavior in terms of ad delivery is that **All users will be included**." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/GENDER> ;
    sh:name "gender" ;
    sh:description "Targeted genders. Values: [\"unknown\",\"male\",\"female\"]. If the GENDER field is missing, the default behavior in terms of ad delivery is that **All genders will be targeted**." ;
    sh:datatype xsd:string ;
    sh:in ( "unknown" "male" "female" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/GEO> ;
    sh:name "geo" ;
    sh:description "Location region codes, e.g., \"BE-VOV\" (East Flanders, Belgium) For complete list, <a href=\"https://help.pinterest.com/sub/helpcenter/partner/pinterest_location_targeting_codes.xlsx\" target=\"_blank\">click here</a> or postal codes, e.g., \"US-94107\". Use either region codes or postal codes but not both. At least one of LOCATION or GEO must be specified. If the GEO field is missing, then only LOCATION values will be targeted (see LOCATION field below)." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/INTEREST> ;
    sh:name "interest" ;
    sh:description "Array of interest object IDs. If the INTEREST field is missing, the default behavior in terms of ad delivery is that **All interests will be targeted**." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/LOCALE> ;
    sh:name "locale" ;
    sh:description "24 ISO 639-1 two-letter language codes. If the LOCALE field is not included in the request, all languages are targeted." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/LOCATION> ;
    sh:name "location" ;
    sh:description "22 ISO Alpha 2 two letter country codes or US Nielsen DMA (Designated Market Area) codes (location region codes) (e.g., [\"US\", \"807\"]). For complete list, <a href=\"https://help.pinterest.com/sub/helpcenter/partner/pinterest_location_targeting_codes.xlsx\" target=\"_blank\">click here</a>. Location-Country and Location-Metro codes apply. At least one of LOCATION or GEO must be specified. If the LOCATION field is missing, then only GEO values will be targeted (see GEO field above)." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/MAXIMUM_AGE> ;
    sh:name "maximum age" ;
    sh:description "Maximum age to target (inclusive). Values: \"18\", \"19\", ..., \"65\", \"65+\". Must be used together with `MINIMUM_AGE`. Cannot be combined with `AGE_BUCKET`. If neither `MINIMUM_AGE`/`MAXIMUM_AGE` nor `AGE_BUCKET` are specified, all ages will be targeted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+\\+?$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/MINIMUM_AGE> ;
    sh:name "minimum age" ;
    sh:description "Minimum age to target (inclusive). Values: \"18\", \"19\", ..., \"65\". Note: 65+ is not allowed for minimum age. Must be used together with `MAXIMUM_AGE`. Cannot be combined with `AGE_BUCKET`. If neither `MINIMUM_AGE`/`MAXIMUM_AGE` nor `AGE_BUCKET` are specified, all ages will be targeted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/SHOPPING_RETARGETING> ;
    sh:name "shopping retargeting" ;
    sh:description "Array of object: lookback_window\t[Integer]: Number of days ago to start lookback timeframe for dynamic retargeting tag_types [Array of integer]: Event types to target for dynamic retargeting exclusion_window [Integer]: Number of days ago to stop lookback timeframe for dynamic retargeting" ;
    sh:node pinterest:TargetingSpecShoppingRetargetingShape ;
    sh:class pinterest:TargetingSpecShoppingRetargeting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpec/TARGETING_STRATEGY> ;
    sh:name "targeting strategy" ;
    sh:datatype xsd:string ;
    sh:in ( "CHOOSE_YOUR_OWN" "FIND_NEW_CUSTOMERS" "RECONNECT_WITH_USERS" ) ;
  ] .

# Shape for Targeting Spec Shopping Retargeting
pinterest:TargetingSpecShoppingRetargetingShape a sh:NodeShape ;
  sh:targetClass pinterest:TargetingSpecShoppingRetargeting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpecShoppingRetargeting/exclusionWindow> ;
    sh:name "exclusion window" ;
    sh:description "Number of days ago to stop lookback timeframe for dynamic retargeting" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpecShoppingRetargeting/lookbackWindow> ;
    sh:name "lookback window" ;
    sh:description "Number of days ago to start lookback timeframe for dynamic retargeting" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingSpecShoppingRetargeting/tagTypes> ;
    sh:name "tag types" ;
    sh:description "Event types to target for dynamic retargeting" ;
    sh:datatype xsd:int ;
  ] .

# Shape for Tracking Urls
pinterest:TrackingUrlsShape a sh:NodeShape ;
  sh:targetClass pinterest:TrackingUrls ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrackingUrls/audienceVerification> ;
    sh:name "audience verification" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrackingUrls/buyableButton> ;
    sh:name "buyable button" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrackingUrls/click> ;
    sh:name "click" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrackingUrls/engagement> ;
    sh:name "engagement" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrackingUrls/impression> ;
    sh:name "impression" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Local Store Update
pinterest:LocalStoreShape a sh:NodeShape ;
  sh:targetClass pinterest:LocalStore ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LocalStoreUpdate/addressPrimary> ;
    sh:name "address primary" ;
    sh:description "Primary address line of the store." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LocalStoreUpdate/addressSecondary> ;
    sh:name "address secondary" ;
    sh:description "Secondary address line of the store." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LocalStoreUpdate/city> ;
    sh:name "city" ;
    sh:description "City where the store is located." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LocalStoreUpdate/country> ;
    sh:name "country" ;
    sh:description "Country code where the store is located." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LocalStoreUpdate/id> ;
    sh:name "id" ;
    sh:description "The ID of the local store." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LocalStoreUpdate/latitude> ;
    sh:name "latitude" ;
    sh:description "Geographic latitude coordinate of the store." ;
    sh:datatype xsd:float ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LocalStoreUpdate/longitude> ;
    sh:name "longitude" ;
    sh:description "Geographic longitude coordinate of the store." ;
    sh:datatype xsd:float ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LocalStoreUpdate/name> ;
    sh:name "name" ;
    sh:description "The name of the local store." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LocalStoreUpdate/postalCode> ;
    sh:name "postal code" ;
    sh:description "Postal or ZIP code of the store." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LocalStoreUpdate/region> ;
    sh:name "region" ;
    sh:description "State or region code where the store is located." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LocalStoreUpdate/storeCode> ;
    sh:name "store code" ;
    sh:description "Merchant provided code for the local store. Unique within the merchant's catalog." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Tag Response
pinterest:ConversionTagResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionTagResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagResponse/codeSnippet> ;
    sh:name "code snippet" ;
    sh:description "Tag code snippet." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagResponse/configs> ;
    sh:name "configs" ;
    sh:node pinterest:ConversionTagConfigsShape ;
    sh:class pinterest:ConversionTagConfigs ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagResponse/enhancedMatchStatus> ;
    sh:name "enhanced match status" ;
    sh:description "The enhanced match status of the tag" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNKNOWN" "NOT_VALIDATED" "VALIDATING_IN_PROGRESS" "VALIDATION_COMPLETE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagResponse/id> ;
    sh:name "id" ;
    sh:description "Tag ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagResponse/lastFiredTimeMs> ;
    sh:name "last fired time ms" ;
    sh:description "Time for the last event fired." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagResponse/name> ;
    sh:name "name" ;
    sh:description "Conversion tag name." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagResponse/version> ;
    sh:name "version" ;
    sh:description "Version number." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagResponse/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Ad account ID." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagResponse/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] .

# Shape for Item Create Batch Record
pinterest:ItemCreateBatchRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:ItemCreateBatchRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemCreateBatchRecord/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:ItemAttributesRequestShape ;
    sh:class pinterest:ItemAttributesRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemCreateBatchRecord/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Item Attributes Request
pinterest:ItemAttributesRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:ItemAttributesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage0Link> ;
    sh:name "ad image0link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage0Tag> ;
    sh:name "ad image0tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage10Link> ;
    sh:name "ad image10link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage10Tag> ;
    sh:name "ad image10tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage11Link> ;
    sh:name "ad image11link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage11Tag> ;
    sh:name "ad image11tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage12Link> ;
    sh:name "ad image12link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage12Tag> ;
    sh:name "ad image12tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage13Link> ;
    sh:name "ad image13link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage13Tag> ;
    sh:name "ad image13tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage14Link> ;
    sh:name "ad image14link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage14Tag> ;
    sh:name "ad image14tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage15Link> ;
    sh:name "ad image15link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage15Tag> ;
    sh:name "ad image15tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage16Link> ;
    sh:name "ad image16link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage16Tag> ;
    sh:name "ad image16tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage17Link> ;
    sh:name "ad image17link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage17Tag> ;
    sh:name "ad image17tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage18Link> ;
    sh:name "ad image18link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage18Tag> ;
    sh:name "ad image18tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage19Link> ;
    sh:name "ad image19link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage19Tag> ;
    sh:name "ad image19tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage1Link> ;
    sh:name "ad image1link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage1Tag> ;
    sh:name "ad image1tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage2Link> ;
    sh:name "ad image2link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage2Tag> ;
    sh:name "ad image2tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage3Link> ;
    sh:name "ad image3link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage3Tag> ;
    sh:name "ad image3tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage4Link> ;
    sh:name "ad image4link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage4Tag> ;
    sh:name "ad image4tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage5Link> ;
    sh:name "ad image5link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage5Tag> ;
    sh:name "ad image5tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage6Link> ;
    sh:name "ad image6link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage6Tag> ;
    sh:name "ad image6tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage7Link> ;
    sh:name "ad image7link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage7Tag> ;
    sh:name "ad image7tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage8Link> ;
    sh:name "ad image8link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage8Tag> ;
    sh:name "ad image8tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage9Link> ;
    sh:name "ad image9link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adImage9Tag> ;
    sh:name "ad image9tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adLink> ;
    sh:name "ad link" ;
    sh:description "Allows advertisers to specify a separate URL that can be used to track traffic coming from Pinterest shopping ads. Must send full URL including tracking—do not send tracking parameters only. At this time we do not support impression tracking. Must begin with http:// or https://." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adVideo0Link> ;
    sh:name "ad video0link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad video link that supplements main video for shopping campaigns.</p>\n<p>Video format:</p>\n<ul>\n  <li>Pixel size between 75 x 75 and 9450 x 9450</li>\n  <li>File size smaller than 2 GB</li>\n  <li>Time span between 4 seconds and 15 minutes</li>\n  <li>Accepted formats: .MP4, .MOV, .M4V</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder videos in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adVideo0Tag> ;
    sh:name "ad video0tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_video_x_link, include the video tag with the corresponding ad_video_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adVideo1Link> ;
    sh:name "ad video1link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad video link that supplements main video for shopping campaigns.</p>\n<p>Video format:</p>\n<ul>\n  <li>Pixel size between 75 x 75 and 9450 x 9450</li>\n  <li>File size smaller than 2 GB</li>\n  <li>Time span between 4 seconds and 15 minutes</li>\n  <li>Accepted formats: .MP4, .MOV, .M4V</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder videos in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adVideo1Tag> ;
    sh:name "ad video1tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_video_x_link, include the video tag with the corresponding ad_video_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adVideo2Link> ;
    sh:name "ad video2link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad video link that supplements main video for shopping campaigns.</p>\n<p>Video format:</p>\n<ul>\n  <li>Pixel size between 75 x 75 and 9450 x 9450</li>\n  <li>File size smaller than 2 GB</li>\n  <li>Time span between 4 seconds and 15 minutes</li>\n  <li>Accepted formats: .MP4, .MOV, .M4V</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder videos in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adVideo2Tag> ;
    sh:name "ad video2tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_video_x_link, include the video tag with the corresponding ad_video_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/adult> ;
    sh:name "adult" ;
    sh:description "Set this attribute to TRUE if you're submitting items that are considered “adult”. These will not be shown on Pinterest." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/ageGroup> ;
    sh:name "age group" ;
    sh:description "The age group to apply a demographic range to the product. Must be one of the following values (upper or lowercased): ‘newborn’, ‘infant’, ‘toddler’, ‘kids’, or ‘adult’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/androidDeepLink> ;
    sh:name "android deep link" ;
    sh:description "The deep link to the product on the Android app." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/availability> ;
    sh:name "availability" ;
    sh:description "The availability of the product. Must be one of the following values (upper or lowercased): ‘in stock’, ‘out of stock’, ‘preorder’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/averageReviewRating> ;
    sh:name "average review rating" ;
    sh:description "Average reviews for the item. Can be a number from 1-5." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/brand> ;
    sh:name "brand" ;
    sh:description "The brand of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/checkoutEnabled> ;
    sh:name "checkout enabled" ;
    sh:description "This attribute is not supported anymore." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/color> ;
    sh:name "color" ;
    sh:description "The primary color of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/condition> ;
    sh:name "condition" ;
    sh:description "The condition of the product. Must be one of the following values (upper or lowercased): ‘new’, ‘used’, or ‘refurbished’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/customLabel0> ;
    sh:name "custom label0" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/customLabel1> ;
    sh:name "custom label1" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/customLabel2> ;
    sh:name "custom label2" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/customLabel3> ;
    sh:name "custom label3" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/customLabel4> ;
    sh:name "custom label4" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/customNumber0> ;
    sh:name "custom number0" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/customNumber1> ;
    sh:name "custom number1" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/customNumber2> ;
    sh:name "custom number2" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/customNumber3> ;
    sh:name "custom number3" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/customNumber4> ;
    sh:name "custom number4" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/description> ;
    sh:name "description" ;
    sh:description "<p><= 10000 characters</p>\n<p>The description of the product.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/freeShippingLabel> ;
    sh:name "free shipping label" ;
    sh:description "The item is free to ship." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/freeShippingLimit> ;
    sh:name "free shipping limit" ;
    sh:description "The minimum order purchase necessary for the customer to get free shipping. Only relevant if free shipping is offered." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/gender> ;
    sh:name "gender" ;
    sh:description "The gender associated with the product. Must be one of the following values (upper or lowercased): ‘male’, ‘female’, or ‘unisex’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/googleProductCategory> ;
    sh:name "google product category" ;
    sh:description "The categorization of the product based on the standardized Google Product Taxonomy. This is a set taxonomy. Both the text values and numeric codes are accepted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/gtin> ;
    sh:name "gtin" ;
    sh:description "The unique universal product identifier." ;
    sh:or (
      [ sh:datatype xsd:int ]
      [ sh:datatype xsd:string ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/id> ;
    sh:name "id" ;
    sh:description "<p><= 127 characters</p>\n<p>The user-created unique ID that represents the product. Only\nUnicode characters are accepted.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/installmentPrice> ;
    sh:name "installment price" ;
    sh:description "Installment price of the product. This data will only be shown to pinners in the enabled countries. Expected format: <payment_count>:<payment_amount> <currency>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/iosDeepLink> ;
    sh:name "ios deep link" ;
    sh:description "The deep link to the product on the iOS app." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/itemGroupId> ;
    sh:name "item group id" ;
    sh:description "<p><= 127 characters</p>\n<p>The parent ID of the product.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/lastUpdatedTime> ;
    sh:name "last updated time" ;
    sh:description "The millisecond timestamp when the item was lastly modified by the merchant." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/link> ;
    sh:name "link" ;
    sh:description "<p><= 511 characters</p>\n<p>The landing page for the product.</p>" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/material> ;
    sh:name "material" ;
    sh:description "The material used to make the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/minAdPrice> ;
    sh:name "min ad price" ;
    sh:description "The minimum advertised price of the product. It supports the following formats, \"19.99 USD\", \"19.99USD\" and \"19.99\". If the currency is not included, we default to US dollars." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/mobileLink> ;
    sh:name "mobile link" ;
    sh:description "The mobile-optimized version of your landing page. Must begin with http:// or https://." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/mpn> ;
    sh:name "mpn" ;
    sh:description "Manufacturer Part Number are alpha-numeric codes created by the manufacturer of a product to uniquely identify it among all products from the same manufacturer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/numberOfRatings> ;
    sh:name "number of ratings" ;
    sh:description "The number of ratings for the item." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/numberOfReviews> ;
    sh:name "number of reviews" ;
    sh:description "The number of reviews available for the item." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/pattern> ;
    sh:name "pattern" ;
    sh:description "The description of the pattern used for the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/price> ;
    sh:name "price" ;
    sh:description "The price of the product. It supports the following formats, \"24.99 USD\", \"24.99USD\" and \"24.99\". If the currency is not included, we default to US dollars." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/productType> ;
    sh:name "product type" ;
    sh:description "<p><= 1000 characters</p>\n<p>The categorization of your product based on your custom product\ntaxonomy. Subcategories must be sent separated by “ > “. The > must be\nwrapped by spaces. We do not recognize any other delimiters such as comma\nor pipe.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/promotionId> ;
    sh:name "promotion id" ;
    sh:description "A unique identifier referencing the promotion associated with this catalog item." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/salePrice> ;
    sh:name "sale price" ;
    sh:description "The discounted price of the product. The sale_price must be lower than the price. It supports the following formats, \"14.99 USD\", \"14.99USD\" and \"14.99\". If the currency is not included, we default to US dollars." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/salePriceEffectiveDate> ;
    sh:name "sale price effective date" ;
    sh:description "Sale price effective date. Expected format: <start_date>/<end_date> (ISO 8601 format)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/shipping> ;
    sh:name "shipping" ;
    sh:description "Shipping consists of one group of up to four elements, country, region, service (all optional) and price (required). All colons, even for blank values, are required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/shippingHeight> ;
    sh:name "shipping height" ;
    sh:description "The height of the package needed to ship the product. Ensure there is a space between the numeric string and the metric." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/shippingWeight> ;
    sh:name "shipping weight" ;
    sh:description "The weight of the product. Ensure there is a space between the numeric string and the metric." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/shippingWidth> ;
    sh:name "shipping width" ;
    sh:description "The width of the package needed to ship the product. Ensure there is a space between the numeric string and the metric." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/size> ;
    sh:name "size" ;
    sh:description "The size of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/sizeSystem> ;
    sh:name "size system" ;
    sh:description "Indicates the country’s sizing system in which you are submitting your product. Must be one of the following values (upper or lowercased): ‘US’, ‘UK’, ‘EU’, ‘DE’, ‘FR’, ‘JP’, ‘CN’, ‘IT’, ‘BR’, ‘MEX’, or ‘AU’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/sizeType> ;
    sh:name "size type" ;
    sh:description "Additional description for the size. Must be one of the following values (upper or lowercased): ‘regular’, ‘petite’, ‘plus’, ‘big_and_tall’, or ‘maternity’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/tax> ;
    sh:name "tax" ;
    sh:description "Tax consists of one group of up to four elements, country, region, rate (all required) and tax_ship (optional). All colons, even for blank values, are required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/title> ;
    sh:name "title" ;
    sh:description "<p><= 500 characters</p>\n<p>The name of the product.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/unitPricingBaseMeasure> ;
    sh:name "unit pricing base measure" ;
    sh:description "Unit pricing base measure of the product. This data will only be shown to pinners in the enabled countries. Expected format: <base_measure> <unit_type>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/unitPricingMeasure> ;
    sh:name "unit pricing measure" ;
    sh:description "Unit pricing total measure of the product. This data will only be shown to pinners in the enabled countries. Expected format: <total_units> <unit_type>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/variantNames> ;
    sh:name "variant names" ;
    sh:description "Options for this variant. People will see these options next to your Pin and can select the one they want. List them in the order you want them displayed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/variantValues> ;
    sh:name "variant values" ;
    sh:description "Option values for this variant. People will see these options next to your Pin and can select the one they want. List them in the order you want them displayed. The order of the variant values must be consistent with the order of the variant names." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/additionalImageLink> ;
    sh:name "additional image link" ;
    sh:description "<p><= 2000 characters</p>\n<p>The links to additional images for your product. Up to ten\nadditional images can be used to show a product from different angles\nor to show different stages. Must begin with http:// or https://.</p>" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/imageLink> ;
    sh:name "image link" ;
    sh:description "<p><= 2000 characters</p>\n<p>The links to the main product images. Images should be at least\n75x75 pixels to avoid errors. Use the additional_image_link field to add\nmore images of your product. The URL of your image_link must be accessible\nby the Pinterest user-agent, and send the accurate images. Please make\nsure there are no template or placeholder images at the link. Must start\nwith http:// or https://.</p>" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/savePinDisabled> ;
    sh:name "save pin disabled" ;
    sh:description "By default, product pins created from a catalog are able to be saved by Pinners. If you want to disable the save pin feature, set this attribute to true. This feature is only available for allowlisted merchants. Please contact your account manager to enable this feature." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributesRequest/videoLink> ;
    sh:name "video link" ;
    sh:description "<p><= 2,000 characters</p>\n<p>Hosted link to the product video.</p>\n<p>File types for linked videos must be .mp4, .mov or .m4v.</p>\n<p>File size cannot exceed 2GB.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Updatable Item Attributes
pinterest:UpdatableItemAttributesShape a sh:NodeShape ;
  sh:targetClass pinterest:UpdatableItemAttributes ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage0Link> ;
    sh:name "ad image0link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage0Tag> ;
    sh:name "ad image0tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage10Link> ;
    sh:name "ad image10link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage10Tag> ;
    sh:name "ad image10tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage11Link> ;
    sh:name "ad image11link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage11Tag> ;
    sh:name "ad image11tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage12Link> ;
    sh:name "ad image12link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage12Tag> ;
    sh:name "ad image12tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage13Link> ;
    sh:name "ad image13link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage13Tag> ;
    sh:name "ad image13tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage14Link> ;
    sh:name "ad image14link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage14Tag> ;
    sh:name "ad image14tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage15Link> ;
    sh:name "ad image15link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage15Tag> ;
    sh:name "ad image15tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage16Link> ;
    sh:name "ad image16link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage16Tag> ;
    sh:name "ad image16tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage17Link> ;
    sh:name "ad image17link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage17Tag> ;
    sh:name "ad image17tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage18Link> ;
    sh:name "ad image18link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage18Tag> ;
    sh:name "ad image18tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage19Link> ;
    sh:name "ad image19link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage19Tag> ;
    sh:name "ad image19tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage1Link> ;
    sh:name "ad image1link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage1Tag> ;
    sh:name "ad image1tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage2Link> ;
    sh:name "ad image2link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage2Tag> ;
    sh:name "ad image2tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage3Link> ;
    sh:name "ad image3link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage3Tag> ;
    sh:name "ad image3tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage4Link> ;
    sh:name "ad image4link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage4Tag> ;
    sh:name "ad image4tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage5Link> ;
    sh:name "ad image5link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage5Tag> ;
    sh:name "ad image5tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage6Link> ;
    sh:name "ad image6link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage6Tag> ;
    sh:name "ad image6tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage7Link> ;
    sh:name "ad image7link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage7Tag> ;
    sh:name "ad image7tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage8Link> ;
    sh:name "ad image8link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage8Tag> ;
    sh:name "ad image8tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage9Link> ;
    sh:name "ad image9link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adImage9Tag> ;
    sh:name "ad image9tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adLink> ;
    sh:name "ad link" ;
    sh:description "Allows advertisers to specify a separate URL that can be used to track traffic coming from Pinterest shopping ads. Must send full URL including tracking—do not send tracking parameters only. At this time we do not support impression tracking. Must begin with http:// or https://." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adVideo0Link> ;
    sh:name "ad video0link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad video link that supplements main video for shopping campaigns.</p>\n<p>Video format:</p>\n<ul>\n  <li>Pixel size between 75 x 75 and 9450 x 9450</li>\n  <li>File size smaller than 2 GB</li>\n  <li>Time span between 4 seconds and 15 minutes</li>\n  <li>Accepted formats: .MP4, .MOV, .M4V</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder videos in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adVideo0Tag> ;
    sh:name "ad video0tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_video_x_link, include the video tag with the corresponding ad_video_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adVideo1Link> ;
    sh:name "ad video1link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad video link that supplements main video for shopping campaigns.</p>\n<p>Video format:</p>\n<ul>\n  <li>Pixel size between 75 x 75 and 9450 x 9450</li>\n  <li>File size smaller than 2 GB</li>\n  <li>Time span between 4 seconds and 15 minutes</li>\n  <li>Accepted formats: .MP4, .MOV, .M4V</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder videos in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adVideo1Tag> ;
    sh:name "ad video1tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_video_x_link, include the video tag with the corresponding ad_video_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adVideo2Link> ;
    sh:name "ad video2link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad video link that supplements main video for shopping campaigns.</p>\n<p>Video format:</p>\n<ul>\n  <li>Pixel size between 75 x 75 and 9450 x 9450</li>\n  <li>File size smaller than 2 GB</li>\n  <li>Time span between 4 seconds and 15 minutes</li>\n  <li>Accepted formats: .MP4, .MOV, .M4V</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder videos in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adVideo2Tag> ;
    sh:name "ad video2tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_video_x_link, include the video tag with the corresponding ad_video_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/adult> ;
    sh:name "adult" ;
    sh:description "Set this attribute to TRUE if you're submitting items that are considered “adult”. These will not be shown on Pinterest." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/ageGroup> ;
    sh:name "age group" ;
    sh:description "The age group to apply a demographic range to the product. Must be one of the following values (upper or lowercased): ‘newborn’, ‘infant’, ‘toddler’, ‘kids’, or ‘adult’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/androidDeepLink> ;
    sh:name "android deep link" ;
    sh:description "The deep link to the product on the Android app." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/availability> ;
    sh:name "availability" ;
    sh:description "The availability of the product. Must be one of the following values (upper or lowercased): ‘in stock’, ‘out of stock’, ‘preorder’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/averageReviewRating> ;
    sh:name "average review rating" ;
    sh:description "Average reviews for the item. Can be a number from 1-5." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/brand> ;
    sh:name "brand" ;
    sh:description "The brand of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/checkoutEnabled> ;
    sh:name "checkout enabled" ;
    sh:description "This attribute is not supported anymore." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/color> ;
    sh:name "color" ;
    sh:description "The primary color of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/condition> ;
    sh:name "condition" ;
    sh:description "The condition of the product. Must be one of the following values (upper or lowercased): ‘new’, ‘used’, or ‘refurbished’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/customLabel0> ;
    sh:name "custom label0" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/customLabel1> ;
    sh:name "custom label1" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/customLabel2> ;
    sh:name "custom label2" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/customLabel3> ;
    sh:name "custom label3" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/customLabel4> ;
    sh:name "custom label4" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/customNumber0> ;
    sh:name "custom number0" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/customNumber1> ;
    sh:name "custom number1" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/customNumber2> ;
    sh:name "custom number2" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/customNumber3> ;
    sh:name "custom number3" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/customNumber4> ;
    sh:name "custom number4" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/description> ;
    sh:name "description" ;
    sh:description "<p><= 10000 characters</p>\n<p>The description of the product.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/freeShippingLabel> ;
    sh:name "free shipping label" ;
    sh:description "The item is free to ship." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/freeShippingLimit> ;
    sh:name "free shipping limit" ;
    sh:description "The minimum order purchase necessary for the customer to get free shipping. Only relevant if free shipping is offered." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/gender> ;
    sh:name "gender" ;
    sh:description "The gender associated with the product. Must be one of the following values (upper or lowercased): ‘male’, ‘female’, or ‘unisex’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/googleProductCategory> ;
    sh:name "google product category" ;
    sh:description "The categorization of the product based on the standardized Google Product Taxonomy. This is a set taxonomy. Both the text values and numeric codes are accepted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/gtin> ;
    sh:name "gtin" ;
    sh:description "The unique universal product identifier." ;
    sh:or (
      [ sh:datatype xsd:int ]
      [ sh:datatype xsd:string ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/id> ;
    sh:name "id" ;
    sh:description "<p><= 127 characters</p>\n<p>The user-created unique ID that represents the product. Only\nUnicode characters are accepted.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/installmentPrice> ;
    sh:name "installment price" ;
    sh:description "Installment price of the product. This data will only be shown to pinners in the enabled countries. Expected format: <payment_count>:<payment_amount> <currency>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/iosDeepLink> ;
    sh:name "ios deep link" ;
    sh:description "The deep link to the product on the iOS app." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/itemGroupId> ;
    sh:name "item group id" ;
    sh:description "<p><= 127 characters</p>\n<p>The parent ID of the product.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/lastUpdatedTime> ;
    sh:name "last updated time" ;
    sh:description "The millisecond timestamp when the item was lastly modified by the merchant." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/link> ;
    sh:name "link" ;
    sh:description "<p><= 511 characters</p>\n<p>The landing page for the product.</p>" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/material> ;
    sh:name "material" ;
    sh:description "The material used to make the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/minAdPrice> ;
    sh:name "min ad price" ;
    sh:description "The minimum advertised price of the product. It supports the following formats, \"19.99 USD\", \"19.99USD\" and \"19.99\". If the currency is not included, we default to US dollars." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/mobileLink> ;
    sh:name "mobile link" ;
    sh:description "The mobile-optimized version of your landing page. Must begin with http:// or https://." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/mpn> ;
    sh:name "mpn" ;
    sh:description "Manufacturer Part Number are alpha-numeric codes created by the manufacturer of a product to uniquely identify it among all products from the same manufacturer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/numberOfRatings> ;
    sh:name "number of ratings" ;
    sh:description "The number of ratings for the item." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/numberOfReviews> ;
    sh:name "number of reviews" ;
    sh:description "The number of reviews available for the item." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/pattern> ;
    sh:name "pattern" ;
    sh:description "The description of the pattern used for the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/price> ;
    sh:name "price" ;
    sh:description "The price of the product. It supports the following formats, \"24.99 USD\", \"24.99USD\" and \"24.99\". If the currency is not included, we default to US dollars." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/productType> ;
    sh:name "product type" ;
    sh:description "<p><= 1000 characters</p>\n<p>The categorization of your product based on your custom product\ntaxonomy. Subcategories must be sent separated by “ > “. The > must be\nwrapped by spaces. We do not recognize any other delimiters such as comma\nor pipe.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/promotionId> ;
    sh:name "promotion id" ;
    sh:description "A unique identifier referencing the promotion associated with this catalog item." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/salePrice> ;
    sh:name "sale price" ;
    sh:description "The discounted price of the product. The sale_price must be lower than the price. It supports the following formats, \"14.99 USD\", \"14.99USD\" and \"14.99\". If the currency is not included, we default to US dollars." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/salePriceEffectiveDate> ;
    sh:name "sale price effective date" ;
    sh:description "Sale price effective date. Expected format: <start_date>/<end_date> (ISO 8601 format)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/shipping> ;
    sh:name "shipping" ;
    sh:description "Shipping consists of one group of up to four elements, country, region, service (all optional) and price (required). All colons, even for blank values, are required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/shippingHeight> ;
    sh:name "shipping height" ;
    sh:description "The height of the package needed to ship the product. Ensure there is a space between the numeric string and the metric." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/shippingWeight> ;
    sh:name "shipping weight" ;
    sh:description "The weight of the product. Ensure there is a space between the numeric string and the metric." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/shippingWidth> ;
    sh:name "shipping width" ;
    sh:description "The width of the package needed to ship the product. Ensure there is a space between the numeric string and the metric." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/size> ;
    sh:name "size" ;
    sh:description "The size of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/sizeSystem> ;
    sh:name "size system" ;
    sh:description "Indicates the country’s sizing system in which you are submitting your product. Must be one of the following values (upper or lowercased): ‘US’, ‘UK’, ‘EU’, ‘DE’, ‘FR’, ‘JP’, ‘CN’, ‘IT’, ‘BR’, ‘MEX’, or ‘AU’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/sizeType> ;
    sh:name "size type" ;
    sh:description "Additional description for the size. Must be one of the following values (upper or lowercased): ‘regular’, ‘petite’, ‘plus’, ‘big_and_tall’, or ‘maternity’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/tax> ;
    sh:name "tax" ;
    sh:description "Tax consists of one group of up to four elements, country, region, rate (all required) and tax_ship (optional). All colons, even for blank values, are required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/title> ;
    sh:name "title" ;
    sh:description "<p><= 500 characters</p>\n<p>The name of the product.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/unitPricingBaseMeasure> ;
    sh:name "unit pricing base measure" ;
    sh:description "Unit pricing base measure of the product. This data will only be shown to pinners in the enabled countries. Expected format: <base_measure> <unit_type>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/unitPricingMeasure> ;
    sh:name "unit pricing measure" ;
    sh:description "Unit pricing total measure of the product. This data will only be shown to pinners in the enabled countries. Expected format: <total_units> <unit_type>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/variantNames> ;
    sh:name "variant names" ;
    sh:description "Options for this variant. People will see these options next to your Pin and can select the one they want. List them in the order you want them displayed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatableItemAttributes/variantValues> ;
    sh:name "variant values" ;
    sh:description "Option values for this variant. People will see these options next to your Pin and can select the one they want. List them in the order you want them displayed. The order of the variant values must be consistent with the order of the variant names." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Item Delete Discontinued Batch Record
pinterest:ItemDeleteDiscontinuedBatchRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:ItemDeleteDiscontinuedBatchRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemDeleteDiscontinuedBatchRecord/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Item Update Batch Record
pinterest:ItemUpdateBatchRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:ItemUpdateBatchRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemUpdateBatchRecord/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:UpdatableItemAttributesShape ;
    sh:class pinterest:UpdatableItemAttributes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemUpdateBatchRecord/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemUpdateBatchRecord/updateMask> ;
    sh:name "update mask" ;
    sh:description "The list of product attributes to be updated. Attributes specified in the update mask without a value specified in the body will be deleted from the product item." ;
    sh:datatype xsd:string ;
    sh:in ( "ad_link" "adult" "age_group" "availability" "average_review_rating" "brand" "checkout_enabled" "color" "condition" "custom_label_0" "custom_label_1" "custom_label_2" "custom_label_3" "custom_label_4" "custom_number_0" "custom_number_1" "custom_number_2" "custom_number_3" "custom_number_4" "description" "free_shipping_label" "free_shipping_limit" "gender" "google_product_category" "gtin" "item_group_id" "last_updated_time" "link" "material" "min_ad_price" "mpn" "number_of_ratings" "number_of_reviews" "pattern" "price" "product_type" "sale_price" "shipping" "shipping_height" "shipping_weight" "shipping_width" "size" "size_system" "size_type" "tax" "title" "variant_names" "variant_values" "promotion_id" ) ;
  ] .

# Shape for Item Upsert Batch Record
pinterest:ItemUpsertBatchRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:ItemUpsertBatchRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemUpsertBatchRecord/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:ItemAttributesRequestShape ;
    sh:class pinterest:ItemAttributesRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemUpsertBatchRecord/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Item Delete Batch Record
pinterest:ItemDeleteBatchRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:ItemDeleteBatchRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemDeleteBatchRecord/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ads Analytics Create Async Request
pinterest:AdsAnalyticsCreateAsyncRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:AdsAnalyticsCreateAsyncRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/attributionTypes> ;
    sh:name "attribution types" ;
    sh:description "List of types of attribution for the conversion report" ;
    sh:datatype xsd:string ;
    sh:in ( "INDIVIDUAL" "HOUSEHOLD" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/clickWindowDays> ;
    sh:name "click window days" ;
    sh:description "Number of days to use as the conversion attribution window for a pin click action. Applies to Pinterest Tag conversion metrics. Prior conversion tags use their defined attribution windows. If not specified, defaults to `30` days." ;
    sh:datatype xsd:integer ;
    sh:maxCount 1 ;
    sh:in ( "0"^^xsd:integer "1"^^xsd:integer "7"^^xsd:integer "14"^^xsd:integer "30"^^xsd:integer "60"^^xsd:integer ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/conversionReportTime> ;
    sh:name "conversion report time" ;
    sh:description "The date by which the conversion metrics returned from this endpoint will be reported. There are two dates associated with a conversion event: the date that the user interacted with the ad, and the date that the user completed a conversion event." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TIME_OF_AD_ACTION" "TIME_OF_CONVERSION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/endDate> ;
    sh:name "end date" ;
    sh:description "Metric report end date (UTC). Format: YYYY-MM-DD" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/engagementWindowDays> ;
    sh:name "engagement window days" ;
    sh:description "Number of days to use as the conversion attribution window for an engagement action. Engagements include saves, closeups, link clicks, and carousel card swipes. Applies to Pinterest Tag conversion metrics. Prior conversion tags use their defined attribution windows. If not specified, defaults to `30` days." ;
    sh:datatype xsd:integer ;
    sh:maxCount 1 ;
    sh:in ( "0"^^xsd:integer "1"^^xsd:integer "7"^^xsd:integer "14"^^xsd:integer "30"^^xsd:integer "60"^^xsd:integer ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/granularity> ;
    sh:name "granularity" ;
    sh:description "TOTAL - metrics are aggregated over the specified date range.<br> DAY - metrics are broken down daily.<br> HOUR - metrics are broken down hourly.<br>WEEKLY - metrics are broken down weekly.<br>MONTHLY - metrics are broken down monthly" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "TOTAL" "DAY" "HOUR" "WEEK" "MONTH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/startDate> ;
    sh:name "start date" ;
    sh:description "Metric report start date (UTC). Format: YYYY-MM-DD" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/viewWindowDays> ;
    sh:name "view window days" ;
    sh:description "Number of days to use as the conversion attribution window for a view action. Applies to Pinterest Tag conversion metrics. Prior conversion tags use their defined attribution windows. If not specified, defaults to `1` day." ;
    sh:datatype xsd:integer ;
    sh:maxCount 1 ;
    sh:in ( "0"^^xsd:integer "1"^^xsd:integer "7"^^xsd:integer "14"^^xsd:integer "30"^^xsd:integer "60"^^xsd:integer ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/columns> ;
    sh:name "columns" ;
    sh:description "Metric and entity columns. Pin promotion and ad related columns are not supported for the Product Item level reports." ;
    sh:datatype xsd:string ;
    sh:in ( "SPEND_IN_MICRO_DOLLAR" "ADS_CREDIT_SPEND_IN_MICRO_DOLLAR" "ADS_CREDIT_SPEND_IN_DOLLAR" "PAID_IMPRESSION" "SPEND_IN_DOLLAR" "CPC_IN_MICRO_DOLLAR" "ECPC_IN_MICRO_DOLLAR" "ECPC_IN_DOLLAR" "CTR" "ECTR" "OUTBOUND_CTR" "OUTBOUND_CTR_1" "COST_PER_OUTBOUND_CLICK" "CAMPAIGN_NAME" "CAMPAIGN_STATUS" "CAMPAIGN_BRAND_LABEL" "CAMPAIGN_CUSTOM_LABELS" "PIN_PROMOTION_STATUS" "AD_STATUS" "PIN_ID" "TOTAL_ENGAGEMENT" "ENGAGEMENT_1" "ENGAGEMENT_2" "ECPE_IN_DOLLAR" "ENGAGEMENT_RATE" "EENGAGEMENT_RATE" "ECPM_IN_MICRO_DOLLAR" "REPIN_RATE" "CTR_2" "CAMPAIGN_ID" "ADVERTISER_ID" "AD_ACCOUNT_ID" "PIN_PROMOTION_ID" "AD_ID" "AD_GROUP_ID" "CAMPAIGN_ENTITY_STATUS" "CAMPAIGN_MANAGED_STATUS" "CAMPAIGN_OBJECTIVE_TYPE" "CPM_IN_MICRO_DOLLAR" "CPM_IN_DOLLAR" "AD_GROUP_NAME" "AD_GROUP_STATUS" "AD_GROUP_BUDGET_TYPE" "AD_GROUP_BUDGET_IN_LOCAL_CURRENCY" "AD_GROUP_ENTITY_STATUS" "AD_GROUP_BID_MULTIPLIER" "PRODUCT_GROUP_ID" "PRODUCT_GROUP_STATUS" "PROMO_ID" "PROMO_NAME" "PRODUCT_ITEM_NAME" "PRODUCT_ITEM_IMAGE_URL" "PRODUCT_ITEM_PRICE" "PRODUCT_ITEM_PRODUCT_URL" "PRODUCT_ITEM_PIN_URL" "PRODUCT_ITEM_BRAND" "PRODUCT_ITEM_DESCRIPTION" "PRODUCT_ITEM_SALE_PRICE" "PRODUCT_ITEM_PRODUCT_TYPE" "PRODUCT_ITEM_PRODUCT_CATEGORY" "PRODUCT_ITEM_CURRENCY" "ORDER_LINE_ID" "ORDER_LINE_NAME" "CLICKTHROUGH_1" "REPIN_1" "IMPRESSION_1" "IMPRESSION_1_GROSS" "CLICKTHROUGH_1_GROSS" "OUTBOUND_CLICK_1" "CLICKTHROUGH_2" "REPIN_2" "IMPRESSION_2" "OUTBOUND_CLICK_2" "TOTAL_CLICKTHROUGH" "TOTAL_IMPRESSION" "TOTAL_IMPRESSION_USER" "TOTAL_IMPRESSION_FREQUENCY" "COST_PER_OUTBOUND_CLICK_IN_DOLLAR" "COST_PER_OUTBOUND_CLICK_IN_DOLLAR_1" "TOTAL_ENGAGEMENT_PAGE_VISIT" "TOTAL_ENGAGEMENT_SIGNUP" "TOTAL_ENGAGEMENT_CHECKOUT" "TOTAL_ENGAGEMENT_CUSTOM" "TOTAL_ENGAGEMENT_ADD_TO_CART" "TOTAL_ENGAGEMENT_LEAD" "TOTAL_ENGAGEMENT_SEARCH" "TOTAL_ENGAGEMENT_WATCH_VIDEO" "TOTAL_ENGAGEMENT_VIEW_CATEGORY" "TOTAL_ENGAGEMENT_APP_INSTALL" "TOTAL_ENGAGEMENT_UNKNOWN" "TOTAL_CLICK_PAGE_VISIT" "TOTAL_CLICK_SIGNUP" "TOTAL_CLICK_CHECKOUT" "TOTAL_CLICK_CUSTOM" "TOTAL_CLICK_ADD_TO_CART" "TOTAL_CLICK_LEAD" "TOTAL_CLICK_SEARCH" "TOTAL_CLICK_WATCH_VIDEO" "TOTAL_CLICK_VIEW_CATEGORY" "TOTAL_CLICK_APP_INSTALL" "TOTAL_CLICK_UNKNOWN" "TOTAL_VIEW_PAGE_VISIT" "TOTAL_VIEW_SIGNUP" "TOTAL_VIEW_CHECKOUT" "TOTAL_VIEW_CUSTOM" "TOTAL_VIEW_ADD_TO_CART" "TOTAL_VIEW_LEAD" "TOTAL_VIEW_SEARCH" "TOTAL_VIEW_WATCH_VIDEO" "TOTAL_VIEW_VIEW_CATEGORY" "TOTAL_VIEW_APP_INSTALL" "TOTAL_VIEW_UNKNOWN" "TOTAL_CONVERSIONS" "TOTAL_ENGAGEMENT_PAGE_VISIT_VALUE_IN_MICRO_DOLLAR" "TOTAL_ENGAGEMENT_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_ENGAGEMENT_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_ENGAGEMENT_CUSTOM_VALUE_IN_MICRO_DOLLAR" "TOTAL_ENGAGEMENT_ADD_TO_CART_VALUE_IN_MICRO_DOLLAR" "TOTAL_ENGAGEMENT_LEAD_VALUE_IN_MICRO_DOLLAR" "TOTAL_ENGAGEMENT_SEARCH_VALUE_IN_MICRO_DOLLAR" "TOTAL_ENGAGEMENT_WATCH_VIDEO_VALUE_IN_MICRO_DOLLAR" "TOTAL_ENGAGEMENT_VIEW_CATEGORY_VALUE_IN_MICRO_DOLLAR" "TOTAL_ENGAGEMENT_APP_INSTALL_VALUE_IN_MICRO_DOLLAR" "TOTAL_ENGAGEMENT_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "TOTAL_CLICK_PAGE_VISIT_VALUE_IN_MICRO_DOLLAR" "TOTAL_CLICK_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_CLICK_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_CLICK_CUSTOM_VALUE_IN_MICRO_DOLLAR" "TOTAL_CLICK_ADD_TO_CART_VALUE_IN_MICRO_DOLLAR" "TOTAL_CLICK_LEAD_VALUE_IN_MICRO_DOLLAR" "TOTAL_CLICK_SEARCH_VALUE_IN_MICRO_DOLLAR" "TOTAL_CLICK_WATCH_VIDEO_VALUE_IN_MICRO_DOLLAR" "TOTAL_CLICK_VIEW_CATEGORY_VALUE_IN_MICRO_DOLLAR" "TOTAL_CLICK_APP_INSTALL_VALUE_IN_MICRO_DOLLAR" "TOTAL_CLICK_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "TOTAL_VIEW_PAGE_VISIT_VALUE_IN_MICRO_DOLLAR" "TOTAL_VIEW_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_VIEW_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_VIEW_CUSTOM_VALUE_IN_MICRO_DOLLAR" "TOTAL_VIEW_ADD_TO_CART_VALUE_IN_MICRO_DOLLAR" "TOTAL_VIEW_LEAD_VALUE_IN_MICRO_DOLLAR" "TOTAL_VIEW_SEARCH_VALUE_IN_MICRO_DOLLAR" "TOTAL_VIEW_WATCH_VIDEO_VALUE_IN_MICRO_DOLLAR" "TOTAL_VIEW_VIEW_CATEGORY_VALUE_IN_MICRO_DOLLAR" "TOTAL_VIEW_APP_INSTALL_VALUE_IN_MICRO_DOLLAR" "TOTAL_VIEW_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "TOTAL_CONVERSIONS_VALUE_IN_MICRO_DOLLAR" "TOTAL_ENGAGEMENT_PAGE_VISIT_QUANTITY" "TOTAL_ENGAGEMENT_SIGNUP_QUANTITY" "TOTAL_ENGAGEMENT_CHECKOUT_QUANTITY" "TOTAL_ENGAGEMENT_CUSTOM_QUANTITY" "TOTAL_ENGAGEMENT_ADD_TO_CART_QUANTITY" "TOTAL_ENGAGEMENT_LEAD_QUANTITY" "TOTAL_ENGAGEMENT_SEARCH_QUANTITY" "TOTAL_ENGAGEMENT_WATCH_VIDEO_QUANTITY" "TOTAL_ENGAGEMENT_VIEW_CATEGORY_QUANTITY" "TOTAL_ENGAGEMENT_UNKNOWN_QUANTITY" "TOTAL_CLICK_PAGE_VISIT_QUANTITY" "TOTAL_CLICK_SIGNUP_QUANTITY" "TOTAL_CLICK_CHECKOUT_QUANTITY" "TOTAL_CLICK_CUSTOM_QUANTITY" "TOTAL_CLICK_ADD_TO_CART_QUANTITY" "TOTAL_CLICK_LEAD_QUANTITY" "TOTAL_CLICK_SEARCH_QUANTITY" "TOTAL_CLICK_WATCH_VIDEO_QUANTITY" "TOTAL_CLICK_VIEW_CATEGORY_QUANTITY" "TOTAL_CLICK_UNKNOWN_QUANTITY" "TOTAL_VIEW_PAGE_VISIT_QUANTITY" "TOTAL_VIEW_SIGNUP_QUANTITY" "TOTAL_VIEW_CHECKOUT_QUANTITY" "TOTAL_VIEW_CUSTOM_QUANTITY" "TOTAL_VIEW_ADD_TO_CART_QUANTITY" "TOTAL_VIEW_LEAD_QUANTITY" "TOTAL_VIEW_SEARCH_QUANTITY" "TOTAL_VIEW_WATCH_VIDEO_QUANTITY" "TOTAL_VIEW_VIEW_CATEGORY_QUANTITY" "TOTAL_VIEW_UNKNOWN_QUANTITY" "TOTAL_CONVERSIONS_QUANTITY" "TOTAL_WEB_SESSIONS" "WEB_SESSIONS_1" "WEB_SESSIONS_2" "ONSITE_CHECKOUTS_1" "PIN_PROMOTION_NAME" "AD_NAME" "CAMPAIGN_LIFETIME_SPEND_CAP" "AD_GROUP_OPTIMIZATION" "CAMPAIGN_DAILY_SPEND_CAP" "CAMPAIGN_BUDGET_OPTIMIZATION" "IS_PREMIERE_CAMPAIGN" "TOTAL_PAGE_VISIT_DESKTOP_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_PAGE_VISIT_DESKTOP_ACTION_TO_MOBILE_CONVERSION" "TOTAL_PAGE_VISIT_DESKTOP_ACTION_TO_TABLET_CONVERSION" "TOTAL_PAGE_VISIT_MOBILE_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_PAGE_VISIT_MOBILE_ACTION_TO_MOBILE_CONVERSION" "TOTAL_PAGE_VISIT_MOBILE_ACTION_TO_TABLET_CONVERSION" "TOTAL_PAGE_VISIT_TABLET_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_PAGE_VISIT_TABLET_ACTION_TO_MOBILE_CONVERSION" "TOTAL_PAGE_VISIT_TABLET_ACTION_TO_TABLET_CONVERSION" "TOTAL_SIGNUP_DESKTOP_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_SIGNUP_DESKTOP_ACTION_TO_MOBILE_CONVERSION" "TOTAL_SIGNUP_DESKTOP_ACTION_TO_TABLET_CONVERSION" "TOTAL_SIGNUP_MOBILE_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_SIGNUP_MOBILE_ACTION_TO_MOBILE_CONVERSION" "TOTAL_SIGNUP_MOBILE_ACTION_TO_TABLET_CONVERSION" "TOTAL_SIGNUP_TABLET_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_SIGNUP_TABLET_ACTION_TO_MOBILE_CONVERSION" "TOTAL_SIGNUP_TABLET_ACTION_TO_TABLET_CONVERSION" "TOTAL_CHECKOUT_DESKTOP_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_CHECKOUT_DESKTOP_ACTION_TO_MOBILE_CONVERSION" "TOTAL_CHECKOUT_DESKTOP_ACTION_TO_TABLET_CONVERSION" "TOTAL_CHECKOUT_MOBILE_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_CHECKOUT_MOBILE_ACTION_TO_MOBILE_CONVERSION" "TOTAL_CHECKOUT_MOBILE_ACTION_TO_TABLET_CONVERSION" "TOTAL_CHECKOUT_TABLET_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_CHECKOUT_TABLET_ACTION_TO_MOBILE_CONVERSION" "TOTAL_CHECKOUT_TABLET_ACTION_TO_TABLET_CONVERSION" "TOTAL_CUSTOM_DESKTOP_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_CUSTOM_DESKTOP_ACTION_TO_MOBILE_CONVERSION" "TOTAL_CUSTOM_DESKTOP_ACTION_TO_TABLET_CONVERSION" "TOTAL_CUSTOM_MOBILE_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_CUSTOM_MOBILE_ACTION_TO_MOBILE_CONVERSION" "TOTAL_CUSTOM_MOBILE_ACTION_TO_TABLET_CONVERSION" "TOTAL_CUSTOM_TABLET_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_CUSTOM_TABLET_ACTION_TO_MOBILE_CONVERSION" "TOTAL_CUSTOM_TABLET_ACTION_TO_TABLET_CONVERSION" "TOTAL_ADD_TO_CART_DESKTOP_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_ADD_TO_CART_DESKTOP_ACTION_TO_MOBILE_CONVERSION" "TOTAL_ADD_TO_CART_DESKTOP_ACTION_TO_TABLET_CONVERSION" "TOTAL_ADD_TO_CART_MOBILE_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_ADD_TO_CART_MOBILE_ACTION_TO_MOBILE_CONVERSION" "TOTAL_ADD_TO_CART_MOBILE_ACTION_TO_TABLET_CONVERSION" "TOTAL_ADD_TO_CART_TABLET_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_ADD_TO_CART_TABLET_ACTION_TO_MOBILE_CONVERSION" "TOTAL_ADD_TO_CART_TABLET_ACTION_TO_TABLET_CONVERSION" "TOTAL_LEAD_DESKTOP_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_LEAD_DESKTOP_ACTION_TO_MOBILE_CONVERSION" "TOTAL_LEAD_DESKTOP_ACTION_TO_TABLET_CONVERSION" "TOTAL_LEAD_MOBILE_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_LEAD_MOBILE_ACTION_TO_MOBILE_CONVERSION" "TOTAL_LEAD_MOBILE_ACTION_TO_TABLET_CONVERSION" "TOTAL_LEAD_TABLET_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_LEAD_TABLET_ACTION_TO_MOBILE_CONVERSION" "TOTAL_LEAD_TABLET_ACTION_TO_TABLET_CONVERSION" "TOTAL_SEARCH_DESKTOP_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_SEARCH_DESKTOP_ACTION_TO_MOBILE_CONVERSION" "TOTAL_SEARCH_DESKTOP_ACTION_TO_TABLET_CONVERSION" "TOTAL_SEARCH_MOBILE_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_SEARCH_MOBILE_ACTION_TO_MOBILE_CONVERSION" "TOTAL_SEARCH_MOBILE_ACTION_TO_TABLET_CONVERSION" "TOTAL_SEARCH_TABLET_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_SEARCH_TABLET_ACTION_TO_MOBILE_CONVERSION" "TOTAL_SEARCH_TABLET_ACTION_TO_TABLET_CONVERSION" "TOTAL_WATCH_VIDEO_DESKTOP_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_WATCH_VIDEO_DESKTOP_ACTION_TO_MOBILE_CONVERSION" "TOTAL_WATCH_VIDEO_DESKTOP_ACTION_TO_TABLET_CONVERSION" "TOTAL_WATCH_VIDEO_MOBILE_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_WATCH_VIDEO_MOBILE_ACTION_TO_MOBILE_CONVERSION" "TOTAL_WATCH_VIDEO_MOBILE_ACTION_TO_TABLET_CONVERSION" "TOTAL_WATCH_VIDEO_TABLET_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_WATCH_VIDEO_TABLET_ACTION_TO_MOBILE_CONVERSION" "TOTAL_WATCH_VIDEO_TABLET_ACTION_TO_TABLET_CONVERSION" "TOTAL_VIEW_CATEGORY_DESKTOP_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_VIEW_CATEGORY_DESKTOP_ACTION_TO_MOBILE_CONVERSION" "TOTAL_VIEW_CATEGORY_DESKTOP_ACTION_TO_TABLET_CONVERSION" "TOTAL_VIEW_CATEGORY_MOBILE_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_VIEW_CATEGORY_MOBILE_ACTION_TO_MOBILE_CONVERSION" "TOTAL_VIEW_CATEGORY_MOBILE_ACTION_TO_TABLET_CONVERSION" "TOTAL_VIEW_CATEGORY_TABLET_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_VIEW_CATEGORY_TABLET_ACTION_TO_MOBILE_CONVERSION" "TOTAL_VIEW_CATEGORY_TABLET_ACTION_TO_TABLET_CONVERSION" "TOTAL_APP_INSTALL_DESKTOP_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_APP_INSTALL_DESKTOP_ACTION_TO_MOBILE_CONVERSION" "TOTAL_APP_INSTALL_DESKTOP_ACTION_TO_TABLET_CONVERSION" "TOTAL_APP_INSTALL_MOBILE_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_APP_INSTALL_MOBILE_ACTION_TO_MOBILE_CONVERSION" "TOTAL_APP_INSTALL_MOBILE_ACTION_TO_TABLET_CONVERSION" "TOTAL_APP_INSTALL_TABLET_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_APP_INSTALL_TABLET_ACTION_TO_MOBILE_CONVERSION" "TOTAL_APP_INSTALL_TABLET_ACTION_TO_TABLET_CONVERSION" "TOTAL_UNKNOWN_DESKTOP_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_UNKNOWN_DESKTOP_ACTION_TO_MOBILE_CONVERSION" "TOTAL_UNKNOWN_DESKTOP_ACTION_TO_TABLET_CONVERSION" "TOTAL_UNKNOWN_MOBILE_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_UNKNOWN_MOBILE_ACTION_TO_MOBILE_CONVERSION" "TOTAL_UNKNOWN_MOBILE_ACTION_TO_TABLET_CONVERSION" "TOTAL_UNKNOWN_TABLET_ACTION_TO_DESKTOP_CONVERSION" "TOTAL_UNKNOWN_TABLET_ACTION_TO_MOBILE_CONVERSION" "TOTAL_UNKNOWN_TABLET_ACTION_TO_TABLET_CONVERSION" "TOTAL_PAGE_VISIT" "TOTAL_SIGNUP" "TOTAL_CHECKOUT" "TOTAL_CUSTOM" "TOTAL_ADD_TO_CART" "TOTAL_LEAD" "TOTAL_SEARCH" "TOTAL_WATCH_VIDEO" "TOTAL_VIEW_CATEGORY" "TOTAL_APP_INSTALL" "TOTAL_ADD_TO_WISHLIST" "TOTAL_SUBSCRIBE" "TOTAL_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_CUSTOM_VALUE_IN_MICRO_DOLLAR" "TOTAL_ADD_TO_CART_VALUE_IN_MICRO_DOLLAR" "TOTAL_LEAD_VALUE_IN_MICRO_DOLLAR" "TOTAL_SEARCH_VALUE_IN_MICRO_DOLLAR" "TOTAL_WATCH_VIDEO_VALUE_IN_MICRO_DOLLAR" "TOTAL_VIEW_CATEGORY_VALUE_IN_MICRO_DOLLAR" "TOTAL_APP_INSTALL_VALUE_IN_MICRO_DOLLAR" "TOTAL_CHECKOUT_QUANTITY" "PAGE_VISIT_COST_PER_ACTION" "APP_INSTALL_COST_PER_ACTION" "PAGE_VISIT_ROAS" "CHECKOUT_ROAS" "CUSTOM_ROAS" "PRODUCT_GROUP_AD_IMAGE_TAG" "PRODUCT_GROUP_AD_VIDEO_TAG" "VIDEO_3SEC_VIEWS_1" "VIDEO_15SEC_UNIQUE_VIEWS_1" "VIDEO_P100_COMPLETE_1" "VIDEO_P0_COMBINED_1" "VIDEO_P25_COMBINED_1" "VIDEO_P50_COMBINED_1" "VIDEO_P75_COMBINED_1" "VIDEO_P95_COMBINED_1" "VIDEO_MRC_VIEWS_1" "VIDEO_3SEC_VIEWS_2" "VIDEO_15SEC_UNIQUE_VIEWS_2" "VIDEO_P100_COMPLETE_2" "VIDEO_P0_COMBINED_2" "VIDEO_P25_COMBINED_2" "VIDEO_P50_COMBINED_2" "VIDEO_P75_COMBINED_2" "VIDEO_P95_COMBINED_2" "VIDEO_MRC_VIEWS_2" "PAID_VIDEO_VIEWABLE_RATE" "VIDEO_LENGTH" "VIDEO_SPEND_IN_DOLLAR" "CPV_IN_MICRO_DOLLAR" "ECPV_IN_DOLLAR" "CPCV_IN_MICRO_DOLLAR" "ECPCV_IN_DOLLAR" "CPCV_P95_IN_MICRO_DOLLAR" "ECPCV_P95_IN_DOLLAR" "TOTAL_VIDEO_3SEC_VIEWS" "TOTAL_VIDEO_15SEC_UNIQUE_VIEWS" "TOTAL_VIDEO_P100_COMPLETE" "TOTAL_VIDEO_P0_COMBINED" "TOTAL_VIDEO_P25_COMBINED" "TOTAL_VIDEO_P50_COMBINED" "TOTAL_VIDEO_P75_COMBINED" "TOTAL_VIDEO_P95_COMBINED" "TOTAL_VIDEO_MRC_VIEWS" "VIDEO_AVG_WATCHTIME_IN_SECOND_1" "VIDEO_AVG_WATCHTIME_IN_SECOND_2" "TOTAL_VIDEO_AVG_WATCHTIME_IN_SECOND" "TOTAL_DESTINATION_VIEWS" "TOTAL_REPIN_RATE" "WEB_CHECKOUT_COST_PER_ACTION" "WEB_CHECKOUT_ROAS" "TOTAL_WEB_CHECKOUT" "TOTAL_WEB_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_CLICK_CHECKOUT" "TOTAL_WEB_CLICK_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_ENGAGEMENT_CHECKOUT" "TOTAL_WEB_ENGAGEMENT_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_VIEW_CHECKOUT" "TOTAL_WEB_VIEW_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "INAPP_CHECKOUT_COST_PER_ACTION" "INAPP_CHECKOUT_ROAS" "TOTAL_INAPP_CHECKOUT" "TOTAL_INAPP_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_CLICK_CHECKOUT" "TOTAL_INAPP_CLICK_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_ENGAGEMENT_CHECKOUT" "TOTAL_INAPP_ENGAGEMENT_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_VIEW_CHECKOUT" "TOTAL_INAPP_VIEW_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "OFFLINE_CHECKOUT_COST_PER_ACTION" "OFFLINE_CHECKOUT_ROAS" "TOTAL_OFFLINE_CHECKOUT" "TOTAL_OFFLINE_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_CLICK_CHECKOUT" "TOTAL_OFFLINE_CLICK_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_ENGAGEMENT_CHECKOUT" "TOTAL_OFFLINE_ENGAGEMENT_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_VIEW_CHECKOUT" "TOTAL_OFFLINE_VIEW_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "PINTEREST_CHECKOUT_COST_PER_ACTION" "PINTEREST_CHECKOUT_ROAS" "TOTAL_PINTEREST_CHECKOUT" "TOTAL_PINTEREST_CHECKOUT_VALUE_IN_MICRO_DOLLAR" "WEB_ADD_TO_CART_COST_PER_ACTION" "WEB_ADD_TO_CART_ROAS" "TOTAL_WEB_ADD_TO_CART" "TOTAL_WEB_ADD_TO_CART_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_CLICK_ADD_TO_CART" "TOTAL_WEB_CLICK_ADD_TO_CART_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_ENGAGEMENT_ADD_TO_CART" "TOTAL_WEB_ENGAGEMENT_ADD_TO_CART_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_VIEW_ADD_TO_CART" "TOTAL_WEB_VIEW_ADD_TO_CART_VALUE_IN_MICRO_DOLLAR" "INAPP_ADD_TO_CART_COST_PER_ACTION" "INAPP_ADD_TO_CART_ROAS" "TOTAL_INAPP_ADD_TO_CART" "TOTAL_INAPP_ADD_TO_CART_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_CLICK_ADD_TO_CART" "TOTAL_INAPP_CLICK_ADD_TO_CART_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_ENGAGEMENT_ADD_TO_CART" "TOTAL_INAPP_ENGAGEMENT_ADD_TO_CART_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_VIEW_ADD_TO_CART" "TOTAL_INAPP_VIEW_ADD_TO_CART_VALUE_IN_MICRO_DOLLAR" "WEB_PAGE_VISIT_COST_PER_ACTION" "WEB_PAGE_VISIT_ROAS" "TOTAL_WEB_PAGE_VISIT" "TOTAL_WEB_PAGE_VISIT_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_CLICK_PAGE_VISIT" "TOTAL_WEB_CLICK_PAGE_VISIT_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_ENGAGEMENT_PAGE_VISIT" "TOTAL_WEB_ENGAGEMENT_PAGE_VISIT_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_VIEW_PAGE_VISIT" "TOTAL_WEB_VIEW_PAGE_VISIT_VALUE_IN_MICRO_DOLLAR" "WEB_SIGNUP_COST_PER_ACTION" "WEB_SIGNUP_ROAS" "TOTAL_WEB_SIGNUP" "TOTAL_WEB_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_CLICK_SIGNUP" "TOTAL_WEB_CLICK_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_ENGAGEMENT_SIGNUP" "TOTAL_WEB_ENGAGEMENT_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_VIEW_SIGNUP" "TOTAL_WEB_VIEW_SIGNUP_VALUE_IN_MICRO_DOLLAR" "INAPP_SIGNUP_COST_PER_ACTION" "INAPP_SIGNUP_ROAS" "TOTAL_INAPP_SIGNUP" "TOTAL_INAPP_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_CLICK_SIGNUP" "TOTAL_INAPP_CLICK_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_ENGAGEMENT_SIGNUP" "TOTAL_INAPP_ENGAGEMENT_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_VIEW_SIGNUP" "TOTAL_INAPP_VIEW_SIGNUP_VALUE_IN_MICRO_DOLLAR" "OFFLINE_SIGNUP_COST_PER_ACTION" "OFFLINE_SIGNUP_ROAS" "TOTAL_OFFLINE_SIGNUP" "TOTAL_OFFLINE_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_CLICK_SIGNUP" "TOTAL_OFFLINE_CLICK_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_ENGAGEMENT_SIGNUP" "TOTAL_OFFLINE_ENGAGEMENT_SIGNUP_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_VIEW_SIGNUP" "TOTAL_OFFLINE_VIEW_SIGNUP_VALUE_IN_MICRO_DOLLAR" "WEB_WATCH_VIDEO_COST_PER_ACTION" "WEB_WATCH_VIDEO_ROAS" "TOTAL_WEB_WATCH_VIDEO" "TOTAL_WEB_WATCH_VIDEO_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_CLICK_WATCH_VIDEO" "TOTAL_WEB_CLICK_WATCH_VIDEO_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_ENGAGEMENT_WATCH_VIDEO" "TOTAL_WEB_ENGAGEMENT_WATCH_VIDEO_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_VIEW_WATCH_VIDEO" "TOTAL_WEB_VIEW_WATCH_VIDEO_VALUE_IN_MICRO_DOLLAR" "WEB_LEAD_COST_PER_ACTION" "WEB_LEAD_ROAS" "TOTAL_WEB_LEAD" "TOTAL_WEB_LEAD_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_CLICK_LEAD" "TOTAL_WEB_CLICK_LEAD_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_ENGAGEMENT_LEAD" "TOTAL_WEB_ENGAGEMENT_LEAD_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_VIEW_LEAD" "TOTAL_WEB_VIEW_LEAD_VALUE_IN_MICRO_DOLLAR" "OFFLINE_LEAD_COST_PER_ACTION" "OFFLINE_LEAD_ROAS" "TOTAL_OFFLINE_LEAD" "TOTAL_OFFLINE_LEAD_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_CLICK_LEAD" "TOTAL_OFFLINE_CLICK_LEAD_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_ENGAGEMENT_LEAD" "TOTAL_OFFLINE_ENGAGEMENT_LEAD_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_VIEW_LEAD" "TOTAL_OFFLINE_VIEW_LEAD_VALUE_IN_MICRO_DOLLAR" "WEB_SEARCH_COST_PER_ACTION" "WEB_SEARCH_ROAS" "TOTAL_WEB_SEARCH" "TOTAL_WEB_SEARCH_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_CLICK_SEARCH" "TOTAL_WEB_CLICK_SEARCH_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_ENGAGEMENT_SEARCH" "TOTAL_WEB_ENGAGEMENT_SEARCH_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_VIEW_SEARCH" "TOTAL_WEB_VIEW_SEARCH_VALUE_IN_MICRO_DOLLAR" "INAPP_SEARCH_COST_PER_ACTION" "INAPP_SEARCH_ROAS" "TOTAL_INAPP_SEARCH" "TOTAL_INAPP_SEARCH_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_CLICK_SEARCH" "TOTAL_INAPP_CLICK_SEARCH_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_ENGAGEMENT_SEARCH" "TOTAL_INAPP_ENGAGEMENT_SEARCH_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_VIEW_SEARCH" "TOTAL_INAPP_VIEW_SEARCH_VALUE_IN_MICRO_DOLLAR" "WEB_VIEW_CATEGORY_COST_PER_ACTION" "WEB_VIEW_CATEGORY_ROAS" "TOTAL_WEB_VIEW_CATEGORY" "TOTAL_WEB_VIEW_CATEGORY_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_CLICK_VIEW_CATEGORY" "TOTAL_WEB_CLICK_VIEW_CATEGORY_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_ENGAGEMENT_VIEW_CATEGORY" "TOTAL_WEB_ENGAGEMENT_VIEW_CATEGORY_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_VIEW_VIEW_CATEGORY" "TOTAL_WEB_VIEW_VIEW_CATEGORY_VALUE_IN_MICRO_DOLLAR" "WEB_CUSTOM_COST_PER_ACTION" "WEB_CUSTOM_ROAS" "TOTAL_WEB_CUSTOM" "TOTAL_WEB_CUSTOM_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_CLICK_CUSTOM" "TOTAL_WEB_CLICK_CUSTOM_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_ENGAGEMENT_CUSTOM" "TOTAL_WEB_ENGAGEMENT_CUSTOM_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_VIEW_CUSTOM" "TOTAL_WEB_VIEW_CUSTOM_VALUE_IN_MICRO_DOLLAR" "OFFLINE_CUSTOM_COST_PER_ACTION" "OFFLINE_CUSTOM_ROAS" "TOTAL_OFFLINE_CUSTOM" "TOTAL_OFFLINE_CUSTOM_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_CLICK_CUSTOM" "TOTAL_OFFLINE_CLICK_CUSTOM_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_ENGAGEMENT_CUSTOM" "TOTAL_OFFLINE_ENGAGEMENT_CUSTOM_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_VIEW_CUSTOM" "TOTAL_OFFLINE_VIEW_CUSTOM_VALUE_IN_MICRO_DOLLAR" "WEB_UNKNOWN_COST_PER_ACTION" "WEB_UNKNOWN_ROAS" "TOTAL_WEB_UNKNOWN" "TOTAL_WEB_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_CLICK_UNKNOWN" "TOTAL_WEB_CLICK_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_ENGAGEMENT_UNKNOWN" "TOTAL_WEB_ENGAGEMENT_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "TOTAL_WEB_VIEW_UNKNOWN" "TOTAL_WEB_VIEW_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "INAPP_UNKNOWN_COST_PER_ACTION" "INAPP_UNKNOWN_ROAS" "TOTAL_INAPP_UNKNOWN" "TOTAL_INAPP_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_CLICK_UNKNOWN" "TOTAL_INAPP_CLICK_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_ENGAGEMENT_UNKNOWN" "TOTAL_INAPP_ENGAGEMENT_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_VIEW_UNKNOWN" "TOTAL_INAPP_VIEW_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "OFFLINE_UNKNOWN_COST_PER_ACTION" "OFFLINE_UNKNOWN_ROAS" "TOTAL_OFFLINE_UNKNOWN" "TOTAL_OFFLINE_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_CLICK_UNKNOWN" "TOTAL_OFFLINE_CLICK_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_ENGAGEMENT_UNKNOWN" "TOTAL_OFFLINE_ENGAGEMENT_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "TOTAL_OFFLINE_VIEW_UNKNOWN" "TOTAL_OFFLINE_VIEW_UNKNOWN_VALUE_IN_MICRO_DOLLAR" "INAPP_APP_INSTALL_COST_PER_ACTION" "INAPP_APP_INSTALL_ROAS" "TOTAL_INAPP_APP_INSTALL" "TOTAL_INAPP_APP_INSTALL_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_CLICK_APP_INSTALL" "TOTAL_INAPP_CLICK_APP_INSTALL_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_ENGAGEMENT_APP_INSTALL" "TOTAL_INAPP_ENGAGEMENT_APP_INSTALL_VALUE_IN_MICRO_DOLLAR" "TOTAL_INAPP_VIEW_APP_INSTALL" "TOTAL_INAPP_VIEW_APP_INSTALL_VALUE_IN_MICRO_DOLLAR" "TOTAL_APP_INSTALL_CONVERSION_RATE" "TOTAL_INAPP_APP_INSTALL_CONVERSION_RATE" "IDEA_PIN_PAGE_FORWARD_1" "IDEA_PIN_PAGE_FORWARD_2" "IDEA_PIN_PAGE_BACKWARD_1" "IDEA_PIN_PAGE_BACKWARD_2" "TOTAL_IDEA_PIN_PAGE_FORWARD" "TOTAL_IDEA_PIN_PAGE_BACKWARD" "IDEA_PIN_PRODUCT_TAG_VISIT_1" "IDEA_PIN_PRODUCT_TAG_VISIT_2" "TOTAL_IDEA_PIN_PRODUCT_TAG_VISIT" "LEADS" "COST_PER_LEAD" "QUIZ_COMPLETED" "QUIZ_COMPLETION_RATE" "SHOWCASE_PIN_CLICKTHROUGH" "SHOWCASE_SUBPAGE_CLICKTHROUGH" "SHOWCASE_SUBPIN_CLICKTHROUGH" "SHOWCASE_SUBPAGE_IMPRESSION" "SHOWCASE_SUBPIN_IMPRESSION" "SHOWCASE_SUBPAGE_SWIPE_LEFT" "SHOWCASE_SUBPAGE_SWIPE_RIGHT" "SHOWCASE_SUBPIN_SWIPE_LEFT" "SHOWCASE_SUBPIN_SWIPE_RIGHT" "SHOWCASE_SUBPAGE_REPIN" "SHOWCASE_SUBPIN_REPIN" "SHOWCASE_SUBPAGE_CLOSEUP" "SHOWCASE_CARD_THUMBNAIL_SWIPE_FORWARD" "SHOWCASE_CARD_THUMBNAIL_SWIPE_BACKWARD" "SHOWCASE_AVERAGE_SUBPAGE_CLOSEUP_PER_SESSION" "TOTAL_CHECKOUT_CONVERSION_RATE" "TOTAL_VIEW_CATEGORY_CONVERSION_RATE" "TOTAL_ADD_TO_CART_CONVERSION_RATE" "TOTAL_SIGNUP_CONVERSION_RATE" "TOTAL_PAGE_VISIT_CONVERSION_RATE" "TOTAL_LEAD_CONVERSION_RATE" "TOTAL_SEARCH_CONVERSION_RATE" "TOTAL_WATCH_VIDEO_CONVERSION_RATE" "TOTAL_UNKNOWN_CONVERSION_RATE" "TOTAL_CUSTOM_CONVERSION_RATE" "STANDARD_AD_FEED_ITEM_ID" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/combineTargetingTypes> ;
    sh:name "combine targeting types" ;
    sh:description "Determines if the targeting types included in the request should be consolidated into a single breakdown. For example, when combine_targeting_types is set to true, if GENDER and COUNTRY are targeting types in the request, the response will have a targeting type of GENDER_AND_COUNTRY and targeting values such as female&US. This feature is currently in BETA and is not available to all users." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/customConversionEventMetrics> ;
    sh:name "custom conversion event metrics" ;
    sh:description "List of advertiser-defined custom conversion event metrics to include in the report" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdsAnalyticsCreateAsyncRequest/customConversionEventMetrics/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdsAnalyticsCreateAsyncRequest/customConversionEventMetrics/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/endHour> ;
    sh:name "end hour" ;
    sh:description "Which hour of the end date to stop the report (inclusive). For example, with an end_date of '2020-01-01' and end_hour of '15', the report will contain metrics up to '2020-01-01 14:59:59'. The entire day will be included if no end hour is provided. Only allowed for hourly reports." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "23"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/level> ;
    sh:name "level" ;
    sh:description "Level of the report" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "ADVERTISER" "ADVERTISER_TARGETING" "CAMPAIGN" "CAMPAIGN_TARGETING" "AD_GROUP" "AD_GROUP_TARGETING" "PIN_PROMOTION" "PIN_PROMOTION_TARGETING" "KEYWORD" "PRODUCT_GROUP" "PRODUCT_GROUP_TARGETING" "PRODUCT_ITEM" "PRODUCT_ITEM_TARGETING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/primarySort> ;
    sh:name "primary sort" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/reportFormat> ;
    sh:name "report format" ;
    sh:description "Specification for formatting the report data. Reports in JSON will not zero-fill metrics, whereas reports in CSV will. Both report formats will omit rows where all the columns are equal to 0." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "JSON" "CSV" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/reportingTimezone> ;
    sh:name "reporting timezone" ;
    sh:description "Specify the timezone to be applied for the reporting. This feature is currently in BETA and is not available to all users." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PINTEREST_TIME_ZONE" "AD_ACCOUNT_TIME_ZONE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/startHour> ;
    sh:name "start hour" ;
    sh:description "Which hour of the start date to begin the report. The entire day will be included if no start hour is provided. Only allowed for hourly reports." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "23"^^xsd:int ;
  ] .

# Shape for Ads Analytics Create Async Response
pinterest:AdsAnalyticsCreateAsyncResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:AdsAnalyticsCreateAsyncResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncResponse/message> ;
    sh:name "message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncResponse/reportStatus> ;
    sh:name "report status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DOES_NOT_EXIST" "FINISHED" "IN_PROGRESS" "EXPIRED" "FAILED" "CANCELLED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncResponse/token> ;
    sh:name "token" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ads Analytics Get Async Response
pinterest:AdsAnalyticsGetAsyncResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:AdsAnalyticsGetAsyncResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsGetAsyncResponse/reportStatus> ;
    sh:name "report status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DOES_NOT_EXIST" "FINISHED" "IN_PROGRESS" "EXPIRED" "FAILED" "CANCELLED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsGetAsyncResponse/size> ;
    sh:name "size" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsGetAsyncResponse/url> ;
    sh:name "url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Product Report Request
pinterest:ConversionProductReportRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionProductReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/adGroupIds> ;
    sh:name "ad group ids" ;
    sh:description "List of ad group ids. <br>Only support ad_group_ids field when level of the report is AD_GROUP." ;
    sh:datatype xsd:string ;
    sh:maxCount 500 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/campaignIds> ;
    sh:name "campaign ids" ;
    sh:description "List of campaign ids. <br>Only support campaign_ids field when level of the report is CAMPAIGN." ;
    sh:datatype xsd:string ;
    sh:maxCount 500 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/campaignObjectiveTypes> ;
    sh:name "campaign objective types" ;
    sh:description "List of values for filtering. Default is ['CONSIDERATION','AWARENESS','WEB_CONVERSION','VIDEO_COMPLETION']." ;
    sh:datatype xsd:string ;
    sh:maxCount 7 ;
    sh:in ( "AWARENESS" "CONSIDERATION" "WEB_CONVERSION" "CATALOG_SALES" "VIDEO_COMPLETION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/clickWindowDays> ;
    sh:name "click window days" ;
    sh:description "Number of days to use as the conversion attribution window for a pin click action. Applies to Pinterest Tag conversion metrics. Prior conversion tags use their defined attribution windows. If not specified, defaults to `30` days." ;
    sh:datatype xsd:integer ;
    sh:maxCount 1 ;
    sh:in ( "0"^^xsd:integer "1"^^xsd:integer "7"^^xsd:integer "14"^^xsd:integer "30"^^xsd:integer "60"^^xsd:integer ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "Metric and entity columns" ;
    sh:datatype xsd:string ;
    sh:in ( "CAMPAIGN_NAME" "CAMPAIGN_ID" "ADVERTISER_ID" "AD_GROUP_ID" "CAMPAIGN_OBJECTIVE_TYPE" "AD_GROUP_NAME" "CONVERSION_PRODUCT_ID" "CONVERSION_PRODUCT_BRAND" "CONVERSION_PRODUCT_CATEGORY" "CONVERSION_PRODUCT_ID_GROUP" "TOTAL_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_CONVERSION_PRODUCT_QUANTITY" "TOTAL_INAPP_CONVERSION_PRODUCT_QUANTITY" "TOTAL_OFFLINE_CONVERSION_PRODUCT_QUANTITY" "TOTAL_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_CONVERSION_PRODUCT_VALUE" "TOTAL_INAPP_CONVERSION_PRODUCT_VALUE" "TOTAL_OFFLINE_CONVERSION_PRODUCT_VALUE" "TOTAL_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_INAPP_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_OFFLINE_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_CHECKOUT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_CHECKOUT_CONVERSION_PRODUCT_VALUE" "TOTAL_CHECKOUT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_CHECKOUT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_CHECKOUT_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_CHECKOUT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_INAPP_CHECKOUT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_INAPP_CHECKOUT_CONVERSION_PRODUCT_VALUE" "TOTAL_INAPP_CHECKOUT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_OFFLINE_CHECKOUT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_OFFLINE_CHECKOUT_CONVERSION_PRODUCT_VALUE" "TOTAL_OFFLINE_CHECKOUT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_ADD_TO_CART_CONVERSION_PRODUCT_QUANTITY" "TOTAL_ADD_TO_CART_CONVERSION_PRODUCT_VALUE" "TOTAL_ADD_TO_CART_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_ADD_TO_CART_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_ADD_TO_CART_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_ADD_TO_CART_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_INAPP_ADD_TO_CART_CONVERSION_PRODUCT_QUANTITY" "TOTAL_INAPP_ADD_TO_CART_CONVERSION_PRODUCT_VALUE" "TOTAL_INAPP_ADD_TO_CART_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_PAGE_VISIT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_PAGE_VISIT_CONVERSION_PRODUCT_VALUE" "TOTAL_PAGE_VISIT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_PAGE_VISIT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_PAGE_VISIT_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_PAGE_VISIT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_SIGNUP_CONVERSION_PRODUCT_QUANTITY" "TOTAL_SIGNUP_CONVERSION_PRODUCT_VALUE" "TOTAL_SIGNUP_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_SIGNUP_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_SIGNUP_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_SIGNUP_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_INAPP_SIGNUP_CONVERSION_PRODUCT_QUANTITY" "TOTAL_INAPP_SIGNUP_CONVERSION_PRODUCT_VALUE" "TOTAL_INAPP_SIGNUP_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_OFFLINE_SIGNUP_CONVERSION_PRODUCT_QUANTITY" "TOTAL_OFFLINE_SIGNUP_CONVERSION_PRODUCT_VALUE" "TOTAL_OFFLINE_SIGNUP_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WATCH_VIDEO_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WATCH_VIDEO_CONVERSION_PRODUCT_VALUE" "TOTAL_WATCH_VIDEO_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_WATCH_VIDEO_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_WATCH_VIDEO_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_WATCH_VIDEO_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_LEAD_CONVERSION_PRODUCT_QUANTITY" "TOTAL_LEAD_CONVERSION_PRODUCT_VALUE" "TOTAL_LEAD_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_LEAD_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_LEAD_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_LEAD_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_OFFLINE_LEAD_CONVERSION_PRODUCT_QUANTITY" "TOTAL_OFFLINE_LEAD_CONVERSION_PRODUCT_VALUE" "TOTAL_OFFLINE_LEAD_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_SEARCH_CONVERSION_PRODUCT_QUANTITY" "TOTAL_SEARCH_CONVERSION_PRODUCT_VALUE" "TOTAL_SEARCH_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_SEARCH_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_SEARCH_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_SEARCH_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_INAPP_SEARCH_CONVERSION_PRODUCT_QUANTITY" "TOTAL_INAPP_SEARCH_CONVERSION_PRODUCT_VALUE" "TOTAL_INAPP_SEARCH_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_VIEW_CATEGORY_CONVERSION_PRODUCT_QUANTITY" "TOTAL_VIEW_CATEGORY_CONVERSION_PRODUCT_VALUE" "TOTAL_VIEW_CATEGORY_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_VIEW_CATEGORY_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_VIEW_CATEGORY_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_VIEW_CATEGORY_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_CUSTOM_CONVERSION_PRODUCT_QUANTITY" "TOTAL_CUSTOM_CONVERSION_PRODUCT_VALUE" "TOTAL_CUSTOM_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_CUSTOM_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_CUSTOM_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_CUSTOM_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_OFFLINE_CUSTOM_CONVERSION_PRODUCT_QUANTITY" "TOTAL_OFFLINE_CUSTOM_CONVERSION_PRODUCT_VALUE" "TOTAL_OFFLINE_CUSTOM_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_UNKNOWN_CONVERSION_PRODUCT_QUANTITY" "TOTAL_UNKNOWN_CONVERSION_PRODUCT_VALUE" "TOTAL_UNKNOWN_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_UNKNOWN_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_UNKNOWN_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_UNKNOWN_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_INAPP_UNKNOWN_CONVERSION_PRODUCT_QUANTITY" "TOTAL_INAPP_UNKNOWN_CONVERSION_PRODUCT_VALUE" "TOTAL_INAPP_UNKNOWN_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_OFFLINE_UNKNOWN_CONVERSION_PRODUCT_QUANTITY" "TOTAL_OFFLINE_UNKNOWN_CONVERSION_PRODUCT_VALUE" "TOTAL_OFFLINE_UNKNOWN_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_ADD_PAYMENT_INFO_CONVERSION_PRODUCT_QUANTITY" "TOTAL_ADD_PAYMENT_INFO_CONVERSION_PRODUCT_VALUE" "TOTAL_ADD_PAYMENT_INFO_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_ADD_PAYMENT_INFO_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_ADD_PAYMENT_INFO_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_ADD_PAYMENT_INFO_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_INAPP_ADD_PAYMENT_INFO_CONVERSION_PRODUCT_QUANTITY" "TOTAL_INAPP_ADD_PAYMENT_INFO_CONVERSION_PRODUCT_VALUE" "TOTAL_INAPP_ADD_PAYMENT_INFO_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_OFFLINE_ADD_PAYMENT_INFO_CONVERSION_PRODUCT_QUANTITY" "TOTAL_OFFLINE_ADD_PAYMENT_INFO_CONVERSION_PRODUCT_VALUE" "TOTAL_OFFLINE_ADD_PAYMENT_INFO_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_ADD_TO_WISHLIST_CONVERSION_PRODUCT_QUANTITY" "TOTAL_ADD_TO_WISHLIST_CONVERSION_PRODUCT_VALUE" "TOTAL_ADD_TO_WISHLIST_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_ADD_TO_WISHLIST_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_ADD_TO_WISHLIST_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_ADD_TO_WISHLIST_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_INAPP_ADD_TO_WISHLIST_CONVERSION_PRODUCT_QUANTITY" "TOTAL_INAPP_ADD_TO_WISHLIST_CONVERSION_PRODUCT_VALUE" "TOTAL_INAPP_ADD_TO_WISHLIST_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_OFFLINE_ADD_TO_WISHLIST_CONVERSION_PRODUCT_QUANTITY" "TOTAL_OFFLINE_ADD_TO_WISHLIST_CONVERSION_PRODUCT_VALUE" "TOTAL_OFFLINE_ADD_TO_WISHLIST_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_INITIATE_CHECKOUT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_INITIATE_CHECKOUT_CONVERSION_PRODUCT_VALUE" "TOTAL_INITIATE_CHECKOUT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_INITIATE_CHECKOUT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_INITIATE_CHECKOUT_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_INITIATE_CHECKOUT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_INAPP_INITIATE_CHECKOUT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_INAPP_INITIATE_CHECKOUT_CONVERSION_PRODUCT_VALUE" "TOTAL_INAPP_INITIATE_CHECKOUT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_OFFLINE_INITIATE_CHECKOUT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_OFFLINE_INITIATE_CHECKOUT_CONVERSION_PRODUCT_VALUE" "TOTAL_OFFLINE_INITIATE_CHECKOUT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_SUBSCRIBE_CONVERSION_PRODUCT_QUANTITY" "TOTAL_SUBSCRIBE_CONVERSION_PRODUCT_VALUE" "TOTAL_SUBSCRIBE_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_SUBSCRIBE_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_SUBSCRIBE_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_SUBSCRIBE_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_INAPP_SUBSCRIBE_CONVERSION_PRODUCT_QUANTITY" "TOTAL_INAPP_SUBSCRIBE_CONVERSION_PRODUCT_VALUE" "TOTAL_INAPP_SUBSCRIBE_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_OFFLINE_SUBSCRIBE_CONVERSION_PRODUCT_QUANTITY" "TOTAL_OFFLINE_SUBSCRIBE_CONVERSION_PRODUCT_VALUE" "TOTAL_OFFLINE_SUBSCRIBE_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_VIEW_CONTENT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_VIEW_CONTENT_CONVERSION_PRODUCT_VALUE" "TOTAL_VIEW_CONTENT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_WEB_VIEW_CONTENT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_WEB_VIEW_CONTENT_CONVERSION_PRODUCT_VALUE" "TOTAL_WEB_VIEW_CONTENT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_INAPP_VIEW_CONTENT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_INAPP_VIEW_CONTENT_CONVERSION_PRODUCT_VALUE" "TOTAL_INAPP_VIEW_CONTENT_CONVERSION_PRODUCT_VALUE_IN_USD" "TOTAL_OFFLINE_VIEW_CONTENT_CONVERSION_PRODUCT_QUANTITY" "TOTAL_OFFLINE_VIEW_CONTENT_CONVERSION_PRODUCT_VALUE" "TOTAL_OFFLINE_VIEW_CONTENT_CONVERSION_PRODUCT_VALUE_IN_USD" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/conversionProductAttributionType> ;
    sh:name "conversion product attribution type" ;
    sh:description "Required attribution type of the B/C/S report.<br>When the attribution type is BRAND_ATTRIBUTION, start_date for the report must be after 2025-04-01." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DEFAULT" "BRAND_ATTRIBUTION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/conversionProductBreakdown> ;
    sh:name "conversion product breakdown" ;
    sh:description "Report breakdown type. This is used to specify the breakdown of the report by brand, category, or SKU." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/conversionReportTime> ;
    sh:name "conversion report time" ;
    sh:description "The date by which the conversion metrics returned from this endpoint will be reported. There are two dates associated with a conversion event: the date that the user interacted with the ad, and the date that the user completed a conversion event." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TIME_OF_AD_ACTION" "TIME_OF_CONVERSION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/endDate> ;
    sh:name "end date" ;
    sh:description "Metric report end date (UTC). Format: YYYY-MM-DD.<br> A max of 1 year is allowed between the start and end date for reports." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/granularity> ;
    sh:name "granularity" ;
    sh:description "TOTAL - metrics are aggregated over the specified date range.<br> WEEK - metrics are broken down weekly.<br> MONTH - metrics are broken down monthly." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "WEEK" "MONTH" "TOTAL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/level> ;
    sh:name "level" ;
    sh:description "Level of the report" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "ADVERTISER" "CAMPAIGN" "AD_GROUP" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/productSkuIds> ;
    sh:name "product sku ids" ;
    sh:description "List of SKU ids. <br>Only support product_sku_ids field when report breakdown type is PRODUCT_SKU_GROUP." ;
    sh:datatype xsd:string ;
    sh:maxCount 500 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "Name of the conversion product report." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/startDate> ;
    sh:name "start date" ;
    sh:description "Metric report start date (UTC). Format: YYYY-MM-DD.<br> Start date must be after 2024-03-16. 7 day minimum time window for report is required." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/viewWindowDays> ;
    sh:name "view window days" ;
    sh:description "Number of days to use as the conversion attribution window for a view action. Applies to Pinterest Tag conversion metrics. Prior conversion tags use their defined attribution windows. If not specified, defaults to `30` day." ;
    sh:datatype xsd:integer ;
    sh:maxCount 1 ;
    sh:in ( "0"^^xsd:integer "1"^^xsd:integer "7"^^xsd:integer "14"^^xsd:integer "30"^^xsd:integer "60"^^xsd:integer ) ;
  ] ;
  sh:or (
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/adGroupIds> ; sh:maxCount 0 ] ]
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/adGroupIds> ; sh:minCount 1 ] ]
  ) ;
  sh:or (
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/campaignIds> ; sh:maxCount 0 ] ]
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/campaignIds> ; sh:minCount 1 ] ]
  ) ;
  sh:or (
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/campaignObjectiveTypes> ; sh:maxCount 0 ] ]
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/campaignObjectiveTypes> ; sh:minCount 1 ] ]
  ) ;
  sh:or (
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/productSkuIds> ; sh:maxCount 0 ] ]
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionProductReportRequest/productSkuIds> ; sh:minCount 2 ] ]
  ) .

# Shape for Create MMMReport Request
pinterest:CreateMMMReportRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CreateMMMReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMMMReportRequest/countries> ;
    sh:name "countries" ;
    sh:description "A List of countries for filtering" ;
    sh:datatype xsd:string ;
    sh:in ( "US" "GB" "CA" "IE" "AU" "NZ" "FR" "SE" "IL" "DE" "AT" "IT" "ES" "NL" "BE" "PT" "CH" "HK" "JP" "KR" "SG" "NO" "DK" "FI" "CY" "LU" "MT" "PL" "RO" "HU" "CZ" "GR" "SK" "BR" "MX" "AR" "CL" "CO" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMMMReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "Metric and entity columns" ;
    sh:datatype xsd:string ;
    sh:in ( "SPEND_IN_DOLLAR" "SPEND_IN_MICRO_DOLLAR" "ECPC_IN_DOLLAR" "ECTR" "CAMPAIGN_NAME" "TOTAL_ENGAGEMENT" "EENGAGEMENT_RATE" "ECPM_IN_DOLLAR" "CAMPAIGN_ID" "ADVERTISER_ID" "AD_GROUP_ID" "AD_GROUP_NAME" "CLICKTHROUGH_1" "IMPRESSION_1" "CLICKTHROUGH_2" "IMPRESSION_2" "TOTAL_CLICKTHROUGH" "TOTAL_IMPRESSION" "ADVERTISER_NAME" "SPEND_ORDER_LINE_PAID_TYPE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMMMReportRequest/endDate> ;
    sh:name "end date" ;
    sh:description "Metric report end date (UTC). Format: YYYY-MM-DD" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMMMReportRequest/granularity> ;
    sh:name "granularity" ;
    sh:description "DAY - metrics are broken down daily.<br> WEEK - metrics are broken down weekly." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "DAY" "WEEK" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMMMReportRequest/level> ;
    sh:name "level" ;
    sh:description "Level of the report" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "CAMPAIGN_TARGETING" "AD_GROUP_TARGETING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMMMReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "Name of the Marketing Mix Modeling (MMM) report" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMMMReportRequest/startDate> ;
    sh:name "start date" ;
    sh:description "Metric report start date (UTC). Format: YYYY-MM-DD" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMMMReportRequest/targetingTypes> ;
    sh:name "targeting types" ;
    sh:description "List of targeting types" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 5 ;
    sh:in ( "APPTYPE" "COUNTRY" "CREATIVE_TYPE" "GENDER" "LOCATION" ) ;
  ] .

# Shape for Create MMMReport Response
pinterest:CreateMMMReportResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CreateMMMReportResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMMMReportResponse/code> ;
    sh:name "code" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMMMReportResponse/data> ;
    sh:name "data" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateMMMReportResponse/data/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateMMMReportResponse/data/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Get MMMReport Response
pinterest:GetMMMReportResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:GetMMMReportResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GetMMMReportResponse/code> ;
    sh:name "code" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GetMMMReportResponse/data> ;
    sh:name "data" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.GetMMMReportResponse/data/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.GetMMMReportResponse/data/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GetMMMReportResponse/message> ;
    sh:name "message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GetMMMReportResponse/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Account
pinterest:AdAccountShape a sh:NodeShape ;
  sh:targetClass pinterest:AdAccount ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccount/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccount/createdTime> ;
    sh:name "created time" ;
    sh:description " Creation time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccount/currency> ;
    sh:name "currency" ;
    sh:description "Currency Codes from ISO 4217" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNK" "USD" "GBP" "CAD" "EUR" "AUD" "NZD" "SEK" "ILS" "CHF" "HKD" "JPY" "SGD" "KRW" "NOK" "DKK" "PLN" "RON" "HUF" "CZK" "BRL" "MXN" "ARS" "CLP" "COP" "INR" "TRY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccount/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:maxLength 18 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccount/name> ;
    sh:name "name" ;
    sh:description "Ad account name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 256 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccount/owner> ;
    sh:name "owner" ;
    sh:description "Ad account owner" ;
    sh:node pinterest:AdAccountOwnerShape ;
    sh:class pinterest:AdAccountOwner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccount/permissions> ;
    sh:name "permissions" ;
    sh:datatype xsd:string ;
    sh:in ( "OWNER" "ADMIN" "ANALYST" "SOS_READER" "FINANCE_MANAGER" "FINANCE_VIEW" "FINANCE_EDIT" "AUDIENCE_MANAGER" "CAMPAIGN_MANAGER" "CATALOGS_MANAGER" "RESTRICTED_OWNER" "PROFILE_MANAGER" "PROFILE_PUBLISHER" "RESOURCE_PINNER_LIST_OWNER" "RESOURCE_PINNER_LIST_READER" "BIZ_PINNER_LIST_SHARER" "RESOURCE_CONVERSION_TAGS_READER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccount/updatedTime> ;
    sh:name "updated time" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Account Owner
pinterest:AdAccountOwnerShape a sh:NodeShape ;
  sh:targetClass pinterest:AdAccountOwner ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccountOwner/id> ;
    sh:name "id" ;
    sh:description "The owning account's user ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccountOwner/username> ;
    sh:name "username" ;
    sh:description "Public username for the user account" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Account Create
pinterest:AdAccountCreateShape a sh:NodeShape ;
  sh:targetClass pinterest:AdAccountCreate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccountCreate/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccountCreate/currency> ;
    sh:name "currency" ;
    sh:description "Currency Codes from ISO 4217" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNK" "USD" "GBP" "CAD" "EUR" "AUD" "NZD" "SEK" "ILS" "CHF" "HKD" "JPY" "SGD" "KRW" "NOK" "DKK" "PLN" "RON" "HUF" "CZK" "BRL" "MXN" "ARS" "CLP" "COP" "INR" "TRY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccountCreate/name> ;
    sh:name "name" ;
    sh:description "Ad account name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 256 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccountCreate/ownerUserId> ;
    sh:name "owner user id" ;
    sh:description "Advertiser's owning user ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Template Based Report
pinterest:TemplateBasedReportShape a sh:NodeShape ;
  sh:targetClass pinterest:TemplateBasedReport ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TemplateBasedReport/message> ;
    sh:name "message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TemplateBasedReport/reportStatus> ;
    sh:name "report status" ;
    sh:description "Possible status for a bulk reporting job" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "DOES_NOT_EXIST" "FINISHED" "IN_PROGRESS" "EXPIRED" "FAILED" "CANCELLED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TemplateBasedReport/templateId> ;
    sh:name "template id" ;
    sh:description "Unique identifier of a template." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:maxLength 18 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TemplateBasedReport/token> ;
    sh:name "token" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Array Response
pinterest:AdGroupArrayResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:AdGroupArrayResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupArrayResponse/items> ;
    sh:name "items" ;
    sh:node pinterest:AdGroupArrayResponseElementShape ;
    sh:class pinterest:AdGroupArrayResponseElement ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Group Array Response Element
pinterest:AdGroupArrayResponseElementShape a sh:NodeShape ;
  sh:targetClass pinterest:AdGroupArrayResponseElement ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupArrayResponseElement/data> ;
    sh:name "data" ;
    sh:node pinterest:AdGroupShape ;
    sh:class pinterest:AdGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupArrayResponseElement/exceptions> ;
    sh:name "exceptions" ;
    sh:node pinterest:ExceptionShape ;
    sh:class pinterest:Exception ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Group Response
pinterest:AdGroupShape a sh:NodeShape ;
  sh:targetClass pinterest:AdGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/autoTargetingEnabled> ;
    sh:name "auto targeting enabled" ;
    sh:description "Enable auto-targeting for ad group. Default value is True. Also known as <a href=\"https://help.pinterest.com/en/business/article/performance-plus-targeting\" target=\"_blank\">\"Pinterest Performance+ targeting\"</a>." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/bidInMicroCurrency> ;
    sh:name "bid in micro currency" ;
    sh:description "Bid price in micro currency. This field is **REQUIRED** for the following campaign objective_type/billable_event combinations: AWARENESS/IMPRESSION, CONSIDERATION/CLICKTHROUGH, CATALOG_SALES/CLICKTHROUGH." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/bidStrategyType> ;
    sh:name "bid strategy type" ;
    sh:description "Bid strategy type. For Campaigns with Video Completion objectives, the only supported bid strategy type is AUTOMATIC_BID, also known as \"Pinterest Performance+ bidding\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AUTOMATIC_BID" "MAX_BID" "TARGET_AVG" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/billableEvent> ;
    sh:name "billable event" ;
    sh:description "Ad group billable event type. For update, only draft ad groups may update billable event." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CLICKTHROUGH" "IMPRESSION" "VIDEO_V_50_MRC" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/budgetInMicroCurrency> ;
    sh:name "budget in micro currency" ;
    sh:description "Budget in micro currency. This field is **REQUIRED** for non-CBO (campaign budget optimization) campaigns.  A CBO campaign automatically generates ad group budgets from its campaign budget to maximize campaign outcome. A CBO campaign is limited to 70 or less ad groups." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/budgetType> ;
    sh:name "budget type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DAILY" "LIFETIME" "CBO_ADGROUP" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/campaignId> ;
    sh:name "campaign id" ;
    sh:description "Campaign ID of the ad group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^[C]?\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/endTime> ;
    sh:name "end time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the ad group stop appearing. If not specified, ads run indefinitely unless you update the ad group by changing their status to `paused`. Cannot occur after `end_time` for parent campaign (if specified). Learn about <a href=\"/docs/api-features/managing-ads/#step-2-create-an-ad-group\" target=\"blank\">scheduling ads</a>.\nFor certain organizations (<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Closed beta</a>): Supported for campaigns with Campaign Budget Optimization (CBO).\nFor all organizations: Supported for campaigns without CBO." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/isCreativeOptimization> ;
    sh:name "is creative optimization" ;
    sh:description "Enable creative optimization for the ad group, default value is FALSE. When enabled, you allow Pinterest to automatically turn your product Pins into ads in different formats (collections and shopping) and deliver those ads to users at scale." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/lifetimeFrequencyCap> ;
    sh:name "lifetime frequency cap" ;
    sh:description "Set a limit to the number of times a promoted pin from this campaign can be impressed by a pinner within the past rolling 30 days. Only available for CPM (cost per mille (1000 impressions))  ad groups. A CPM ad group has an IMPRESSION <a href=\"/docs/redoc/#section/Billable-event\">billable_event</a> value. This field **REQUIRES** the `end_time` field." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/name> ;
    sh:name "name" ;
    sh:description "Ad group name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/optimizationGoalMetadata> ;
    sh:name "optimization goal metadata" ;
    sh:description "Optimization goals for objective-based performance campaigns. **REQUIRED** when campaign's `objective_type` is set to `\"WEB_CONVERSION\"`." ;
    sh:node pinterest:OptimizationGoalMetadataShape ;
    sh:class pinterest:OptimizationGoalMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/pacingDeliveryType> ;
    sh:name "pacing delivery type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "STANDARD" "ACCELERATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/placementGroup> ;
    sh:name "placement group" ;
    sh:description "<a href=\"/docs/redoc/#section/Placement-group\">Placement group</a>." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ALL" "SEARCH" "BROWSE" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/promotionApplicationLevel> ;
    sh:name "promotion application level" ;
    sh:description "Specify if the promotion is applied at ad group or item level" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NONE" "ITEM" "AD_GROUP" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/promotionId> ;
    sh:name "promotion id" ;
    sh:description "Promotion ID. To clear this field, set to null." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/startTime> ;
    sh:name "start time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the ad group start to appear. If not specified, ads appear during parent campaign's `start_time`. Cannot precede `start_time` for parent campaign (if specified). Learn about <a href=\"/docs/api-features/managing-ads/#step-2-create-an-ad-group\" target=\"blank\">scheduling ads</a>.\nFor certain organizations (<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Closed beta</a>): Supported for campaigns with Campaign Budget Optimization (CBO).\nFor all organizations: Supported for campaigns without CBO." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/status> ;
    sh:name "status" ;
    sh:description "Ad group/entity status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/targetingSpec> ;
    sh:name "targeting spec" ;
    sh:description "Ad group targeting specification defining the ad group target audience. For example, `{\"APPTYPE\":[\"iphone\"], \"GENDER\":[\"male\"], \"LOCALE\":[\"en-US\"], \"LOCATION\":[\"501\"], \"MINIMUM_AGE\":\"18\", \"MAXIMUM_AGE\":\"65+\"}`" ;
    sh:node pinterest:TargetingSpecShape ;
    sh:class pinterest:TargetingSpec ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/targetingTemplateIds> ;
    sh:name "targeting template ids" ;
    sh:description "Targeting template IDs applied to the ad group. We currently only support 1 targeting template per ad group. To use targeting templates, do not set any other targeting fields: targeting_spec, tracking_urls, auto_targeting_enabled, placement_group. To clear all targeting template IDs, set this field to ['0']." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:description "Third-party tracking URLs.<br> JSON object with the format: {\"<a href=\"/docs/redoc/#section/Tracking-URL-event\">Tracking event enum</a>\":[URL string array],...}<br> For example: {\"impression\": [\"URL1\", \"URL2\"], \"click\": [\"URL1\", \"URL2\", \"URL3\"]}.<br>Up to three tracking URLs are supported for each event type. Tracking URLs set at the ad group or ad level can override those set at the campaign level. May be null. Pass in an empty object - {} - to remove tracking URLs.<br><br> For more information, see <a href=\"https://help.pinterest.com/en/business/article/third-party-and-dynamic-tracking\" target=\"_blank\">Third-party and dynamic tracking</a>." ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Advertiser ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/bidMultiplier> ;
    sh:name "bid multiplier" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank>Open beta</a>\nBid multiplier for ad group. This value is a double between 0.1\nand 10.0. Enter 0 to remove the bid multiplier.\n- Not currently supported for <a href=\"/docs/api-features/pinterest-performance-plus-setup/\" target=\"blank\">Pinterest Performance+ campaigns</a>." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
    sh:maxInclusive "10"^^xsd:double ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/conversionLearningModeType> ;
    sh:name "conversion learning mode type" ;
    sh:description "oCPM learn mode" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NOT_ACTIVE" "ACTIVE" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/createdTime> ;
    sh:name "created time" ;
    sh:description "Ad group creation time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/dcaAssets> ;
    sh:name "dca assets" ;
    sh:description "[DCA] The Dynamic creative assets to use for DCA. Dynamic Creative Assembly (DCA) accepts basic creative assets of an ad (image, video, title, call to action, logo etc). Then it automatically generates optimized ad combinations based on these assets." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/feedProfileId> ;
    sh:name "feed profile id" ;
    sh:description "Feed Profile ID associated to the adgroup." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/id> ;
    sh:name "id" ;
    sh:description "Ad group ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/summaryStatus> ;
    sh:name "summary status" ;
    sh:description "Ad group summary status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "RUNNING" "PAUSED" "NOT_STARTED" "COMPLETED" "ADVERTISER_DISABLED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/type> ;
    sh:name "type" ;
    sh:description "Always \"adgroup\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupResponse/updatedTime> ;
    sh:name "updated time" ;
    sh:description "Ad group last update time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Optimization Goal Metadata
pinterest:OptimizationGoalMetadataShape a sh:NodeShape ;
  sh:targetClass pinterest:OptimizationGoalMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OptimizationGoalMetadata/conversionTagV3GoalMetadata> ;
    sh:name "conversion tag v3goal metadata" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/conversionTagV3GoalMetadata/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/conversionTagV3GoalMetadata/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OptimizationGoalMetadata/frequencyGoalMetadata> ;
    sh:name "frequency goal metadata" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/frequencyGoalMetadata/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/frequencyGoalMetadata/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OptimizationGoalMetadata/scrollupGoalMetadata> ;
    sh:name "scrollup goal metadata" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/scrollupGoalMetadata/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/scrollupGoalMetadata/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Create Request
pinterest:AdGroupCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:AdGroupCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/autoTargetingEnabled> ;
    sh:name "auto targeting enabled" ;
    sh:description "Enable auto-targeting for ad group. Default value is True. Also known as <a href=\"https://help.pinterest.com/en/business/article/performance-plus-targeting\" target=\"_blank\">\"Pinterest Performance+ targeting\"</a>." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/bidInMicroCurrency> ;
    sh:name "bid in micro currency" ;
    sh:description "Bid price in micro currency. This field is **REQUIRED** for the following campaign objective_type/billable_event combinations: AWARENESS/IMPRESSION, CONSIDERATION/CLICKTHROUGH, CATALOG_SALES/CLICKTHROUGH." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/bidStrategyType> ;
    sh:name "bid strategy type" ;
    sh:description "Bid strategy type. For Campaigns with Video Completion objectives, the only supported bid strategy type is AUTOMATIC_BID, also known as \"Pinterest Performance+ bidding\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AUTOMATIC_BID" "MAX_BID" "TARGET_AVG" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/billableEvent> ;
    sh:name "billable event" ;
    sh:description "Ad group billable event type. For update, only draft ad groups may update billable event." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CLICKTHROUGH" "IMPRESSION" "VIDEO_V_50_MRC" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/budgetInMicroCurrency> ;
    sh:name "budget in micro currency" ;
    sh:description "Budget in micro currency. This field is **REQUIRED** for non-CBO (campaign budget optimization) campaigns.  A CBO campaign automatically generates ad group budgets from its campaign budget to maximize campaign outcome. A CBO campaign is limited to 70 or less ad groups." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/budgetType> ;
    sh:name "budget type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DAILY" "LIFETIME" "CBO_ADGROUP" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "Campaign ID of the ad group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^[C]?\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/endTime> ;
    sh:name "end time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the ad group stop appearing. If not specified, ads run indefinitely unless you update the ad group by changing their status to `paused`. Cannot occur after `end_time` for parent campaign (if specified). Learn about <a href=\"/docs/api-features/managing-ads/#step-2-create-an-ad-group\" target=\"blank\">scheduling ads</a>.\nFor certain organizations (<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Closed beta</a>): Supported for campaigns with Campaign Budget Optimization (CBO).\nFor all organizations: Supported for campaigns without CBO." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/isCreativeOptimization> ;
    sh:name "is creative optimization" ;
    sh:description "Enable creative optimization for the ad group, default value is FALSE. When enabled, you allow Pinterest to automatically turn your product Pins into ads in different formats (collections and shopping) and deliver those ads to users at scale." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/lifetimeFrequencyCap> ;
    sh:name "lifetime frequency cap" ;
    sh:description "Set a limit to the number of times a promoted pin from this campaign can be impressed by a pinner within the past rolling 30 days. Only available for CPM (cost per mille (1000 impressions))  ad groups. A CPM ad group has an IMPRESSION <a href=\"/docs/redoc/#section/Billable-event\">billable_event</a> value. This field **REQUIRES** the `end_time` field." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/name> ;
    sh:name "name" ;
    sh:description "Ad group name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/optimizationGoalMetadata> ;
    sh:name "optimization goal metadata" ;
    sh:description "Optimization goals for objective-based performance campaigns. **REQUIRED** when campaign's `objective_type` is set to `\"WEB_CONVERSION\"`." ;
    sh:node pinterest:OptimizationGoalMetadataShape ;
    sh:class pinterest:OptimizationGoalMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/pacingDeliveryType> ;
    sh:name "pacing delivery type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "STANDARD" "ACCELERATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/placementGroup> ;
    sh:name "placement group" ;
    sh:description "<a href=\"/docs/redoc/#section/Placement-group\">Placement group</a>." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ALL" "SEARCH" "BROWSE" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/promotionApplicationLevel> ;
    sh:name "promotion application level" ;
    sh:description "Specify if the promotion is applied at ad group or item level" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NONE" "ITEM" "AD_GROUP" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/promotionId> ;
    sh:name "promotion id" ;
    sh:description "Promotion ID. To clear this field, set to null." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/startTime> ;
    sh:name "start time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the ad group start to appear. If not specified, ads appear during parent campaign's `start_time`. Cannot precede `start_time` for parent campaign (if specified). Learn about <a href=\"/docs/api-features/managing-ads/#step-2-create-an-ad-group\" target=\"blank\">scheduling ads</a>.\nFor certain organizations (<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Closed beta</a>): Supported for campaigns with Campaign Budget Optimization (CBO).\nFor all organizations: Supported for campaigns without CBO." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/status> ;
    sh:name "status" ;
    sh:description "Ad group/entity status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/targetingSpec> ;
    sh:name "targeting spec" ;
    sh:description "Ad group targeting specification defining the ad group target audience. For example, `{\"APPTYPE\":[\"iphone\"], \"GENDER\":[\"male\"], \"LOCALE\":[\"en-US\"], \"LOCATION\":[\"501\"], \"MINIMUM_AGE\":\"18\", \"MAXIMUM_AGE\":\"65+\"}`" ;
    sh:node pinterest:TargetingSpecShape ;
    sh:class pinterest:TargetingSpec ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/targetingTemplateIds> ;
    sh:name "targeting template ids" ;
    sh:description "Targeting template IDs applied to the ad group. We currently only support 1 targeting template per ad group. To use targeting templates, do not set any other targeting fields: targeting_spec, tracking_urls, auto_targeting_enabled, placement_group. To clear all targeting template IDs, set this field to ['0']." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:description "Third-party tracking URLs.<br> JSON object with the format: {\"<a href=\"/docs/redoc/#section/Tracking-URL-event\">Tracking event enum</a>\":[URL string array],...}<br> For example: {\"impression\": [\"URL1\", \"URL2\"], \"click\": [\"URL1\", \"URL2\", \"URL3\"]}.<br>Up to three tracking URLs are supported for each event type. Tracking URLs set at the ad group or ad level can override those set at the campaign level. May be null. Pass in an empty object - {} - to remove tracking URLs.<br><br> For more information, see <a href=\"https://help.pinterest.com/en/business/article/third-party-and-dynamic-tracking\" target=\"_blank\">Third-party and dynamic tracking</a>." ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupCreateRequest/bidMultiplier> ;
    sh:name "bid multiplier" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank>Open beta</a>\nBid multiplier for ad group. This value is a double between 0.1\nand 10.0. Enter 0 to remove the bid multiplier.\n- Make sure the `bid_strategy` type for your ad group is set to `AUTOMATIC_BID`.\n- Not currently supported for <a href=\"/docs/api-features/pinterest-performance-plus-setup/\" target=\"blank\">Pinterest Performance+ campaigns</a>." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
    sh:maxInclusive "10"^^xsd:double ;
  ] .

# Shape for Ad Group Update Request
pinterest:AdGroupUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:AdGroupUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/autoTargetingEnabled> ;
    sh:name "auto targeting enabled" ;
    sh:description "Enable auto-targeting for ad group. Default value is True. Also known as <a href=\"https://help.pinterest.com/en/business/article/performance-plus-targeting\" target=\"_blank\">\"Pinterest Performance+ targeting\"</a>." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/bidInMicroCurrency> ;
    sh:name "bid in micro currency" ;
    sh:description "Bid price in micro currency. This field is **REQUIRED** for the following campaign objective_type/billable_event combinations: AWARENESS/IMPRESSION, CONSIDERATION/CLICKTHROUGH, CATALOG_SALES/CLICKTHROUGH." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/bidStrategyType> ;
    sh:name "bid strategy type" ;
    sh:description "Bid strategy type. For Campaigns with Video Completion objectives, the only supported bid strategy type is AUTOMATIC_BID, also known as \"Pinterest Performance+ bidding\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AUTOMATIC_BID" "MAX_BID" "TARGET_AVG" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/billableEvent> ;
    sh:name "billable event" ;
    sh:description "Ad group billable event type. For update, only draft ad groups may update billable event." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CLICKTHROUGH" "IMPRESSION" "VIDEO_V_50_MRC" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/budgetInMicroCurrency> ;
    sh:name "budget in micro currency" ;
    sh:description "Budget in micro currency. This field is **REQUIRED** for non-CBO (campaign budget optimization) campaigns.  A CBO campaign automatically generates ad group budgets from its campaign budget to maximize campaign outcome. A CBO campaign is limited to 70 or less ad groups." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/budgetType> ;
    sh:name "budget type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DAILY" "LIFETIME" "CBO_ADGROUP" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "Campaign ID of the ad group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^[C]?\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/endTime> ;
    sh:name "end time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the ad group stop appearing. If not specified, ads run indefinitely unless you update the ad group by changing their status to `paused`. Cannot occur after `end_time` for parent campaign (if specified). Learn about <a href=\"/docs/api-features/managing-ads/#step-2-create-an-ad-group\" target=\"blank\">scheduling ads</a>.\nFor certain organizations (<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Closed beta</a>): Supported for campaigns with Campaign Budget Optimization (CBO).\nFor all organizations: Supported for campaigns without CBO." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/isCreativeOptimization> ;
    sh:name "is creative optimization" ;
    sh:description "Enable creative optimization for the ad group, default value is FALSE. When enabled, you allow Pinterest to automatically turn your product Pins into ads in different formats (collections and shopping) and deliver those ads to users at scale." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/lifetimeFrequencyCap> ;
    sh:name "lifetime frequency cap" ;
    sh:description "Set a limit to the number of times a promoted pin from this campaign can be impressed by a pinner within the past rolling 30 days. Only available for CPM (cost per mille (1000 impressions))  ad groups. A CPM ad group has an IMPRESSION <a href=\"/docs/redoc/#section/Billable-event\">billable_event</a> value. This field **REQUIRES** the `end_time` field." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/name> ;
    sh:name "name" ;
    sh:description "Ad group name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/optimizationGoalMetadata> ;
    sh:name "optimization goal metadata" ;
    sh:description "Optimization goals for objective-based performance campaigns. **REQUIRED** when campaign's `objective_type` is set to `\"WEB_CONVERSION\"`." ;
    sh:node pinterest:OptimizationGoalMetadataShape ;
    sh:class pinterest:OptimizationGoalMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/pacingDeliveryType> ;
    sh:name "pacing delivery type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "STANDARD" "ACCELERATED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/placementGroup> ;
    sh:name "placement group" ;
    sh:description "<a href=\"/docs/redoc/#section/Placement-group\">Placement group</a>." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ALL" "SEARCH" "BROWSE" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/promotionApplicationLevel> ;
    sh:name "promotion application level" ;
    sh:description "Specify if the promotion is applied at ad group or item level" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NONE" "ITEM" "AD_GROUP" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/promotionId> ;
    sh:name "promotion id" ;
    sh:description "Promotion ID. To clear this field, set to null." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/startTime> ;
    sh:name "start time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the ad group start to appear. If not specified, ads appear during parent campaign's `start_time`. Cannot precede `start_time` for parent campaign (if specified). Learn about <a href=\"/docs/api-features/managing-ads/#step-2-create-an-ad-group\" target=\"blank\">scheduling ads</a>.\nFor certain organizations (<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Closed beta</a>): Supported for campaigns with Campaign Budget Optimization (CBO).\nFor all organizations: Supported for campaigns without CBO." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/status> ;
    sh:name "status" ;
    sh:description "Ad group/entity status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/targetingSpec> ;
    sh:name "targeting spec" ;
    sh:description "Ad group targeting specification defining the ad group target audience. For example, `{\"APPTYPE\":[\"iphone\"], \"GENDER\":[\"male\"], \"LOCALE\":[\"en-US\"], \"LOCATION\":[\"501\"], \"MINIMUM_AGE\":\"18\", \"MAXIMUM_AGE\":\"65+\"}`" ;
    sh:node pinterest:TargetingSpecShape ;
    sh:class pinterest:TargetingSpec ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/targetingTemplateIds> ;
    sh:name "targeting template ids" ;
    sh:description "Targeting template IDs applied to the ad group. We currently only support 1 targeting template per ad group. To use targeting templates, do not set any other targeting fields: targeting_spec, tracking_urls, auto_targeting_enabled, placement_group. To clear all targeting template IDs, set this field to ['0']." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:description "Third-party tracking URLs.<br> JSON object with the format: {\"<a href=\"/docs/redoc/#section/Tracking-URL-event\">Tracking event enum</a>\":[URL string array],...}<br> For example: {\"impression\": [\"URL1\", \"URL2\"], \"click\": [\"URL1\", \"URL2\", \"URL3\"]}.<br>Up to three tracking URLs are supported for each event type. Tracking URLs set at the ad group or ad level can override those set at the campaign level. May be null. Pass in an empty object - {} - to remove tracking URLs.<br><br> For more information, see <a href=\"https://help.pinterest.com/en/business/article/third-party-and-dynamic-tracking\" target=\"_blank\">Third-party and dynamic tracking</a>." ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/bidMultiplier> ;
    sh:name "bid multiplier" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank>Open beta</a>\nBid multiplier for ad group. This value is a double between 0.1\nand 10.0. Enter 0 to remove the bid multiplier.\n- Make sure the `bid_strategy` type for your ad group is set to `AUTOMATIC_BID`.\n- Not currently supported for <a href=\"/docs/api-features/pinterest-performance-plus-setup/\" target=\"blank\">Pinterest Performance+ campaigns</a>." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
    sh:maxInclusive "10"^^xsd:double ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupUpdateRequest/id> ;
    sh:name "id" ;
    sh:description "Ad group ID." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Ad Group Audience Sizing Request
pinterest:AdGroupAudienceSizingRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:AdGroupAudienceSizingRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupAudienceSizingRequest/autoTargetingEnabled> ;
    sh:name "auto targeting enabled" ;
    sh:description "Enable auto-targeting for ad group. Default value is True. Also known as <a href=\"https://help.pinterest.com/en/business/article/performance-plus-targeting\" target=\"_blank\">\"Pinterest Performance+ targeting\"</a>." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupAudienceSizingRequest/creativeTypes> ;
    sh:name "creative types" ;
    sh:description "Pin creative types filter. </p><strong>Note:</strong> SHOP_THE_PIN has been deprecated. Please use COLLECTION instead." ;
    sh:datatype xsd:string ;
    sh:in ( "REGULAR" "VIDEO" "SHOPPING" "CAROUSEL" "MAX_VIDEO" "SHOP_THE_PIN" "COLLECTION" "IDEA" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupAudienceSizingRequest/keywords> ;
    sh:name "keywords" ;
    sh:description "Array of keyword objects. If the keywords field is missing, all keywords will be targeted." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdGroupAudienceSizingRequest/keywords/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdGroupAudienceSizingRequest/keywords/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupAudienceSizingRequest/placementGroup> ;
    sh:name "placement group" ;
    sh:description "<a href=\"/docs/redoc/#section/Placement-group\">Placement group</a>." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ALL" "SEARCH" "BROWSE" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupAudienceSizingRequest/productGroupIds> ;
    sh:name "product group ids" ;
    sh:description "Targeted product group IDs. </p><strong>Note:</strong> This can only be combined with shopping/catalog sales campaigns. For more information, <a href=\"https://help.pinterest.com/en/business/article/shopping-ads#section-14571\" target=\"_blank\">click here</a>. SHOPPING_RETARGETING must be included in targeting_spec object or this field will be ignored." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupAudienceSizingRequest/targetingSpec> ;
    sh:name "targeting spec" ;
    sh:description "Ad group targeting specification defining the ad group target audience. For example, `{\"APPTYPE\":[\"iphone\"], \"GENDER\":[\"male\"], \"LOCALE\":[\"en-US\"], \"LOCATION\":[\"501\"], \"MINIMUM_AGE\":\"18\", \"MAXIMUM_AGE\":\"65+\"}`" ;
    sh:node pinterest:TargetingSpecShape ;
    sh:class pinterest:TargetingSpec ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Group Audience Sizing Response
pinterest:AdGroupAudienceSizingShape a sh:NodeShape ;
  sh:targetClass pinterest:AdGroupAudienceSizing ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupAudienceSizingResponse/audienceSizeLowerBound> ;
    sh:name "audience size lower bound" ;
    sh:description "The lower confidence bound of the estimated potential audience size. \"Potential audience size\" estimates the number of people you may be able to reach per month with your campaign. It is based on historical advertising data and the targeting criteria you select. It does not guarantee results or take into account factors such as bid, budget, schedule, seasonality or product experiments." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupAudienceSizingResponse/audienceSizeUpperBound> ;
    sh:name "audience size upper bound" ;
    sh:description "The upper confidence bound of the estimated potential audience size. \"Potential audience size\" estimates the number of people you may be able to reach per month with your campaign. It is based on historical advertising data and the targeting criteria you select. It does not guarantee results or take into account factors such as bid, budget, schedule, seasonality or product experiments." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Bid Floor
pinterest:BidFloorShape a sh:NodeShape ;
  sh:targetClass pinterest:BidFloor ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BidFloor/bidFloors> ;
    sh:name "bid floors" ;
    sh:description "A list of bid floors in micro currency. For example, [100000, 200000]" ;
    sh:datatype xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BidFloor/type> ;
    sh:name "type" ;
    sh:description "Always the string 'bidfloor'" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bid Floor Request
pinterest:BidFloorRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:BidFloorRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BidFloorRequest/bidFloorSpecs> ;
    sh:name "bid floor specs" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BidFloorRequest/bidFloorSpecs/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BidFloorRequest/bidFloorSpecs/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BidFloorRequest/targetingSpec> ;
    sh:name "targeting spec" ;
    sh:description "Ad group targeting specification defining the ad group target audience. For example, `{\"APPTYPE\":[\"iphone\"], \"GENDER\":[\"male\"], \"LOCALE\":[\"en-US\"], \"LOCATION\":[\"501\"], \"MINIMUM_AGE\":\"18\", \"MAXIMUM_AGE\":\"65+\"}`" ;
    sh:node pinterest:TargetingSpecShape ;
    sh:class pinterest:TargetingSpec ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Daily Stats
pinterest:AdDailyStatsShape a sh:NodeShape ;
  sh:targetClass pinterest:AdDailyStats ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdDailyStats/date> ;
    sh:name "date" ;
    sh:description "Reporting date (DAY granularity)" ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdDailyStats/adId> ;
    sh:name "ad id" ;
    sh:description "The ad ID this metric row belongs to" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdDailyStats/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "The ad account ID" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdDailyStats/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign ID" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdDailyStats/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group ID" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdDailyStats/spendInDollar> ;
    sh:name "spend in dollar" ;
    sh:description "Spend in USD" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdDailyStats/impression1> ;
    sh:name "impression1" ;
    sh:description "Impressions under primary attribution" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdDailyStats/clickthrough1> ;
    sh:name "clickthrough1" ;
    sh:description "Clickthroughs under primary attribution" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdDailyStats/totalConversions> ;
    sh:name "total conversions" ;
    sh:description "Total conversions across all attribution windows" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdDailyStats/totalClickthrough> ;
    sh:name "total clickthrough" ;
    sh:description "Total clickthrough conversions" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdDailyStats/totalImpression> ;
    sh:name "total impression" ;
    sh:description "Total impressions across attribution windows" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Array Response
pinterest:AdArrayResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:AdArrayResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdArrayResponse/items> ;
    sh:name "items" ;
    sh:node pinterest:AdArrayResponseElementShape ;
    sh:class pinterest:AdArrayResponseElement ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Array Response Element
pinterest:AdArrayResponseElementShape a sh:NodeShape ;
  sh:targetClass pinterest:AdArrayResponseElement ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdArrayResponseElement/data> ;
    sh:name "data" ;
    sh:node pinterest:AdShape ;
    sh:class pinterest:Ad ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdArrayResponseElement/exceptions> ;
    sh:name "exceptions" ;
    sh:node pinterest:ExceptionShape ;
    sh:class pinterest:Exception ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Response
pinterest:AdShape a sh:NodeShape ;
  sh:targetClass pinterest:Ad ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "ID of the ad group that contains the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^(AG)?\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/androidDeepLink> ;
    sh:name "android deep link" ;
    sh:description "Deep link URL for Android devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/carouselAndroidDeepLinks> ;
    sh:name "carousel android deep links" ;
    sh:description "Comma-separated deep links for the carousel pin on Android." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/carouselDestinationUrls> ;
    sh:name "carousel destination urls" ;
    sh:description "Comma-separated destination URLs for the carousel pin to promote." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/carouselIosDeepLinks> ;
    sh:name "carousel ios deep links" ;
    sh:description "Comma-separated deep links for the carousel pin on iOS." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/clickTrackingUrl> ;
    sh:name "click tracking url" ;
    sh:description "Tracking url for the ad clicks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/creativeType> ;
    sh:name "creative type" ;
    sh:description "Ad creative type enum.\n**Note:** SHOP_THE_PIN has been deprecated. Please use COLLECTION instead." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "REGULAR" "VIDEO" "SHOPPING" "CAROUSEL" "MAX_VIDEO" "SHOP_THE_PIN" "COLLECTION" "IDEA" "SHOWCASE" "QUIZ" "COLLAGE" "MAX_WIDTH_REGULAR_COLLECTION" "MAX_WIDTH_VIDEO_COLLECTION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/customizableCtaType> ;
    sh:name "customizable cta type" ;
    sh:description "Select a call to action (CTA) to display below your ad. Available only for ads with direct links enabled. CTA options for consideration and conversion campaigns are LEARN_MORE, SHOP_NOW, BOOK_NOW, SIGN_UP, VISIT_SITE, BUY_NOW, GET_OFFER, ORDER_NOW, ADD_TO_CART (for conversion campaigns with add to cart conversion events only)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "GET_OFFER" "LEARN_MORE" "ORDER_NOW" "SHOP_NOW" "SIGN_UP" "SUBSCRIBE" "BUY_NOW" "CONTACT_US" "GET_QUOTE" "VISIT_SITE" "APPLY_NOW" "BOOK_NOW" "REQUEST_DEMO" "REGISTER_NOW" "FIND_A_DEALER" "ADD_TO_CART" "WATCH_NOW" "READ_MORE" "BUY_TICKETS" "DONATE_NOW" "DOWNLOAD" "EXPLORE_MORE" "FIND_A_LOCATION" "GET_DEAL" "GET_RECIPE" "GET_SHOWTIMES" "ON_SALE" "PLAY_GAME" "TRY_IT" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/destinationUrl> ;
    sh:name "destination url" ;
    sh:description "Destination URL." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/disclosureType> ;
    sh:name "disclosure type" ;
    sh:description "Type of information in the page referenced by `disclosure_url`, provided either by the Food and Drug Administration (FDA) or the manufacturer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NO_DISCLOSURE" "PRESCRIBING_INFORMATION" "PRESCRIBING_INFORMATION_BOX_WARNING" "IMPORTANT_SAFETY_INFO" "MED_GUIDE" "PATIENT_INFORMATION" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/disclosureUrl> ;
    sh:name "disclosure url" ;
    sh:description "URL for a page that provides disclosures about a pharmaceutical product, such as potential side effects. Make sure the URL takes the user directly to the disclosure content and the referenced site is secure." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/gridClickType> ;
    sh:name "grid click type" ;
    sh:description "Where a user is taken after clicking on an ad in grid. </p><strong>Note:</strong>  This parameter is read-only and is set to DIRECT_TO_DESTINATION by default for direct links supported ads.  grid_click_type values provided will be ignored." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CLOSEUP" "DIRECT_TO_DESTINATION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/iosDeepLink> ;
    sh:name "ios deep link" ;
    sh:description "Deep link URL for iOS devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/isPinDeleted> ;
    sh:name "is pin deleted" ;
    sh:description "Is original pin deleted?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/isRemovable> ;
    sh:name "is removable" ;
    sh:description "Is pin repinnable?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/leadFormId> ;
    sh:name "lead form id" ;
    sh:description "Lead form ID for lead ad generation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^(AG)?\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/name> ;
    sh:name "name" ;
    sh:description "Name of the ad - 255 chars max." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/quizPinData> ;
    sh:name "quiz pin data" ;
    sh:description "Before creating a quiz ad, you must create an organic Pin using POST/Create Pin for each result in the quiz. Quiz ads cannot be saved by a Pinner. Quiz ad results can be saved." ;
    sh:node pinterest:QuizPinDataShape ;
    sh:class pinterest:QuizPinData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/status> ;
    sh:name "status" ;
    sh:description "Entity status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/viewTrackingUrl> ;
    sh:name "view tracking url" ;
    sh:description "Tracking URL for ad impressions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/pinId> ;
    sh:name "pin id" ;
    sh:description "Pin ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "The ID of the advertiser that this ad belongs to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/campaignId> ;
    sh:name "campaign id" ;
    sh:description "ID of the ad campaign that contains this ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/collectionItemsDestinationUrlTemplate> ;
    sh:name "collection items destination url template" ;
    sh:description "Destination URL template for all items within a collections drawer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/createdTime> ;
    sh:name "created time" ;
    sh:description "Pin creation time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/id> ;
    sh:name "id" ;
    sh:description "The ID of this ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/rejectedReasons> ;
    sh:name "rejected reasons" ;
    sh:description "Enum reason why the pin was rejected. Returned if <code>review_status</code> is \"REJECTED\"." ;
    sh:datatype xsd:string ;
    sh:in ( "HASHTAGS" "PROMOTIONS_AND_PRICES" "TARGETING" "LANDING_PAGE" "CAPS_AND_SYMBOLS" "SHOCKING" "WEIGHT_LOSS" "PROHIBITED_PRODUCT" "AUTHENTICITY" "NUDITY" "CONFUSING_DESIGN" "URGENCY" "RATINGS" "APP" "ALCOHOL" "CONTESTS" "POLITICAL" "OTHER" "IMAGE" "NAR" "INCONSISTENT" "CLICKBAIT" "NO_DESCRIPTION" "LOW_QUALITY" "EXAGGERATED_CLAIMS" "PINTEREST_BRAND" "ALCOHOL_NO_SALE" "LANDING_PAGE_SPEED" "LANDING_PAGE_HARDWALL" "LANDING_PAGE_BROKEN" "LANDING_PAGE_QUALITY" "OUT_OF_STOCK" "IMAGE_LOW_QUALITY" "IMAGE_BUSY" "IMAGE_POORLY_EDITED" "IMAGE_BEFORE_AFTER" "UGC" "FAKE_BUTTONS" "WEAPONS" "SENSITIVE" "UNACCEPTABLE_BUSINESS" "SUSPICIOUS_CLAIMS" "PHARMA" "SUSPICIOUS_SUPPLEMENTS" "ILLEGAL_RECREATIONAL_DRUG" "LOW_QUALITY_LANDING_PAGE" "RESTRICTED_HEALTHCARE" "INCONSISTENT_LANG_FR" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/rejectionLabels> ;
    sh:name "rejection labels" ;
    sh:description "Text reason why the pin was rejected. Returned if <code>review_status</code> is \"REJECTED\"." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/reviewStatus> ;
    sh:name "review status" ;
    sh:description "Ad review status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "OTHER" "PENDING" "REJECTED" "APPROVED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/summaryStatus> ;
    sh:name "summary status" ;
    sh:description "Ad summary status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "APPROVED" "PAUSED" "PENDING" "REJECTED" "ADVERTISER_DISABLED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/type> ;
    sh:name "type" ;
    sh:description "Always \"ad\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdResponse/updatedTime> ;
    sh:name "updated time" ;
    sh:description "Last update time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Quiz Pin Data
pinterest:QuizPinDataShape a sh:NodeShape ;
  sh:targetClass pinterest:QuizPinData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinData/questions> ;
    sh:name "questions" ;
    sh:node pinterest:QuizPinQuestionShape ;
    sh:class pinterest:QuizPinQuestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinData/results> ;
    sh:name "results" ;
    sh:node pinterest:QuizPinResultShape ;
    sh:class pinterest:QuizPinResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinData/tieBreakerCustomResult> ;
    sh:name "tie breaker custom result" ;
    sh:description "The result, and link out, based on the user’s choice." ;
    sh:node pinterest:QuizPinResultShape ;
    sh:class pinterest:QuizPinResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinData/tieBreakerType> ;
    sh:name "tie breaker type" ;
    sh:description "Quiz ad tie breaker type, default is RANDOM" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "RANDOM" "CUSTOM" ) ;
  ] .

# Shape for Quiz Pin Question
pinterest:QuizPinQuestionShape a sh:NodeShape ;
  sh:targetClass pinterest:QuizPinQuestion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinQuestion/options> ;
    sh:name "options" ;
    sh:node pinterest:QuizPinOptionShape ;
    sh:class pinterest:QuizPinOption ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinQuestion/questionId> ;
    sh:name "question id" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinQuestion/questionText> ;
    sh:name "question text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Quiz Pin Option
pinterest:QuizPinOptionShape a sh:NodeShape ;
  sh:targetClass pinterest:QuizPinOption ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinOption/id> ;
    sh:name "id" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinOption/text> ;
    sh:name "text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Quiz Pin Result
pinterest:QuizPinResultShape a sh:NodeShape ;
  sh:targetClass pinterest:QuizPinResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinResult/androidDeepLink> ;
    sh:name "android deep link" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinResult/destinationUrl> ;
    sh:name "destination url" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinResult/iosDeepLink> ;
    sh:name "ios deep link" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinResult/organicPinId> ;
    sh:name "organic pin id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QuizPinResult/resultId> ;
    sh:name "result id" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Create Request
pinterest:AdCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:AdCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "ID of the ad group that contains the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^(AG)?\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/androidDeepLink> ;
    sh:name "android deep link" ;
    sh:description "Deep link URL for Android devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/carouselAndroidDeepLinks> ;
    sh:name "carousel android deep links" ;
    sh:description "Comma-separated deep links for the carousel pin on Android." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/carouselDestinationUrls> ;
    sh:name "carousel destination urls" ;
    sh:description "Comma-separated destination URLs for the carousel pin to promote." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/carouselIosDeepLinks> ;
    sh:name "carousel ios deep links" ;
    sh:description "Comma-separated deep links for the carousel pin on iOS." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/clickTrackingUrl> ;
    sh:name "click tracking url" ;
    sh:description "Tracking url for the ad clicks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/creativeType> ;
    sh:name "creative type" ;
    sh:description "Ad creative type enum.\n**Note:** SHOP_THE_PIN has been deprecated. Please use COLLECTION instead." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "REGULAR" "VIDEO" "SHOPPING" "CAROUSEL" "MAX_VIDEO" "SHOP_THE_PIN" "COLLECTION" "IDEA" "SHOWCASE" "QUIZ" "COLLAGE" "MAX_WIDTH_REGULAR_COLLECTION" "MAX_WIDTH_VIDEO_COLLECTION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/customizableCtaType> ;
    sh:name "customizable cta type" ;
    sh:description "Select a call to action (CTA) to display below your ad. Available only for ads with direct links enabled. CTA options for consideration and conversion campaigns are LEARN_MORE, SHOP_NOW, BOOK_NOW, SIGN_UP, VISIT_SITE, BUY_NOW, GET_OFFER, ORDER_NOW, ADD_TO_CART (for conversion campaigns with add to cart conversion events only)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "GET_OFFER" "LEARN_MORE" "ORDER_NOW" "SHOP_NOW" "SIGN_UP" "SUBSCRIBE" "BUY_NOW" "CONTACT_US" "GET_QUOTE" "VISIT_SITE" "APPLY_NOW" "BOOK_NOW" "REQUEST_DEMO" "REGISTER_NOW" "FIND_A_DEALER" "ADD_TO_CART" "WATCH_NOW" "READ_MORE" "BUY_TICKETS" "DONATE_NOW" "DOWNLOAD" "EXPLORE_MORE" "FIND_A_LOCATION" "GET_DEAL" "GET_RECIPE" "GET_SHOWTIMES" "ON_SALE" "PLAY_GAME" "TRY_IT" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/destinationUrl> ;
    sh:name "destination url" ;
    sh:description "Destination URL." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/disclosureType> ;
    sh:name "disclosure type" ;
    sh:description "Type of information in the page referenced by `disclosure_url`, provided either by the Food and Drug Administration (FDA) or the manufacturer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NO_DISCLOSURE" "PRESCRIBING_INFORMATION" "PRESCRIBING_INFORMATION_BOX_WARNING" "IMPORTANT_SAFETY_INFO" "MED_GUIDE" "PATIENT_INFORMATION" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/disclosureUrl> ;
    sh:name "disclosure url" ;
    sh:description "URL for a page that provides disclosures about a pharmaceutical product, such as potential side effects. Make sure the URL takes the user directly to the disclosure content and the referenced site is secure." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/gridClickType> ;
    sh:name "grid click type" ;
    sh:description "Where a user is taken after clicking on an ad in grid. </p><strong>Note:</strong>  This parameter is read-only and is set to DIRECT_TO_DESTINATION by default for direct links supported ads.  grid_click_type values provided will be ignored." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CLOSEUP" "DIRECT_TO_DESTINATION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/iosDeepLink> ;
    sh:name "ios deep link" ;
    sh:description "Deep link URL for iOS devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/isPinDeleted> ;
    sh:name "is pin deleted" ;
    sh:description "Is original pin deleted?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/isRemovable> ;
    sh:name "is removable" ;
    sh:description "Is pin repinnable?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/leadFormId> ;
    sh:name "lead form id" ;
    sh:description "Lead form ID for lead ad generation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^(AG)?\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/name> ;
    sh:name "name" ;
    sh:description "Name of the ad - 255 chars max." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/quizPinData> ;
    sh:name "quiz pin data" ;
    sh:description "Before creating a quiz ad, you must create an organic Pin using POST/Create Pin for each result in the quiz. Quiz ads cannot be saved by a Pinner. Quiz ad results can be saved." ;
    sh:node pinterest:QuizPinDataShape ;
    sh:class pinterest:QuizPinData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/status> ;
    sh:name "status" ;
    sh:description "Entity status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/viewTrackingUrl> ;
    sh:name "view tracking url" ;
    sh:description "Tracking URL for ad impressions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdCreateRequest/pinId> ;
    sh:name "pin id" ;
    sh:description "Pin ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Ad Preview URLResponse
pinterest:AdPreviewURLShape a sh:NodeShape ;
  sh:targetClass pinterest:AdPreviewURL ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdPreviewURLResponse/url> ;
    sh:name "url" ;
    sh:description "'Preview URL, expires in 7 days. Can be used in an iframe.\nFor example: https://ads.pinterest.com/ad-preview/74667c814dd2b19/\nThe preview object ID/key is the last param - 74667c814dd2b19'" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Update Request
pinterest:AdUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:AdUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "ID of the ad group that contains the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^(AG)?\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/androidDeepLink> ;
    sh:name "android deep link" ;
    sh:description "Deep link URL for Android devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/carouselAndroidDeepLinks> ;
    sh:name "carousel android deep links" ;
    sh:description "Comma-separated deep links for the carousel pin on Android." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/carouselDestinationUrls> ;
    sh:name "carousel destination urls" ;
    sh:description "Comma-separated destination URLs for the carousel pin to promote." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/carouselIosDeepLinks> ;
    sh:name "carousel ios deep links" ;
    sh:description "Comma-separated deep links for the carousel pin on iOS." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/clickTrackingUrl> ;
    sh:name "click tracking url" ;
    sh:description "Tracking url for the ad clicks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/creativeType> ;
    sh:name "creative type" ;
    sh:description "Ad creative type enum.\n**Note:** SHOP_THE_PIN has been deprecated. Please use COLLECTION instead." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "REGULAR" "VIDEO" "SHOPPING" "CAROUSEL" "MAX_VIDEO" "SHOP_THE_PIN" "COLLECTION" "IDEA" "SHOWCASE" "QUIZ" "COLLAGE" "MAX_WIDTH_REGULAR_COLLECTION" "MAX_WIDTH_VIDEO_COLLECTION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/customizableCtaType> ;
    sh:name "customizable cta type" ;
    sh:description "Select a call to action (CTA) to display below your ad. Available only for ads with direct links enabled. CTA options for consideration and conversion campaigns are LEARN_MORE, SHOP_NOW, BOOK_NOW, SIGN_UP, VISIT_SITE, BUY_NOW, GET_OFFER, ORDER_NOW, ADD_TO_CART (for conversion campaigns with add to cart conversion events only)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "GET_OFFER" "LEARN_MORE" "ORDER_NOW" "SHOP_NOW" "SIGN_UP" "SUBSCRIBE" "BUY_NOW" "CONTACT_US" "GET_QUOTE" "VISIT_SITE" "APPLY_NOW" "BOOK_NOW" "REQUEST_DEMO" "REGISTER_NOW" "FIND_A_DEALER" "ADD_TO_CART" "WATCH_NOW" "READ_MORE" "BUY_TICKETS" "DONATE_NOW" "DOWNLOAD" "EXPLORE_MORE" "FIND_A_LOCATION" "GET_DEAL" "GET_RECIPE" "GET_SHOWTIMES" "ON_SALE" "PLAY_GAME" "TRY_IT" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/destinationUrl> ;
    sh:name "destination url" ;
    sh:description "Destination URL." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/disclosureType> ;
    sh:name "disclosure type" ;
    sh:description "Type of information in the page referenced by `disclosure_url`, provided either by the Food and Drug Administration (FDA) or the manufacturer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NO_DISCLOSURE" "PRESCRIBING_INFORMATION" "PRESCRIBING_INFORMATION_BOX_WARNING" "IMPORTANT_SAFETY_INFO" "MED_GUIDE" "PATIENT_INFORMATION" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/disclosureUrl> ;
    sh:name "disclosure url" ;
    sh:description "URL for a page that provides disclosures about a pharmaceutical product, such as potential side effects. Make sure the URL takes the user directly to the disclosure content and the referenced site is secure." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/gridClickType> ;
    sh:name "grid click type" ;
    sh:description "Where a user is taken after clicking on an ad in grid. </p><strong>Note:</strong>  This parameter is read-only and is set to DIRECT_TO_DESTINATION by default for direct links supported ads.  grid_click_type values provided will be ignored." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CLOSEUP" "DIRECT_TO_DESTINATION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/iosDeepLink> ;
    sh:name "ios deep link" ;
    sh:description "Deep link URL for iOS devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/isPinDeleted> ;
    sh:name "is pin deleted" ;
    sh:description "Is original pin deleted?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/isRemovable> ;
    sh:name "is removable" ;
    sh:description "Is pin repinnable?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/leadFormId> ;
    sh:name "lead form id" ;
    sh:description "Lead form ID for lead ad generation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^(AG)?\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/name> ;
    sh:name "name" ;
    sh:description "Name of the ad - 255 chars max." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/quizPinData> ;
    sh:name "quiz pin data" ;
    sh:description "Before creating a quiz ad, you must create an organic Pin using POST/Create Pin for each result in the quiz. Quiz ads cannot be saved by a Pinner. Quiz ad results can be saved." ;
    sh:node pinterest:QuizPinDataShape ;
    sh:class pinterest:QuizPinData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/status> ;
    sh:name "status" ;
    sh:description "Entity status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/viewTrackingUrl> ;
    sh:name "view tracking url" ;
    sh:description "Tracking URL for ad impressions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/id> ;
    sh:name "id" ;
    sh:description "The ID of this ad." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdUpdateRequest/pinId> ;
    sh:name "pin id" ;
    sh:description "Pin ID. This field may only be updated for draft ads." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Advanced Auction Items Submit Record
pinterest:AdvancedAuctionItemsSubmitRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:AdvancedAuctionItemsSubmitRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitRecord/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "UPSERT" "DELETE" ) ;
  ] .

# Shape for Advanced Auction Key
pinterest:AdvancedAuctionKeyShape a sh:NodeShape ;
  sh:targetClass pinterest:AdvancedAuctionKey ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionKey/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionKey/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog retail item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionKey/language> ;
    sh:name "language" ;
    sh:description "Language code, which is among the official ISO 639-1 language list." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] .

# Shape for Advanced Auction Items Get Record
pinterest:AdvancedAuctionItemsGetRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:AdvancedAuctionItemsGetRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsGetRecord/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsGetRecord/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog retail item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsGetRecord/language> ;
    sh:name "language" ;
    sh:description "Language code, which is among the official ISO 639-1 language list." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] .

# Shape for Advanced Auction Items Get Request
pinterest:AdvancedAuctionItemsGetRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:AdvancedAuctionItemsGetRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsGetRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the retail item" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsGetRequest/items> ;
    sh:name "items" ;
    sh:description "A list of retail catalog items to fetch bid options for" ;
    sh:node pinterest:AdvancedAuctionItemsGetRecordShape ;
    sh:class pinterest:AdvancedAuctionItemsGetRecord ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 10000 ;
  ] .

# Shape for Advanced Auction Items
pinterest:AdvancedAuctionItemsShape a sh:NodeShape ;
  sh:targetClass pinterest:AdvancedAuctionItems ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItems/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Response object of item bid options" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItems/items> ;
    sh:name "items" ;
    sh:description "Array with item bid options" ;
    sh:node pinterest:AdvancedAuctionItemShape ;
    sh:class pinterest:AdvancedAuctionItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Advanced Auction Item
pinterest:AdvancedAuctionItemShape a sh:NodeShape ;
  sh:targetClass pinterest:AdvancedAuctionItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItem/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItem/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog retail item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItem/language> ;
    sh:name "language" ;
    sh:description "Language code, which is among the official ISO 639-1 language list." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItem/bidOptions> ;
    sh:name "bid options" ;
    sh:description "Object describing a retail catalog item's bid options (bid price and bid multipliers)." ;
    sh:node pinterest:AdvancedAuctionBidOptionsShape ;
    sh:class pinterest:AdvancedAuctionBidOptions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Advanced Auction Bid Options
pinterest:AdvancedAuctionBidOptionsShape a sh:NodeShape ;
  sh:targetClass pinterest:AdvancedAuctionBidOptions ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionBidOptions/appTypeMultipliers> ;
    sh:name "app type multipliers" ;
    sh:description "This represents a mapping from app type targeting criteria to a bid price adjustment.\n\nMultiplier values must be between 0 and 10. A value of 10 represents a 900% increase in bid price (from $1 to $10 for example). A value of 0 will stop distribution for this item on the specified app type in `MAX_BID` ad groups in `CATALOG_SALES` campaigns. All app type multipliers must be set at the same time. If a multiplier is not provided it is assumed to be 1 (no bid adjustment)." ;
    sh:node pinterest:AppTypeMultipliersShape ;
    sh:class pinterest:AppTypeMultipliers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionBidOptions/bidInMicroCurrency> ;
    sh:name "bid in micro currency" ;
    sh:description "Bid price in micro currency. A value of 0 will stop distribution for this item in `MAX_BID` ad groups in `CATALOG_SALES` campaigns. A value of `null` will fallback to the ad group's `bid_in_micro_currency`." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionBidOptions/placementMultipliers> ;
    sh:name "placement multipliers" ;
    sh:description "This represents a mapping from placement to a bid price adjustment.\n\nMultiplier values must be between 0 and 10. A value of 10 represents a 900% increase in bid price (from $1 to $10 for example). A value of 0 will stop distribution for this item on the specified placement in `MAX_BID` ad groups in `CATALOG_SALES` campaigns. All placement multipliers must be set at the same time. If a multiplier is not provided it is assumed to be 1 (no bid adjustment)." ;
    sh:node pinterest:PlacementMultipliersShape ;
    sh:class pinterest:PlacementMultipliers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Advanced Auction Items Submit Request
pinterest:AdvancedAuctionItemsSubmitRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:AdvancedAuctionItemsSubmitRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to all items" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitRequest/items> ;
    sh:name "items" ;
    sh:description "Array of item bid option operations" ;
    sh:or (
      [ sh:node pinterest:AdvancedAuctionItemsSubmitDeleteRecordShape ; sh:class pinterest:AdvancedAuctionItemsSubmitDeleteRecord ]
      [ sh:node pinterest:AdvancedAuctionItemsSubmitRecordShape ; sh:class pinterest:AdvancedAuctionItemsSubmitRecord ]
      [ sh:node pinterest:AdvancedAuctionItemsSubmitUpsertRecordShape ; sh:class pinterest:AdvancedAuctionItemsSubmitUpsertRecord ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 10000 ;
  ] .

# Shape for Advanced Auction Items Submit Upsert Record
pinterest:AdvancedAuctionItemsSubmitUpsertRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:AdvancedAuctionItemsSubmitUpsertRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitUpsertRecord/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitUpsertRecord/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog retail item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitUpsertRecord/language> ;
    sh:name "language" ;
    sh:description "Language code, which is among the official ISO 639-1 language list." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitUpsertRecord/bidOptions> ;
    sh:name "bid options" ;
    sh:description "Object describing a retail catalog item's bid options (bid price and bid multipliers)." ;
    sh:node pinterest:AdvancedAuctionBidOptionsShape ;
    sh:class pinterest:AdvancedAuctionBidOptions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitUpsertRecord/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "UPSERT" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitUpsertRecord/errors> ;
    sh:name "errors" ;
    sh:description "Array with validation errors for the supplied item bid option modification operation.\nA non empty errors list means this single item operation was not applied." ;
    sh:node pinterest:AdvancedAuctionOperationErrorShape ;
    sh:class pinterest:AdvancedAuctionOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitUpsertRecord/updateMask> ;
    sh:name "update mask" ;
    sh:description "The list of item bid option fields to be set or updated. Fields specified in the updated mask without a value specified in the `bid_options` object in the body will be set to `null`. If an item bid option record is being created, fields not specified in the update mask will be initialized to `null`." ;
    sh:datatype xsd:string ;
    sh:in ( "BID" "APP_TYPE_BID_MULTIPLIER_SET" "PLACEMENT_BID_MULTIPLIER_SET" ) ;
  ] .

# Shape for Advanced Auction Operation Error
pinterest:AdvancedAuctionOperationErrorShape a sh:NodeShape ;
  sh:targetClass pinterest:AdvancedAuctionOperationError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionOperationError/code> ;
    sh:name "code" ;
    sh:description "The error code for the item bid option operation validation error" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionOperationError/message> ;
    sh:name "message" ;
    sh:description "Message describing the item bid option operation validation error" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Advanced Auction Items Submit Delete Record
pinterest:AdvancedAuctionItemsSubmitDeleteRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:AdvancedAuctionItemsSubmitDeleteRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitDeleteRecord/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitDeleteRecord/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog retail item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitDeleteRecord/language> ;
    sh:name "language" ;
    sh:description "Language code, which is among the official ISO 639-1 language list." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitDeleteRecord/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "DELETE" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionItemsSubmitDeleteRecord/errors> ;
    sh:name "errors" ;
    sh:description "Array with validation errors for the supplied item bid option modification operation.\nA non empty errors list means this single item operation was not applied." ;
    sh:node pinterest:AdvancedAuctionOperationErrorShape ;
    sh:class pinterest:AdvancedAuctionOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Advanced Auction Processed Items
pinterest:AdvancedAuctionProcessedItemsShape a sh:NodeShape ;
  sh:targetClass pinterest:AdvancedAuctionProcessedItems ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionProcessedItems/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to all items" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdvancedAuctionProcessedItems/items> ;
    sh:name "items" ;
    sh:description "Array of advanced auction processed items" ;
    sh:or (
      [ sh:node pinterest:AdvancedAuctionItemsSubmitDeleteRecordShape ; sh:class pinterest:AdvancedAuctionItemsSubmitDeleteRecord ]
      [ sh:node pinterest:AdvancedAuctionItemsSubmitRecordShape ; sh:class pinterest:AdvancedAuctionItemsSubmitRecord ]
      [ sh:node pinterest:AdvancedAuctionItemsSubmitUpsertRecordShape ; sh:class pinterest:AdvancedAuctionItemsSubmitUpsertRecord ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Audience Category
pinterest:AudienceCategoryShape a sh:NodeShape ;
  sh:targetClass pinterest:AudienceCategory ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceCategory/id> ;
    sh:name "id" ;
    sh:description "Interest ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceCategory/index> ;
    sh:name "index" ;
    sh:description "Interest affinity index." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceCategory/key> ;
    sh:name "key" ;
    sh:description "Interest unique key (same as ID)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceCategory/name> ;
    sh:name "name" ;
    sh:description "Interest name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceCategory/ratio> ;
    sh:name "ratio" ;
    sh:description "Interest's percent of category's total audience." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceCategory/subcategories> ;
    sh:name "subcategories" ;
    sh:description "Subcategory interest distribution" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceCategory/subcategories/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceCategory/subcategories/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Audience Definition
pinterest:AudienceDefinitionShape a sh:NodeShape ;
  sh:targetClass pinterest:AudienceDefinition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceDefinition/date> ;
    sh:name "date" ;
    sh:description "Generation date" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceDefinition/scope> ;
    sh:name "scope" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceDefinition/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Audience Definition Response
pinterest:AudienceDefinitionResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:AudienceDefinitionResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceDefinitionResponse/items> ;
    sh:name "items" ;
    sh:node pinterest:AudienceDefinitionShape ;
    sh:class pinterest:AudienceDefinition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Audience Demographic Value
pinterest:AudienceDemographicValueShape a sh:NodeShape ;
  sh:targetClass pinterest:AudienceDemographicValue ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceDemographicValue/key> ;
    sh:name "key" ;
    sh:description "Unique key for demographic item" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceDemographicValue/name> ;
    sh:name "name" ;
    sh:description "Display name for demographic" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceDemographicValue/ratio> ;
    sh:name "ratio" ;
    sh:description "Value of demographic item as a percent of total audience" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Audience Demographics
pinterest:AudienceDemographicsShape a sh:NodeShape ;
  sh:targetClass pinterest:AudienceDemographics ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceDemographics/ages> ;
    sh:name "ages" ;
    sh:description "Ages distribution." ;
    sh:node pinterest:AudienceDemographicValueShape ;
    sh:class pinterest:AudienceDemographicValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceDemographics/countries> ;
    sh:name "countries" ;
    sh:description "Country area distribution." ;
    sh:node pinterest:AudienceDemographicValueShape ;
    sh:class pinterest:AudienceDemographicValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceDemographics/devices> ;
    sh:name "devices" ;
    sh:description "Device usage distribution." ;
    sh:node pinterest:AudienceDemographicValueShape ;
    sh:class pinterest:AudienceDemographicValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceDemographics/genders> ;
    sh:name "genders" ;
    sh:description "Gender distribution." ;
    sh:node pinterest:AudienceDemographicValueShape ;
    sh:class pinterest:AudienceDemographicValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceDemographics/metros> ;
    sh:name "metros" ;
    sh:description "Geographic metro area distribution." ;
    sh:node pinterest:AudienceDemographicValueShape ;
    sh:class pinterest:AudienceDemographicValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Audience Insights Response
pinterest:AudienceInsightsResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:AudienceInsightsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceInsightsResponse/categories> ;
    sh:name "categories" ;
    sh:description "Category interest distribution" ;
    sh:node pinterest:AudienceCategoryShape ;
    sh:class pinterest:AudienceCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceInsightsResponse/date> ;
    sh:name "date" ;
    sh:description "Generation date" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d{4}-\\d{2}-\\d{2}$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceInsightsResponse/demographics> ;
    sh:name "demographics" ;
    sh:description "Audience demographics" ;
    sh:node pinterest:AudienceDemographicsShape ;
    sh:class pinterest:AudienceDemographics ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceInsightsResponse/size> ;
    sh:name "size" ;
    sh:description "Population count." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceInsightsResponse/sizeIsUpperBound> ;
    sh:name "size is upper bound" ;
    sh:description "Indicates whether the audience size has been rounded up to the next highest upper boundary." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceInsightsResponse/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "YOUR_TOTAL_AUDIENCE" "YOUR_ENGAGED_AUDIENCE" "PINTEREST_TOTAL_AUDIENCE" ) ;
  ] .

# Shape for Audience
pinterest:AudienceShape a sh:NodeShape ;
  sh:targetClass pinterest:Audience ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Audience/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Ad account ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Audience/audienceType> ;
    sh:name "audience type" ;
    sh:description "<a href=\"/docs/reference/glossary/#Audience Types\">Audience types</a>: ACTALIKE, ENGAGEMENT, CUSTOMER_LIST and VISITOR" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Audience/createdByCompanyName> ;
    sh:name "created by company name" ;
    sh:description "The company that created this audience." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Audience/createdTimestamp> ;
    sh:name "created timestamp" ;
    sh:description "Creation time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Audience/description> ;
    sh:name "description" ;
    sh:description "Audience description." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Audience/id> ;
    sh:name "id" ;
    sh:description "Audience ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Audience/name> ;
    sh:name "name" ;
    sh:description "Audience name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Audience/rule> ;
    sh:name "rule" ;
    sh:description "JSON object defining targeted audience users. Example rule formats per audience type:<br>CUSTOMER_LIST: { \"customer_list_id\": \"&lt;customer list ID&gt;\"}<br>ACTALIKE: { \"seed_id\": [\"&lt;audience ID&gt;\"], \"country\": \"US\", \"percentage\": \"10\" }<br>(Valid countries include: \"US\", \"CA\", and \"GB\". Percentage should be 1-10.<br>The targeted audience should be this % size across Pinterest.)<br>VISITOR: { \"visitor_source_id\": [\"&lt;conversion tag ID&gt;\"], \"retention_days\": \"180\", \"event_source\": {\"=\": [\"web\", \"mobile\"]}, \"ingestion_source\": {\"=\": [\"tag\"]}}<br>(Retention days should be 1-540. Retention applies to specific customers.)<br>ENGAGEMENT: {\"engagement_domain\": [\"www.example.com\"], \"engager_type\": 1}<br>Learn more about <a href=\"/docs/work-with-targets-and-audiences/create-audiences/#engagement-audience\" target=\"_blank\">engagement audiences</a>." ;
    sh:node pinterest:AudienceRuleShape ;
    sh:class pinterest:AudienceRule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Audience/size> ;
    sh:name "size" ;
    sh:description "Audience size." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Audience/status> ;
    sh:name "status" ;
    sh:description "Audience status. READY, INITIALIZING, TOO_SMALL - Each audience list needs to have at least 100 people with Pinterest accounts before you can start using it." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Audience/type> ;
    sh:name "type" ;
    sh:description "Always \"audience\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Audience/updatedTimestamp> ;
    sh:name "updated timestamp" ;
    sh:description "Last update time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Audience Rule
pinterest:AudienceRuleShape a sh:NodeShape ;
  sh:targetClass pinterest:AudienceRule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Ad account ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/adId> ;
    sh:name "ad id" ;
    sh:description "Ad ID for engagement audience filter." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/campaignId> ;
    sh:name "campaign id" ;
    sh:description "Campaign ID for engagement audience filter." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/country> ;
    sh:name "country" ;
    sh:description "Valid countries include: \"US\", \"CA\", and \"GB\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/customerListId> ;
    sh:name "customer list id" ;
    sh:description "Customer list ID. For CUSTOMER_LIST `audience_type`." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/engagementDomain> ;
    sh:name "engagement domain" ;
    sh:description "The audience account's verified domain. **Required** for ENGAGEMENT `audience_type`." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/engagementType> ;
    sh:name "engagement type" ;
    sh:description "Engagement type enum. Optional for ENGAGEMENT `audience_type`. Supported values are `click`, `save`, `closeup`, `comment` and `like`. All engagements are included if this field is not set. " ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/engagerType> ;
    sh:name "engager type" ;
    sh:description "Optional for ENGAGEMENT. Engager type value should be 1-2." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/event> ;
    sh:name "event" ;
    sh:description "A Pinterest tag event. Optional for VISITOR `audience_type`. Possible values are `pagevisit`, `signup`, `checkout`, `viewcategory`, `search`, `addtocart`, `watchvideo`, `lead`, and `custom`. This field also accepts a partner-defined Pinterest tag event." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/eventData> ;
    sh:name "event data" ;
    sh:description "    Optional for VISITOR `audience_type`.\n    With the Pinterest tag, you can use event data to capture event details from your website.\n    This object lists all the available predefined event data fields in the Pinterest tag.\n    You can include these event data fields as part of a VISITOR audience’s `rule`; however, you **must** specify an `event` for the `event_data` fields to be evaluated.\n    Besides what’s listed, you can also create your own set of `event_data` fields and define their usages or purposes according to your website needs.\n    However, the benefit of using the predefined event data fields is that we can provide various metrics based on those fields' data.\n    Examples per `event` type:\n    `pagevisit`\n    \"event_data\": { \"page_name\": \"My online store 123 | view items | shoe\" }\n    `signup`\n    \"event_data\": { \"lead_type\": \"New release promotion\" }\n    `checkout`\n    \"event_data\": { \"value\": 116, \"order_quantity\": 2, \"currency\": \"USD\", \"line_items\": [ { \"product_name\": \"Pillows (Set of 2)\", \"product_id\": \"11\", \"product_price\": 48, \"product_quantity\": 1 }, { \"product_name\": \"Pillows, Large (Set of 2)\", \"product_id\": \"15\", \"product_price\": 68, \"product_quantity\": 1 } ] }\n    `addtocart`\n    \"event_data\": { \"value\": 499, \"order_quantity\": 1, \"currency\": \"USD\", \"line_items\": [ { \"product_name\": \"Red leather boots\", \"product_id\": \"3486\", \"product_category\": \"shoe\", \"product_variant_id\": \"JB11103000\", \"product_price\": 499, \"product_quantity\": \"1\", \"product_brand\": \"My brand\" }]}\n    `watchvideo`\n    \"event_data\": { \"video_title\": \"My Product Video 01\" }\n    `lead`\n    \"event_data\": { \"lead_type\": \"Newsletter\" }" ;
    sh:node pinterest:EventDataShape ;
    sh:class pinterest:EventData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/eventSource> ;
    sh:name "event source" ;
    sh:description "Optional for VISITOR. You can use it as a {'=': [value]}. Supported values are: web, mobile, offline" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/eventSource/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/eventSource/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/ingestionSource> ;
    sh:name "ingestion source" ;
    sh:description "Optional for VISITOR. You can use it as a {'=': [value]}. Supported values are: tag, mmp, file_upload, conversions_api" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/ingestionSource/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/ingestionSource/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/objectiveType> ;
    sh:name "objective type" ;
    sh:description "Objective for engagement audience filter." ;
    sh:datatype xsd:string ;
    sh:in ( "AWARENESS" "CONSIDERATION" "WEB_CONVERSION" "CATALOG_SALES" "VIDEO_COMPLETION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/percentage> ;
    sh:name "percentage" ;
    sh:description "Percentage should be 1-10. The targeted audience should be this % size across Pinterest." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/pinId> ;
    sh:name "pin id" ;
    sh:description "IDs of engaged organic pins. Optional for ENGAGEMENT `audience_type`. For example, \"pin_id:\": [\"34567\"]" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/prefill> ;
    sh:name "prefill" ;
    sh:description "Optional for VISITOR `audience_type`. If `true`, the specified rule on existing engagement data is applied to pre-populate the audience. If `false`, the audience is empty at creation time. The default is `true`." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/retentionDays> ;
    sh:name "retention days" ;
    sh:description "Number of days a Pinterest user remains in the audience. Optional for ENGAGEMENT and VISITOR `audience_type`. Accepted range is 1-540. Defaults to 180 if not specified." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/seedId> ;
    sh:name "seed id" ;
    sh:description "Audience ID(s). For ACTALIKE `audience_type`. " ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/url> ;
    sh:name "url" ;
    sh:description "Optional for ENGAGEMENT or VISITOR `audience_type`. For ENGAGEMENT, it is the engaged pin's URL. For VISITOR, you can use it as a string or a {operator: value} object for filtering visitors based on conversion tag event URLs. Supported operators are [ =, !=, contains, not_contains].<br>Example 1:  \"url\": \"http://www.myonlinestore123.com/view_item/shoe\"<br>Example 2: \"url\": {\"contains\": \"/view_item/shoe\"}" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/visitorSourceId> ;
    sh:name "visitor source id" ;
    sh:description "The conversion tag ID, or the Pinterest tag ID, that you use on your website. For VISITOR `audience_type`." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Event Data
pinterest:EventDataShape a sh:NodeShape ;
  sh:targetClass pinterest:EventData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventData/currency> ;
    sh:name "currency" ;
    sh:description "Currency. For example, 'USD'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNK" "USD" "GBP" "CAD" "EUR" "AUD" "NZD" "SEK" "ILS" "CHF" "HKD" "JPY" "SGD" "KRW" "NOK" "DKK" "PLN" "RON" "HUF" "CZK" "BRL" "MXN" "ARS" "CLP" "COP" "INR" "TRY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventData/leadType> ;
    sh:name "lead type" ;
    sh:description "Promotion code. For example, 'Newsletter'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventData/lineItems> ;
    sh:name "line items" ;
    sh:node pinterest:LineItemShape ;
    sh:class pinterest:LineItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventData/orderId> ;
    sh:name "order id" ;
    sh:description "Order ID. For example, 'X-151481'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventData/orderQuantity> ;
    sh:name "order quantity" ;
    sh:description "Order quantity. For example, 1." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventData/pageName> ;
    sh:name "page name" ;
    sh:description "Page name. For example, 'Our Favorite Pins on Pinterest'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventData/promoCode> ;
    sh:name "promo code" ;
    sh:description "Promotion code. For example, 'WINTER10'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventData/property> ;
    sh:name "property" ;
    sh:description "Property. For example, 'Athleta'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventData/searchQuery> ;
    sh:name "search query" ;
    sh:description "Search query string. For example, 'boots'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventData/value> ;
    sh:name "value" ;
    sh:description "Product value. For example, '199.98'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventData/videoTitle> ;
    sh:name "video title" ;
    sh:description "Video title. For example, 'How to style your Parker Boots'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Line Item
pinterest:LineItemShape a sh:NodeShape ;
  sh:targetClass pinterest:LineItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LineItem/productBrand> ;
    sh:name "product brand" ;
    sh:description "Product brand. For example, 'Parker'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LineItem/productCategory> ;
    sh:name "product category" ;
    sh:description "Product category. For example, 'Shoes'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LineItem/productId> ;
    sh:name "product id" ;
    sh:description "Product ID. For example, 1414." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LineItem/productName> ;
    sh:name "product name" ;
    sh:description "Product name. For example, 'Parker Boots'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LineItem/productPrice> ;
    sh:name "product price" ;
    sh:description "Product price. For example, '99.99'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LineItem/productQuantity> ;
    sh:name "product quantity" ;
    sh:description "Product quantity. For example, 2." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LineItem/productVariant> ;
    sh:name "product variant" ;
    sh:description "Product variant. For example, 'Red'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LineItem/productVariantId> ;
    sh:name "product variant id" ;
    sh:description "Product variant ID. For example, '1414-34832'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Shared Audience Account
pinterest:SharedAudienceAccountShape a sh:NodeShape ;
  sh:targetClass pinterest:SharedAudienceAccount ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SharedAudienceAccount/accountId> ;
    sh:name "account id" ;
    sh:description "Account ID (ad account or business ID)." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SharedAudienceAccount/accountName> ;
    sh:name "account name" ;
    sh:description "Account name." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SharedAudienceAccount/accountType> ;
    sh:name "account type" ;
    sh:description "account type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD_ACCOUNT" "BUSINESS_ACCOUNT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SharedAudienceAccount/sharedOnTimestamp> ;
    sh:name "shared on timestamp" ;
    sh:description "Epoch timestamp in seconds for the shared audience event" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Shared Audience
pinterest:SharedAudienceShape a sh:NodeShape ;
  sh:targetClass pinterest:SharedAudience ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SharedAudience/audienceId> ;
    sh:name "audience id" ;
    sh:description "Unique identifier of an audience" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SharedAudience/operationType> ;
    sh:name "operation type" ;
    sh:description "Operation type to share a specific audience or revoke access to a previously shared audience" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "SHARE" "REVOKE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SharedAudience/recipientAccountIds> ;
    sh:name "recipient account ids" ;
    sh:description "List of ad account IDs to share with or revoke from." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Business Shared Audience
pinterest:BusinessSharedAudienceShape a sh:NodeShape ;
  sh:targetClass pinterest:BusinessSharedAudience ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessSharedAudience/audienceId> ;
    sh:name "audience id" ;
    sh:description "Unique identifier of an audience" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessSharedAudience/operationType> ;
    sh:name "operation type" ;
    sh:description "Operation type to share a specific audience or revoke access to a previously shared audience" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "SHARE" "REVOKE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessSharedAudience/recipientBusinessIds> ;
    sh:name "recipient business ids" ;
    sh:description "List of business IDs to share with or revoke from." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Shared Audience Response
pinterest:SharedAudienceResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:SharedAudienceResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SharedAudienceResponse/audienceId> ;
    sh:name "audience id" ;
    sh:description "Audience ID that was shared" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SharedAudienceResponse/permissions> ;
    sh:name "permissions" ;
    sh:datatype xsd:string ;
    sh:in ( "UNKNOWN" "OWNER" "ADMIN" "ANALYST" "SOS_READER" "FINANCE_MANAGER" "FINANCE_EDIT" "FINANCE_VIEW" "AUDIENCE_MANAGER" "CAMPAIGN_MANAGER" "CATALOGS_MANAGER" "CATALOGS_VIEWER" "RESTRICTED_OWNER" "PROFILE_MANAGER" "PROFILE_PUBLISHER" "RESOURCE_PINNER_LIST_OWNER" "RESOURCE_PINNER_LIST_READER" "BIZ_PINNER_LIST_SHARER" "RESOURCE_CONVERSION_TAGS_READER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SharedAudienceResponse/recipientAccountIds> ;
    sh:name "recipient account ids" ;
    sh:description "Account IDs that received the audience" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Business Shared Audience Response
pinterest:BusinessSharedAudienceResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:BusinessSharedAudienceResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessSharedAudienceResponse/audienceId> ;
    sh:name "audience id" ;
    sh:description "Audience ID that was shared" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessSharedAudienceResponse/permissions> ;
    sh:name "permissions" ;
    sh:datatype xsd:string ;
    sh:in ( "UNKNOWN" "OWNER" "ADMIN" "ANALYST" "SOS_READER" "FINANCE_MANAGER" "FINANCE_EDIT" "FINANCE_VIEW" "AUDIENCE_MANAGER" "CAMPAIGN_MANAGER" "CATALOGS_MANAGER" "CATALOGS_VIEWER" "RESTRICTED_OWNER" "PROFILE_MANAGER" "PROFILE_PUBLISHER" "RESOURCE_PINNER_LIST_OWNER" "RESOURCE_PINNER_LIST_READER" "BIZ_PINNER_LIST_SHARER" "RESOURCE_CONVERSION_TAGS_READER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessSharedAudienceResponse/recipientBusinessIds> ;
    sh:name "recipient business ids" ;
    sh:description "Business IDs that received the audience" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Audience Create Request
pinterest:AudienceCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:AudienceCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceCreateRequest/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Ad account ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceCreateRequest/name> ;
    sh:name "name" ;
    sh:description "Audience name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceCreateRequest/rule> ;
    sh:name "rule" ;
    sh:description "JSON object defining targeted audience users. Example rule formats per audience type:<br>CUSTOMER_LIST: { \"customer_list_id\": \"&lt;customer list ID&gt;\"}<br>ACTALIKE: { \"seed_id\": [\"&lt;audience ID&gt;\"], \"country\": \"US\", \"percentage\": \"10\" }<br>(Valid countries include: \"US\", \"CA\", and \"GB\". Percentage should be 1-10.<br>The targeted audience should be this % size across Pinterest.)<br>VISITOR: { \"visitor_source_id\": [\"&lt;conversion tag ID&gt;\"], \"retention_days\": \"180\", \"event_source\": {\"=\": [\"web\", \"mobile\"]}, \"ingestion_source\": {\"=\": [\"tag\"]}}<br>(Retention days should be 1-540. Retention applies to specific customers.)<br>ENGAGEMENT: {\"engagement_domain\": [\"www.example.com\"], \"engager_type\": 1}<br>Learn more about <a href=\"/docs/work-with-targets-and-audiences/create-audiences/#engagement-audience\" target=\"_blank\">engagement audiences</a>." ;
    sh:node pinterest:AudienceRuleShape ;
    sh:class pinterest:AudienceRule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceCreateRequest/audienceType> ;
    sh:name "audience type" ;
    sh:description "<a href=\"/docs/reference/glossary/#Audience Types\">Audience types</a>: ACTALIKE, ENGAGEMENT, CUSTOMER_LIST and VISITOR. Values are case-sensitive." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "CUSTOMER_LIST" "VISITOR" "ENGAGEMENT" "ACTALIKE" "PERSONA" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceCreateRequest/description> ;
    sh:name "description" ;
    sh:description "Audience description." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Audience Update Request
pinterest:AudienceUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:AudienceUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceUpdateRequest/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Ad account ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceUpdateRequest/name> ;
    sh:name "name" ;
    sh:description "Audience name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceUpdateRequest/rule> ;
    sh:name "rule" ;
    sh:description "JSON object defining targeted audience users. Example rule formats per audience type:<br>CUSTOMER_LIST: { \"customer_list_id\": \"&lt;customer list ID&gt;\"}<br>ACTALIKE: { \"seed_id\": [\"&lt;audience ID&gt;\"], \"country\": \"US\", \"percentage\": \"10\" }<br>(Valid countries include: \"US\", \"CA\", and \"GB\". Percentage should be 1-10.<br>The targeted audience should be this % size across Pinterest.)<br>VISITOR: { \"visitor_source_id\": [\"&lt;conversion tag ID&gt;\"], \"retention_days\": \"180\", \"event_source\": {\"=\": [\"web\", \"mobile\"]}, \"ingestion_source\": {\"=\": [\"tag\"]}}<br>(Retention days should be 1-540. Retention applies to specific customers.)<br>ENGAGEMENT: {\"engagement_domain\": [\"www.example.com\"], \"engager_type\": 1}<br>Learn more about <a href=\"/docs/work-with-targets-and-audiences/create-audiences/#engagement-audience\" target=\"_blank\">engagement audiences</a>." ;
    sh:node pinterest:AudienceRuleShape ;
    sh:class pinterest:AudienceRule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceUpdateRequest/description> ;
    sh:name "description" ;
    sh:description "Audience description." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceUpdateRequest/operationType> ;
    sh:name "operation type" ;
    sh:description "Audience operation type (update or remove)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UPDATE" "REMOVE" ) ;
  ] .

# Shape for Ads Credit Discounts Response
pinterest:AdsCreditDiscountShape a sh:NodeShape ;
  sh:targetClass pinterest:AdsCreditDiscount ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsCreditDiscountsResponse/active> ;
    sh:name "active" ;
    sh:description "True if the offer code is currently active." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsCreditDiscountsResponse/advertiserId> ;
    sh:name "advertiser id" ;
    sh:description "Advertiser ID the offer was applied to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsCreditDiscountsResponse/discountCurrency> ;
    sh:name "discount currency" ;
    sh:description "Currency value for the discount." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsCreditDiscountsResponse/discountInMicroCurrency> ;
    sh:name "discount in micro currency" ;
    sh:description "The discount applied in the offer’s currency value." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsCreditDiscountsResponse/discountType> ;
    sh:name "discount type" ;
    sh:description "The type of discount of this credit" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "COUPON" "CREDIT" "COUPON_APPLIED" "CREDIT_APPLIED" "MARKETING_OFFER_CREDIT" "MARKETING_OFFER_CREDIT_APPLIED" "GOODWILL_CREDIT" "GOODWILL_CREDIT_APPLIED" "INTERNAL_CREDIT" "INTERNAL_CREDIT_APPLIED" "PREPAID_CREDIT" "PREPAID_CREDIT_APPLIED" "SALES_INCENTIVE_CREDIT" "SALES_INCENTIVE_CREDIT_APPLIED" "CREDIT_EXPIRED" "FUTURE_CREDIT" "REFERRAL_CREDIT" "INVOICE_SALES_INCENTIVE_CREDIT" "INVOICE_SALES_INCENTIVE_CREDIT_APPLIED" "PREPAID_CREDIT_REFUND" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsCreditDiscountsResponse/remainingDiscountInMicroCurrency> ;
    sh:name "remaining discount in micro currency" ;
    sh:description "The credits left to spend." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsCreditDiscountsResponse/title> ;
    sh:name "title" ;
    sh:description "Human readable title of the offer code." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ads Credit Redeem Request
pinterest:AdsCreditRedeemRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:AdsCreditRedeemRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsCreditRedeemRequest/offerCodeHash> ;
    sh:name "offer code hash" ;
    sh:description "Takes in a SHA256 hash of the offerCode." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^[a-z0-9]*$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsCreditRedeemRequest/validateOnly> ;
    sh:name "validate only" ;
    sh:description "If true, only validate if we can redeem offer code. Otherwise it will actually apply the offer code to the account" ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Ads Credit Redeem Response
pinterest:AdsCreditRedeemResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:AdsCreditRedeemResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsCreditRedeemResponse/errorCode> ;
    sh:name "error code" ;
    sh:description "Error code type if error occurs" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsCreditRedeemResponse/errorMessage> ;
    sh:name "error message" ;
    sh:description "Reason for failure" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsCreditRedeemResponse/success> ;
    sh:name "success" ;
    sh:description "Returns true if the offer code was successfully applied(validateOnly=false) or can be applied(validateOnly=true)." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Billing Profiles Response
pinterest:BillingProfileShape a sh:NodeShape ;
  sh:targetClass pinterest:BillingProfile ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingProfilesResponse/advertiserId> ;
    sh:name "advertiser id" ;
    sh:description "Advertiser ID of the billing." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingProfilesResponse/billingType> ;
    sh:name "billing type" ;
    sh:description "Billing type of the advertiser" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CREDIT_CARD" "INVOICE" "INTERNAL" "RECURRING" "PREPAID" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingProfilesResponse/cardType> ;
    sh:name "card type" ;
    sh:description "Type of the card." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNKNOWN" "VISA" "MASTERCARD" "AMERICAN_EXPRESS" "DISCOVER" "ELO" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingProfilesResponse/id> ;
    sh:name "id" ;
    sh:description "Billing ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingProfilesResponse/paymentMethodBrand> ;
    sh:name "payment method brand" ;
    sh:description "Brand of the payment method." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNKNOWN" "VISA" "MASTERCARD" "AMERICAN_EXPRESS" "DISCOVER" "SOFORT" "DINERS_CLUB" "ELO" "CARTE_BANCAIRE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingProfilesResponse/status> ;
    sh:name "status" ;
    sh:description "Status of the billing." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNSPECIFIED" "VALID" "INVALID" "PENDING" "DELETED" "SECONDARY" "PENDING_SECONDARY" ) ;
  ] .

# Shape for Billing Invoice Response
pinterest:BillingInvoiceShape a sh:NodeShape ;
  sh:targetClass pinterest:BillingInvoice ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "The ID of the ad account this invoice belongs to" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/adAccountName> ;
    sh:name "ad account name" ;
    sh:description "The name of the ad account this invoice belongs to" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/amountBilledMicroCurrency> ;
    sh:name "amount billed micro currency" ;
    sh:description "The amount billed in this invoice. Denoted in micro currency" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/amountDiscountMicroCurrency> ;
    sh:name "amount discount micro currency" ;
    sh:description "The discount in this invoice. Denoted in micro currency" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/amountNetMicroCurrency> ;
    sh:name "amount net micro currency" ;
    sh:description "The net amount in this invoice. Denoted in micro currency" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/amountTaxMicroCurrency> ;
    sh:name "amount tax micro currency" ;
    sh:description "The tax in this invoice. Denoted in micro currency" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/billToCountry> ;
    sh:name "bill to country" ;
    sh:description "The country of the bill to address" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/billingPeriodEndDate> ;
    sh:name "billing period end date" ;
    sh:description "The end date of the billing period. Format: YYYY-MM-DD" ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/billingPeriodStartDate> ;
    sh:name "billing period start date" ;
    sh:description "The start date of the billing period. Format: YYYY-MM-DD" ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/currency> ;
    sh:name "currency" ;
    sh:description "Currency Codes from ISO 4217" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNK" "USD" "GBP" "CAD" "EUR" "AUD" "NZD" "SEK" "ILS" "CHF" "HKD" "JPY" "SGD" "KRW" "NOK" "DKK" "PLN" "RON" "HUF" "CZK" "BRL" "MXN" "ARS" "CLP" "COP" "INR" "TRY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/documentType> ;
    sh:name "document type" ;
    sh:description "The type of the document" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "INVOICE" "CREDIT_MEMO" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the billing invoice" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/invoiceDueDate> ;
    sh:name "invoice due date" ;
    sh:description "The date the invoice is due. Format: YYYY-MM-DD" ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/paymentTerms> ;
    sh:name "payment terms" ;
    sh:description "The payment terms of the invoice" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceResponse/status> ;
    sh:name "status" ;
    sh:description "The status of the invoice" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "OPEN" "CLOSED" ) ;
  ] .

# Shape for Billing Invoice Download Response
pinterest:BillingInvoiceDownloadShape a sh:NodeShape ;
  sh:targetClass pinterest:BillingInvoiceDownload ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceDownloadResponse/downloadUrl> ;
    sh:name "download url" ;
    sh:description "The download url for the billing invoice" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BillingInvoiceDownloadResponse/id> ;
    sh:name "id" ;
    sh:description "The billing invoice id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for SSIOAccount Address
pinterest:SsioAccountAddressShape a sh:NodeShape ;
  sh:targetClass pinterest:SsioAccountAddress ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountAddress/addressId> ;
    sh:name "address id" ;
    sh:description "Salesforce id for address" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountAddress/display> ;
    sh:name "display" ;
    sh:description "Address display" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountAddress/orderLegalEntity> ;
    sh:name "order legal entity" ;
    sh:description "Legal entity for this insertion order" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountAddress/purpose> ;
    sh:name "purpose" ;
    sh:description "Purpose for which the address is used, usually Billing or Businness" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for SSIOAccount Item
pinterest:SsioAccountItemShape a sh:NodeShape ;
  sh:targetClass pinterest:SsioAccountItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountItem/addresses> ;
    sh:name "addresses" ;
    sh:description "Address information that is associated with this account." ;
    sh:node pinterest:SsioAccountAddressShape ;
    sh:class pinterest:SsioAccountAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountItem/id> ;
    sh:name "id" ;
    sh:description "Salesforce id for billto_info" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountItem/ioTerms> ;
    sh:name "io terms" ;
    sh:description "Salesforce text for IO Terms and Conditions" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountItem/ioTermsId> ;
    sh:name "io terms id" ;
    sh:description "Salesforce id for IO Terms and Conditions" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountItem/ioType> ;
    sh:name "io type" ;
    sh:description "Insertion Order Type - Pinterest Paper or Agency Paper" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountItem/rowTerms> ;
    sh:name "row terms" ;
    sh:description "Salesforce text for Rest of the World Terms and Conditions" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountItem/rowTermsId> ;
    sh:name "row terms id" ;
    sh:description "Salesforce id for Rest of the World Terms and Conditions" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountItem/usTerms> ;
    sh:name "us terms" ;
    sh:description "Salesforce text for US Terms and Conditions" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountItem/usTermsId> ;
    sh:name "us terms id" ;
    sh:description "Salesforce id for US Terms and Conditions" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for SSIOAccount PMPName
pinterest:SsioAccountPmpNameShape a sh:NodeShape ;
  sh:targetClass pinterest:SsioAccountPmpName ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountPMPName/id> ;
    sh:name "id" ;
    sh:description "Salesforce id for PMP" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountPMPName/name> ;
    sh:name "name" ;
    sh:description "Display name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for SSIOAccount Response
pinterest:SsioAccountShape a sh:NodeShape ;
  sh:targetClass pinterest:SsioAccount ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountResponse/billtoInfos> ;
    sh:name "billto infos" ;
    sh:description "An array of Salesforce account information that includes address, io terms, etc." ;
    sh:node pinterest:SsioAccountItemShape ;
    sh:class pinterest:SsioAccountItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountResponse/canEdit> ;
    sh:name "can edit" ;
    sh:description "Advertiser eligible to update order lines" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountResponse/currency> ;
    sh:name "currency" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountResponse/eligible> ;
    sh:name "eligible" ;
    sh:description "Advertiser eligible to create order lines" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountResponse/error> ;
    sh:name "error" ;
    sh:description "Error indicator from Salesforce which could be \"No Error\"" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOAccountResponse/pmpNames> ;
    sh:name "pmp names" ;
    sh:node pinterest:SsioAccountPmpNameShape ;
    sh:class pinterest:SsioAccountPmpName ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for SSIOInsertion Order Common
pinterest:SsioInsertionOrderCommonShape a sh:NodeShape ;
  sh:targetClass pinterest:SsioInsertionOrderCommon ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderCommon/agencyLink> ;
    sh:name "agency link" ;
    sh:description "URL link for agency" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderCommon/billingContactEmail> ;
    sh:name "billing contact email" ;
    sh:description "The billing contact email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderCommon/billingContactFirstname> ;
    sh:name "billing contact firstname" ;
    sh:description "The billing contact first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderCommon/billingContactLastname> ;
    sh:name "billing contact lastname" ;
    sh:description "The billing contact last name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderCommon/budgetAmount> ;
    sh:name "budget amount" ;
    sh:description "If Budget order line, the budget amount." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderCommon/endDate> ;
    sh:name "end date" ;
    sh:description "End date of time period. Format: YYYY-MM-DD" ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderCommon/mediaContactEmail> ;
    sh:name "media contact email" ;
    sh:description "The media contact email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderCommon/mediaContactFirstname> ;
    sh:name "media contact firstname" ;
    sh:description "The media contact first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderCommon/mediaContactLastname> ;
    sh:name "media contact lastname" ;
    sh:description "The media contact last name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderCommon/poNumber> ;
    sh:name "po number" ;
    sh:description "The po number" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderCommon/startDate> ;
    sh:name "start date" ;
    sh:description "Starting date of time period. Format: YYYY-MM-DD" ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderCommon/userEmail> ;
    sh:name "user email" ;
    sh:description "The email of user submitting the insertion order" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for SSIOCreate Insertion Order Request
pinterest:SSIOCreateInsertionOrderRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:SSIOCreateInsertionOrderRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/agencyLink> ;
    sh:name "agency link" ;
    sh:description "URL link for agency" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/billingContactEmail> ;
    sh:name "billing contact email" ;
    sh:description "The billing contact email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/billingContactFirstname> ;
    sh:name "billing contact firstname" ;
    sh:description "The billing contact first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/billingContactLastname> ;
    sh:name "billing contact lastname" ;
    sh:description "The billing contact last name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/budgetAmount> ;
    sh:name "budget amount" ;
    sh:description "If Budget order line, the budget amount." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/endDate> ;
    sh:name "end date" ;
    sh:description "End date of time period. Format: YYYY-MM-DD" ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/mediaContactEmail> ;
    sh:name "media contact email" ;
    sh:description "The media contact email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/mediaContactFirstname> ;
    sh:name "media contact firstname" ;
    sh:description "The media contact first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/mediaContactLastname> ;
    sh:name "media contact lastname" ;
    sh:description "The media contact last name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/poNumber> ;
    sh:name "po number" ;
    sh:description "The po number" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/startDate> ;
    sh:name "start date" ;
    sh:description "Starting date of time period. Format: YYYY-MM-DD" ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/userEmail> ;
    sh:name "user email" ;
    sh:description "The email of user submitting the insertion order" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/acceptedTermsId> ;
    sh:name "accepted terms id" ;
    sh:description "The SFDC id for the terms" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/acceptedTermsTime> ;
    sh:name "accepted terms time" ;
    sh:description "The UTC timestamp (to the nearest sec) of when terms were accepted" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/billtoBillingAddressId> ;
    sh:name "billto billing address id" ;
    sh:description "The bill-to billing address id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/billtoBusinessAddressId> ;
    sh:name "billto business address id" ;
    sh:description "The bill-to business address id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/billtoCompanyId> ;
    sh:name "billto company id" ;
    sh:description "The bill-to company id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/currencyInfo> ;
    sh:name "currency info" ;
    sh:description "Currency Codes from ISO 4217" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "UNK" "USD" "GBP" "CAD" "EUR" "AUD" "NZD" "SEK" "ILS" "CHF" "HKD" "JPY" "SGD" "KRW" "NOK" "DKK" "PLN" "RON" "HUF" "CZK" "BRL" "MXN" "ARS" "CLP" "COP" "INR" "TRY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/estimatedMonthlySpend> ;
    sh:name "estimated monthly spend" ;
    sh:description "If Ongoing (perpetual) order line, the estimated monthly spend" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/orderLineType> ;
    sh:name "order line type" ;
    sh:description "Type can be Budget or Perpetual" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "BUDGET" "PERPETUALS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/orderName> ;
    sh:name "order name" ;
    sh:description "The order name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderRequest/pmpId> ;
    sh:name "pmp id" ;
    sh:description "The pmp id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for SSIOCreate Insertion Order Response
pinterest:SSIOCreateInsertionOrderResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:SSIOCreateInsertionOrderResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOCreateInsertionOrderResponse/pinOrderId> ;
    sh:name "pin order id" ;
    sh:description "Salesforce order id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for SSIOEdit Insertion Order Request
pinterest:SSIOEditInsertionOrderRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:SSIOEditInsertionOrderRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/agencyLink> ;
    sh:name "agency link" ;
    sh:description "URL link for agency" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/billingContactEmail> ;
    sh:name "billing contact email" ;
    sh:description "The billing contact email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/billingContactFirstname> ;
    sh:name "billing contact firstname" ;
    sh:description "The billing contact first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/billingContactLastname> ;
    sh:name "billing contact lastname" ;
    sh:description "The billing contact last name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/budgetAmount> ;
    sh:name "budget amount" ;
    sh:description "If Budget order line, the budget amount." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/endDate> ;
    sh:name "end date" ;
    sh:description "End date of time period. Format: YYYY-MM-DD" ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/mediaContactEmail> ;
    sh:name "media contact email" ;
    sh:description "The media contact email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/mediaContactFirstname> ;
    sh:name "media contact firstname" ;
    sh:description "The media contact first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/mediaContactLastname> ;
    sh:name "media contact lastname" ;
    sh:description "The media contact last name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/poNumber> ;
    sh:name "po number" ;
    sh:description "The po number" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/startDate> ;
    sh:name "start date" ;
    sh:description "Starting date of time period. Format: YYYY-MM-DD" ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/userEmail> ;
    sh:name "user email" ;
    sh:description "The email of user submitting the insertion order" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/adsManagerOrderLineId> ;
    sh:name "ads manager order line id" ;
    sh:description "Ads manager OrderLineId" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/oracleLineId> ;
    sh:name "oracle line id" ;
    sh:description "LineId in the Oracle DB" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/salesforceOrderId> ;
    sh:name "salesforce order id" ;
    sh:description "OrderId in SFDC" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderRequest/salesforceOrderLineId> ;
    sh:name "salesforce order line id" ;
    sh:description "OrderLineId in SFDC" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for SSIOEdit Insertion Order Response
pinterest:SSIOEditInsertionOrderResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:SSIOEditInsertionOrderResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOEditInsertionOrderResponse/pinOrderId> ;
    sh:name "pin order id" ;
    sh:description "Salesforce order id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for SSIOInsertion Order Status
pinterest:SsioInsertionOrderStatusShape a sh:NodeShape ;
  sh:targetClass pinterest:SsioInsertionOrderStatus ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderStatus/creationTime> ;
    sh:name "creation time" ;
    sh:description "Salesforce insertion order creation time" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderStatus/pinOrderId> ;
    sh:name "pin order id" ;
    sh:description "Salesforce order id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOInsertionOrderStatus/status> ;
    sh:name "status" ;
    sh:description "Salesforce insertion order status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for SSIOInsertion Order Status Response
pinterest:SsioInsertionOrderStatusResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:SsioInsertionOrderStatusResponse .

# Shape for SSIOOrder Line
pinterest:SsioOrderLineShape a sh:NodeShape ;
  sh:targetClass pinterest:SsioOrderLine ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/acceptedTermsId> ;
    sh:name "accepted terms id" ;
    sh:description "The SFDC id for the terms" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/acceptedTermsTime> ;
    sh:name "accepted terms time" ;
    sh:description "The UTC timestamp (to the nearest sec) of when terms were accepted" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}).(\\d{3})Z$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/adsManagerOrderLineId> ;
    sh:name "ads manager order line id" ;
    sh:description "Ads manager OrderLineId" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/agencyLink> ;
    sh:name "agency link" ;
    sh:description "Agency link" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/billToCompanyName> ;
    sh:name "bill to company name" ;
    sh:description "Bill To Company name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/billingContactEmail> ;
    sh:name "billing contact email" ;
    sh:description "Billing contact email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/billingContactFirstname> ;
    sh:name "billing contact firstname" ;
    sh:description "Billing contact first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/billingContactLastname> ;
    sh:name "billing contact lastname" ;
    sh:description "Billing contact last name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/budgetAmount> ;
    sh:name "budget amount" ;
    sh:description "If Budget order line, the budget amount." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/currencyInfo> ;
    sh:name "currency info" ;
    sh:description "Currency Codes from ISO 4217" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNK" "USD" "GBP" "CAD" "EUR" "AUD" "NZD" "SEK" "ILS" "CHF" "HKD" "JPY" "SGD" "KRW" "NOK" "DKK" "PLN" "RON" "HUF" "CZK" "BRL" "MXN" "ARS" "CLP" "COP" "INR" "TRY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/endDate> ;
    sh:name "end date" ;
    sh:description "End date of the order line." ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/estimatedMonthlySpend> ;
    sh:name "estimated monthly spend" ;
    sh:description "If Ongoing (perpetual) order line, the estimated monthly spend" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/lastModifiedDateTime> ;
    sh:name "last modified date time" ;
    sh:description "Last modified date." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}).(\\d{3})Z$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/mediaContactEmail> ;
    sh:name "media contact email" ;
    sh:description "Billing media email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/mediaContactFirstname> ;
    sh:name "media contact firstname" ;
    sh:description "Billing contact first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/mediaContactLastname> ;
    sh:name "media contact lastname" ;
    sh:description "Billing contact first name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/orderName> ;
    sh:name "order name" ;
    sh:description "The order name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/pinOrderId> ;
    sh:name "pin order id" ;
    sh:description "The pin order id associated with the order line in SFDC" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/pmpName> ;
    sh:name "pmp name" ;
    sh:description "The Pinterest marketing partner name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/poNumber> ;
    sh:name "po number" ;
    sh:description "The po number" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/salesforceOrderLineId> ;
    sh:name "salesforce order line id" ;
    sh:description "OrderLineId in SFDC" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SSIOOrderLine/startDate> ;
    sh:name "start date" ;
    sh:description "Start date of the order line." ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
  ] .

# Shape for Board Section
pinterest:BoardSectionShape a sh:NodeShape ;
  sh:targetClass pinterest:BoardSection ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardSection/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardSection/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:minLength 1 ;
    sh:maxLength 180 ;
  ] .

# Shape for Board Create
pinterest:BoardCreateShape a sh:NodeShape ;
  sh:targetClass pinterest:BoardCreate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardCreate/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardCreate/isAdsOnly> ;
    sh:name "is ads only" ;
    sh:description "If set to `true`, the board will be ad-only and can store ad-only Pins." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardCreate/name> ;
    sh:name "name" ;
    sh:description "\n\n    Name of the board.\n\n    **Note:** If you create an ad-only board by setting `is_ads_only`\n    to `true`, the board name automatically becomes \"Ad-only Pins\"." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardCreate/privacy> ;
    sh:name "privacy" ;
    sh:description "    Privacy setting for a board. Learn more about [secret](https://help.pinterest.com/en/article/secret-boards)\n    boards and [protected](https://help.pinterest.com/en/business/article/protected-boards) boards.\n\n    **Note:** If you create an ad-only board by setting `is_ads_only`\n    to `true`, the `privacy` settng automatically becomes `PROTECTED`. " ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PUBLIC" "PROTECTED" "SECRET" ) ;
  ] .

# Shape for Board With Update Privacy
pinterest:BoardWithUpdatePrivacyShape a sh:NodeShape ;
  sh:targetClass pinterest:BoardWithUpdatePrivacy ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacy/boardPinsModifiedAt> ;
    sh:name "board pins modified at" ;
    sh:description "Date and time of last board pins modified." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacy/collaboratorCount> ;
    sh:name "collaborator count" ;
    sh:description "Count of collaborators on the board." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacy/createdAt> ;
    sh:name "created at" ;
    sh:description "Date and time of board creation." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacy/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacy/followerCount> ;
    sh:name "follower count" ;
    sh:description "Board follower count." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacy/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacy/isAdsOnly> ;
    sh:name "is ads only" ;
    sh:description "If set to `true`, the board will be ad-only and can store ad-only Pins." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacy/media> ;
    sh:name "media" ;
    sh:description "Board media." ;
    sh:node pinterest:BoardMediaShape ;
    sh:class pinterest:BoardMedia ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacy/name> ;
    sh:name "name" ;
    sh:description "\n\n    Name of the board.\n\n    **Note:** If you create an ad-only board by setting `is_ads_only`\n    to `true`, the board name automatically becomes \"Ad-only Pins\"." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacy/owner> ;
    sh:name "owner" ;
    sh:node pinterest:BoardOwnerShape ;
    sh:class pinterest:BoardOwner ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacy/pinCount> ;
    sh:name "pin count" ;
    sh:description "Count of Pins on the board." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacy/privacy> ;
    sh:name "privacy" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PUBLIC" "SECRET" ) ;
  ] .

# Shape for Board With Update Privacy Update
pinterest:BoardWithUpdatePrivacyUpdateShape a sh:NodeShape ;
  sh:targetClass pinterest:BoardWithUpdatePrivacyUpdate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacyUpdate/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacyUpdate/name> ;
    sh:name "name" ;
    sh:description "\n\n    Name of the board.\n\n    **Note:** If you create an ad-only board by setting `is_ads_only`\n    to `true`, the board name automatically becomes \"Ad-only Pins\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BoardWithUpdatePrivacyUpdate/privacy> ;
    sh:name "privacy" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PUBLIC" "SECRET" ) ;
  ] .

# Shape for Campaign Bid Options
pinterest:CampaignBidOptionsShape a sh:NodeShape ;
  sh:targetClass pinterest:CampaignBidOptions ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignBidOptions/appTypeMultipliers> ;
    sh:name "app type multipliers" ;
    sh:description "This represents a mapping from app type targeting criteria to a bid price adjustment.\n\nMultiplier values must be between 0 and 10. A value of 10 represents a 900% increase in bid price (from $1 to $10 for example). A value of 0 will stop distribution for this item on the specified app type in `MAX_BID` ad groups in `CATALOG_SALES` campaigns. All app type multipliers must be set at the same time. If a multiplier is not provided it is assumed to be 1 (no bid adjustment)." ;
    sh:node pinterest:AppTypeMultipliersShape ;
    sh:class pinterest:AppTypeMultipliers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignBidOptions/audienceMultipliers> ;
    sh:name "audience multipliers" ;
    sh:description "This represents a mapping from Audience ID to a bid price adjustment.\n\nMultiplier values must be between 0 and 10. A value of 10 represents a 900% increase in bid price (from $1 to $10 for example). A value of 0 will stop distribution for this item on the specified audience in `MAX_BID` ad groups in `CATALOG_SALES` campaigns. All audience multipliers must be set at the same time. If a multiplier is not provided it is assumed to be 1 (no bid adjustment)." ;
    sh:node pinterest:CampaignAudienceMultipliersShape ;
    sh:class pinterest:CampaignAudienceMultipliers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignBidOptions/placementMultipliers> ;
    sh:name "placement multipliers" ;
    sh:description "This represents a mapping from placement to a bid price adjustment.\n\nMultiplier values must be between 0 and 10. A value of 10 represents a 900% increase in bid price (from $1 to $10 for example). A value of 0 will stop distribution for this item on the specified placement in `MAX_BID` ad groups in `CATALOG_SALES` campaigns. All placement multipliers must be set at the same time. If a multiplier is not provided it is assumed to be 1 (no bid adjustment)." ;
    sh:node pinterest:PlacementMultipliersShape ;
    sh:class pinterest:PlacementMultipliers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Audience Multipliers
pinterest:CampaignAudienceMultipliersShape a sh:NodeShape ;
  sh:targetClass pinterest:CampaignAudienceMultipliers ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignAudienceMultipliers/AUDIENCE_ID> ;
    sh:name "audience id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Campaign Bid Options Create
pinterest:CampaignBidOptionsCreateShape a sh:NodeShape ;
  sh:targetClass pinterest:CampaignBidOptionsCreate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignBidOptionsCreate/appTypeMultipliers> ;
    sh:name "app type multipliers" ;
    sh:description "This represents a mapping from app type targeting criteria to a bid price adjustment.\n\nMultiplier values must be between 0 and 10. A value of 10 represents a 900% increase in bid price (from $1 to $10 for example). A value of 0 will stop distribution for this item on the specified app type in `MAX_BID` ad groups in `CATALOG_SALES` campaigns. All app type multipliers must be set at the same time. If a multiplier is not provided it is assumed to be 1 (no bid adjustment)." ;
    sh:node pinterest:AppTypeMultipliersShape ;
    sh:class pinterest:AppTypeMultipliers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignBidOptionsCreate/audienceMultipliers> ;
    sh:name "audience multipliers" ;
    sh:description "This represents a mapping from Audience ID to a bid price adjustment.\n\nMultiplier values must be between 0 and 10. A value of 10 represents a 900% increase in bid price (from $1 to $10 for example). A value of 0 will stop distribution for this item on the specified audience in `MAX_BID` ad groups in `CATALOG_SALES` campaigns. All audience multipliers must be set at the same time. If a multiplier is not provided it is assumed to be 1 (no bid adjustment)." ;
    sh:node pinterest:CampaignAudienceMultipliersShape ;
    sh:class pinterest:CampaignAudienceMultipliers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignBidOptionsCreate/placementMultipliers> ;
    sh:name "placement multipliers" ;
    sh:description "This represents a mapping from placement to a bid price adjustment.\n\nMultiplier values must be between 0 and 10. A value of 10 represents a 900% increase in bid price (from $1 to $10 for example). A value of 0 will stop distribution for this item on the specified placement in `MAX_BID` ad groups in `CATALOG_SALES` campaigns. All placement multipliers must be set at the same time. If a multiplier is not provided it is assumed to be 1 (no bid adjustment)." ;
    sh:node pinterest:PlacementMultipliersShape ;
    sh:class pinterest:PlacementMultipliers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Availability Filter
pinterest:AvailabilityFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:AvailabilityFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AvailabilityFilter/AVAILABILITY> ;
    sh:name "availability" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Product Group Multiple String Criteria
pinterest:CatalogsProductGroupMultipleStringCriteriaShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupMultipleStringCriteria ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleStringCriteria/negated> ;
    sh:name "negated" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleStringCriteria/values> ;
    sh:name "values" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Brand Filter
pinterest:BrandFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:BrandFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BrandFilter/BRAND> ;
    sh:name "brand" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Download Request
pinterest:BulkDownloadRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:BulkDownloadRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkDownloadRequest/campaignFilter> ;
    sh:name "campaign filter" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkDownloadRequest/campaignFilter/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkDownloadRequest/campaignFilter/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkDownloadRequest/entityIds> ;
    sh:name "entity ids" ;
    sh:description "All entities specified by these IDs as well as their children and grandchildren will be downloaded if the entity type is one of the types requested to be downloaded." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkDownloadRequest/entityTypes> ;
    sh:name "entity types" ;
    sh:description "All entity types specified will be downloaded. Fewer types result in faster downloads." ;
    sh:datatype xsd:string ;
    sh:maxCount 6 ;
    sh:in ( "CAMPAIGN" "AD_GROUP" "PRODUCT_GROUP" "AD" "KEYWORD" "LABEL" "SCHEDULE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkDownloadRequest/outputFormat> ;
    sh:name "output format" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CSV" "JSON" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkDownloadRequest/updatedSince> ;
    sh:name "updated since" ;
    sh:description "Unix UTC timestamp to retrieve all entities that have changed since this time." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:or (
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkDownloadRequest/entityTypes> ; sh:maxCount 0 ] ]
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkDownloadRequest/entityTypes> ; sh:minCount 1 ] ]
  ) .

# Shape for Bulk Download Response
pinterest:BulkDownloadResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:BulkDownloadResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkDownloadResponse/requestId> ;
    sh:name "request id" ;
    sh:description "ID of the bulk request." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Upsert Request
pinterest:BulkUpsertRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:BulkUpsertRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequest/create> ;
    sh:name "create" ;
    sh:description "Request for creation of entities in bulk." ;
    sh:class pinterest:BulkUpsertRequestCreate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequest/update> ;
    sh:name "update" ;
    sh:description "Request for creation of entities in bulk." ;
    sh:class pinterest:BulkUpsertRequestUpdate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Upsert Request Create
pinterest:BulkUpsertRequestCreateShape a sh:NodeShape ;
  sh:targetClass pinterest:BulkUpsertRequestCreate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestCreate/adGroups> ;
    sh:name "ad groups" ;
    sh:node pinterest:AdGroupCreateRequestShape ;
    sh:class pinterest:AdGroupCreateRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestCreate/ads> ;
    sh:name "ads" ;
    sh:node pinterest:AdCreateRequestShape ;
    sh:class pinterest:AdCreateRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestCreate/campaigns> ;
    sh:name "campaigns" ;
    sh:node pinterest:CampaignCreateRequestShape ;
    sh:class pinterest:CampaignCreateRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestCreate/catalogProductGroups> ;
    sh:name "catalog product groups" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsProductGroupCreateRequestShape ; sh:class pinterest:CatalogsProductGroupCreateRequest ]
      [ sh:node pinterest:CatalogsRetailProductGroupCreateRequestShape ; sh:class pinterest:CatalogsRetailProductGroupCreateRequest ]
      [ sh:node pinterest:CatalogsHotelProductGroupCreateRequestShape ; sh:class pinterest:CatalogsHotelProductGroupCreateRequest ]
      [ sh:node pinterest:CatalogsCreativeAssetsProductGroupCreateRequestShape ; sh:class pinterest:CatalogsCreativeAssetsProductGroupCreateRequest ]
    ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestCreate/keywords> ;
    sh:name "keywords" ;
    sh:node pinterest:KeywordsRequestShape ;
    sh:class pinterest:KeywordsRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestCreate/labels> ;
    sh:name "labels" ;
    sh:node pinterest:LabelCreateRequestShape ;
    sh:class pinterest:LabelCreateRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestCreate/productGroups> ;
    sh:name "product groups" ;
    sh:node pinterest:ProductGroupPromotionCreateRequestShape ;
    sh:class pinterest:ProductGroupPromotionCreateRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Create Request
pinterest:CampaignCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CampaignCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Campaign's Advertiser ID. If you want to create a campaign in a Business Account shared account you need to specify the Business Access advertiser ID in both the query path param as well as the request body schema." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/dailySpendCap> ;
    sh:name "daily spend cap" ;
    sh:description "Campaign daily spending cap. Required for Campaign Budget Optimization (CBO) campaigns. This and \"lifetime_spend_cap\" cannot be set at the same time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/endTime> ;
    sh:name "end time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the campaign stop appearing. Must occur after any end times for child ad groups. If `end_time` is not specified for the campaign, ads run indefinitely unless you update the campaign, changing their status to `paused`. Learn about <a href=\"/docs/api-features/managing-campaigns/#campaign-scheduling\" target=\"blank\">scheduling campaigns</a>.\nDifferent end times can be set for the campaign's child ad groups, but they cannot occur after an `end_time` specified for the campaign.\n- If your campaign has a child ad group with an end time specified, and if you update that campaign with an `end_time` that is earlier than that of the ad group, the campaign `end_time` will supersede the ad group `end_time`, and the request will not return an error.\n- In this scenario, if you call <a href=\"/docs/api/v5/campaigns-list\" target=\"blank\">List campaigns</a> or <a href=\"/docs/api/v5/ad_groups-list\" target=\"blank\">List ad groups</a>, the returned campaigns or ad groups are listed with the start and end times that you assigned them, regardless of supersedence." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/isAutomatedCampaign> ;
    sh:name "is automated campaign" ;
    sh:description "Specifies whether the campaign was created in the automated campaign flow" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/isFlexibleDailyBudgets> ;
    sh:name "is flexible daily budgets" ;
    sh:description "Determine if a campaign has setup for flexible daily budgets, also known as \"Pinterest Performance+ budgets\"." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/lifetimeSpendCap> ;
    sh:name "lifetime spend cap" ;
    sh:description "Campaign total spending cap. Required for Campaign Budget Optimization (CBO) campaigns. This and \"daily_spend_cap\" cannot be set at the same time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/name> ;
    sh:name "name" ;
    sh:description "Campaign name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/orderLineId> ;
    sh:name "order line id" ;
    sh:description "Order line ID that appears on the invoice." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/startTime> ;
    sh:name "start time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the campaign start to appear. Must precede any start times set for child ad groups. Defaults to current time if no time is specified. Learn about <a href=\"/docs/api-features/managing-campaigns/#campaign-scheduling\" target=\"blank\">scheduling campaigns</a>.\nDifferent start times can be set for the campaign's child ad groups, but they cannot occur before a `start_time` specified for the campaign.\n- If your campaign has a child ad group with a start time specified, and if you update that campaign with a `start_time` that is later than that of the ad group, the campaign `start_time` will supersede the ad group `start_time`, and the request will not return an error.\n- In this scenario, if you call <a href=\"/docs/api/v5/campaigns-list\" target=\"blank\">List campaigns</a> or <a href=\"/docs/api/v5/ad_groups-list\" target=\"blank\">List ad groups</a>, the returned campaigns or ad groups are listed with the start and end times that you assigned them, regardless of supersedence." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/defaultAdGroupBudgetInMicroCurrency> ;
    sh:name "default ad group budget in micro currency" ;
    sh:description "When transitioning from campaign budget optimization to non-campaign budget optimization, the default_ad_group_budget_in_micro_currency will propagate to each child ad groups daily budget. Unit is micro currency of the associated advertiser account." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/isCampaignBudgetOptimization> ;
    sh:name "is campaign budget optimization" ;
    sh:description "Determines if a campaign automatically generate ad-group level budgets given a campaign budget to maximize campaign outcome. When transitioning from non-cbo to cbo, all previous child ad group budget will be cleared." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/bidOptions> ;
    sh:name "bid options" ;
    sh:description "Object describing the campaign level bid multipliers." ;
    sh:node pinterest:CampaignBidOptionsCreateShape ;
    sh:class pinterest:CampaignBidOptionsCreate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/isPerformancePlus> ;
    sh:name "is performance plus" ;
    sh:description "Enable Pinterest Performance+ for your campaign. To learn more, see <a href=\"https://developers.pinterest.com/docs/api-features/pinterest-performance-plus-setup/\">Pinterest Performance+ Setup</a>." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateRequest/objectiveType> ;
    sh:name "objective type" ;
    sh:description "Intended result of the campaign. \nYou can only update objectives for draft campaigns.\n`WEB_SESSIONS` and `VIDEO_VIEW` objectives are deprecated. We recommend using `VIDEO_COMPLETION` as an alternative for the latter. " ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AWARENESS" "CONSIDERATION" "WEB_CONVERSION" "CATALOG_SALES" "VIDEO_COMPLETION" ) ;
  ] .

# Shape for Catalogs Product Group Create Request
pinterest:CatalogsProductGroupCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupCreateRequest/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupCreateRequest/feedId> ;
    sh:name "feed id" ;
    sh:description "Catalog Feed id pertaining to the catalog product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupCreateRequest/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for request on catalog product group. This is a distinct schema It is not possible to create or update a Product Group with empty filters. But some automatically generated Product Groups might have empty filters." ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsProductGroupFiltersRequestAnyOf1Shape ; sh:class pinterest:CatalogsProductGroupFiltersRequestAnyOf1 ]
      [ sh:node pinterest:CatalogsProductGroupFiltersRequestAnyOf2Shape ; sh:class pinterest:CatalogsProductGroupFiltersRequestAnyOf2 ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupCreateRequest/isFeatured> ;
    sh:name "is featured" ;
    sh:description "boolean indicator of whether the product group is being featured or not" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupCreateRequest/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Product Group Filters Request Any Of1
pinterest:CatalogsProductGroupFiltersRequestAnyOf1Shape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupFiltersRequestAnyOf1 ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupFiltersRequestAnyOf1/anyOf> ;
    sh:name "any of" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:MinPriceFilterShape ; sh:class pinterest:MinPriceFilter ]
      [ sh:node pinterest:MaxPriceFilterShape ; sh:class pinterest:MaxPriceFilter ]
      [ sh:node pinterest:CurrencyFilterShape ; sh:class pinterest:CurrencyFilter ]
      [ sh:node pinterest:ItemIdFilterShape ; sh:class pinterest:ItemIdFilter ]
      [ sh:node pinterest:AvailabilityFilterShape ; sh:class pinterest:AvailabilityFilter ]
      [ sh:node pinterest:BrandFilterShape ; sh:class pinterest:BrandFilter ]
      [ sh:node pinterest:ConditionFilterShape ; sh:class pinterest:ConditionFilter ]
      [ sh:node pinterest:CustomLabel0FilterShape ; sh:class pinterest:CustomLabel0Filter ]
      [ sh:node pinterest:CustomLabel1FilterShape ; sh:class pinterest:CustomLabel1Filter ]
      [ sh:node pinterest:CustomLabel2FilterShape ; sh:class pinterest:CustomLabel2Filter ]
      [ sh:node pinterest:CustomLabel3FilterShape ; sh:class pinterest:CustomLabel3Filter ]
      [ sh:node pinterest:CustomLabel4FilterShape ; sh:class pinterest:CustomLabel4Filter ]
      [ sh:node pinterest:ItemGroupIdFilterShape ; sh:class pinterest:ItemGroupIdFilter ]
      [ sh:node pinterest:GenderFilterShape ; sh:class pinterest:GenderFilter ]
      [ sh:node pinterest:MediaTypeFilterShape ; sh:class pinterest:MediaTypeFilter ]
      [ sh:node pinterest:ProductType4FilterShape ; sh:class pinterest:ProductType4Filter ]
      [ sh:node pinterest:ProductType3FilterShape ; sh:class pinterest:ProductType3Filter ]
      [ sh:node pinterest:ProductType2FilterShape ; sh:class pinterest:ProductType2Filter ]
      [ sh:node pinterest:ProductType1FilterShape ; sh:class pinterest:ProductType1Filter ]
      [ sh:node pinterest:ProductType0FilterShape ; sh:class pinterest:ProductType0Filter ]
      [ sh:node pinterest:GoogleProductCategory6FilterShape ; sh:class pinterest:GoogleProductCategory6Filter ]
      [ sh:node pinterest:GoogleProductCategory5FilterShape ; sh:class pinterest:GoogleProductCategory5Filter ]
      [ sh:node pinterest:GoogleProductCategory4FilterShape ; sh:class pinterest:GoogleProductCategory4Filter ]
      [ sh:node pinterest:GoogleProductCategory3FilterShape ; sh:class pinterest:GoogleProductCategory3Filter ]
      [ sh:node pinterest:GoogleProductCategory2FilterShape ; sh:class pinterest:GoogleProductCategory2Filter ]
      [ sh:node pinterest:GoogleProductCategory1FilterShape ; sh:class pinterest:GoogleProductCategory1Filter ]
      [ sh:node pinterest:GoogleProductCategory0FilterShape ; sh:class pinterest:GoogleProductCategory0Filter ]
      [ sh:node pinterest:ProductGroupReferenceFilterShape ; sh:class pinterest:ProductGroupReferenceFilter ]
      [ sh:node pinterest:CustomNumber0FilterShape ; sh:class pinterest:CustomNumber0Filter ]
      [ sh:node pinterest:CustomNumber1FilterShape ; sh:class pinterest:CustomNumber1Filter ]
      [ sh:node pinterest:CustomNumber2FilterShape ; sh:class pinterest:CustomNumber2Filter ]
      [ sh:node pinterest:CustomNumber3FilterShape ; sh:class pinterest:CustomNumber3Filter ]
      [ sh:node pinterest:CustomNumber4FilterShape ; sh:class pinterest:CustomNumber4Filter ]
      [ sh:node pinterest:TitleKeywordsFilterShape ; sh:class pinterest:TitleKeywordsFilter ]
    ) ;
    sh:minCount 1 ;
  ] .

# Shape for Min Price Filter
pinterest:MinPriceFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:MinPriceFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MinPriceFilter/MIN_PRICE> ;
    sh:name "min price" ;
    sh:node pinterest:CatalogsProductGroupPricingCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupPricingCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Product Group Pricing Criteria
pinterest:CatalogsProductGroupPricingCriteriaShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupPricingCriteria ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupPricingCriteria/inclusion> ;
    sh:name "inclusion" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupPricingCriteria/negated> ;
    sh:name "negated" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupPricingCriteria/values> ;
    sh:name "values" ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
  ] .

# Shape for Max Price Filter
pinterest:MaxPriceFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:MaxPriceFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MaxPriceFilter/MAX_PRICE> ;
    sh:name "max price" ;
    sh:node pinterest:CatalogsProductGroupPricingCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupPricingCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Currency Filter
pinterest:CurrencyFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CurrencyFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CurrencyFilter/CURRENCY> ;
    sh:name "currency" ;
    sh:description "A currency filter. This filter cannot be negated" ;
    sh:node pinterest:CatalogsProductGroupCurrencyCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupCurrencyCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Product Group Currency Criteria
pinterest:CatalogsProductGroupCurrencyCriteriaShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupCurrencyCriteria ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupCurrencyCriteria/negated> ;
    sh:name "negated" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "false" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupCurrencyCriteria/values> ;
    sh:name "values" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" ) ;
  ] .

# Shape for Item Id Filter
pinterest:ItemIdFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:ItemIdFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemIdFilter/ITEM_ID> ;
    sh:name "item id" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Condition Filter
pinterest:ConditionFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:ConditionFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConditionFilter/CONDITION> ;
    sh:name "condition" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Label0Filter
pinterest:CustomLabel0FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomLabel0Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomLabel0Filter/CUSTOM_LABEL0> ;
    sh:name "custom label0" ;
    sh:node pinterest:CatalogsProductGroupFilterOperatorTypeCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupFilterOperatorTypeCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Product Group Filter Operator Type Criteria
pinterest:CatalogsProductGroupFilterOperatorTypeCriteriaShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupFilterOperatorTypeCriteria ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupFilterOperatorTypeCriteria/filterOperatorType> ;
    sh:name "filter operator type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "IS" "CONTAINS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupFilterOperatorTypeCriteria/negated> ;
    sh:name "negated" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupFilterOperatorTypeCriteria/values> ;
    sh:name "values" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Custom Label1Filter
pinterest:CustomLabel1FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomLabel1Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomLabel1Filter/CUSTOM_LABEL1> ;
    sh:name "custom label1" ;
    sh:node pinterest:CatalogsProductGroupFilterOperatorTypeCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupFilterOperatorTypeCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Label2Filter
pinterest:CustomLabel2FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomLabel2Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomLabel2Filter/CUSTOM_LABEL2> ;
    sh:name "custom label2" ;
    sh:node pinterest:CatalogsProductGroupFilterOperatorTypeCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupFilterOperatorTypeCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Label3Filter
pinterest:CustomLabel3FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomLabel3Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomLabel3Filter/CUSTOM_LABEL3> ;
    sh:name "custom label3" ;
    sh:node pinterest:CatalogsProductGroupFilterOperatorTypeCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupFilterOperatorTypeCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Label4Filter
pinterest:CustomLabel4FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomLabel4Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomLabel4Filter/CUSTOM_LABEL4> ;
    sh:name "custom label4" ;
    sh:node pinterest:CatalogsProductGroupFilterOperatorTypeCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupFilterOperatorTypeCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Item Group Id Filter
pinterest:ItemGroupIdFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:ItemGroupIdFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemGroupIdFilter/ITEM_GROUP_ID> ;
    sh:name "item group id" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Gender Filter
pinterest:GenderFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:GenderFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GenderFilter/GENDER> ;
    sh:name "gender" ;
    sh:node pinterest:CatalogsProductGroupMultipleGenderCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleGenderCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Product Group Multiple Gender Criteria
pinterest:CatalogsProductGroupMultipleGenderCriteriaShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupMultipleGenderCriteria ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleGenderCriteria/negated> ;
    sh:name "negated" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleGenderCriteria/values> ;
    sh:name "values" ;
    sh:datatype xsd:string ;
    sh:in ( "FEMALE" "MALE" "UNISEX" ) ;
  ] .

# Shape for Media Type Filter
pinterest:MediaTypeFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:MediaTypeFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaTypeFilter/MEDIA_TYPE> ;
    sh:name "media type" ;
    sh:node pinterest:CatalogsProductGroupMultipleMediaTypesCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleMediaTypesCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Product Group Multiple Media Types Criteria
pinterest:CatalogsProductGroupMultipleMediaTypesCriteriaShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupMultipleMediaTypesCriteria ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleMediaTypesCriteria/negated> ;
    sh:name "negated" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleMediaTypesCriteria/values> ;
    sh:name "values" ;
    sh:datatype xsd:string ;
    sh:in ( "IMAGE" "VIDEO" ) ;
  ] .

# Shape for Product Type4Filter
pinterest:ProductType4FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductType4Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductType4Filter/PRODUCT_TYPE4> ;
    sh:name "product type4" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringListCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringListCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Product Group Multiple String List Criteria
pinterest:CatalogsProductGroupMultipleStringListCriteriaShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupMultipleStringListCriteria ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleStringListCriteria/negated> ;
    sh:name "negated" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleStringListCriteria/values> ;
    sh:name "values" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleStringListCriteria/values/ListLevel1Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Type3Filter
pinterest:ProductType3FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductType3Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductType3Filter/PRODUCT_TYPE3> ;
    sh:name "product type3" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringListCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringListCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Type2Filter
pinterest:ProductType2FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductType2Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductType2Filter/PRODUCT_TYPE2> ;
    sh:name "product type2" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringListCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringListCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Type1Filter
pinterest:ProductType1FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductType1Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductType1Filter/PRODUCT_TYPE1> ;
    sh:name "product type1" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringListCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringListCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Type0Filter
pinterest:ProductType0FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductType0Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductType0Filter/PRODUCT_TYPE0> ;
    sh:name "product type0" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringListCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringListCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Google Product Category6Filter
pinterest:GoogleProductCategory6FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:GoogleProductCategory6Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GoogleProductCategory6Filter/GOOGLE_PRODUCT_CATEGORY6> ;
    sh:name "google product category6" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringListCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringListCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Google Product Category5Filter
pinterest:GoogleProductCategory5FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:GoogleProductCategory5Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GoogleProductCategory5Filter/GOOGLE_PRODUCT_CATEGORY5> ;
    sh:name "google product category5" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringListCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringListCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Google Product Category4Filter
pinterest:GoogleProductCategory4FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:GoogleProductCategory4Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GoogleProductCategory4Filter/GOOGLE_PRODUCT_CATEGORY4> ;
    sh:name "google product category4" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringListCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringListCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Google Product Category3Filter
pinterest:GoogleProductCategory3FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:GoogleProductCategory3Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GoogleProductCategory3Filter/GOOGLE_PRODUCT_CATEGORY3> ;
    sh:name "google product category3" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringListCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringListCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Google Product Category2Filter
pinterest:GoogleProductCategory2FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:GoogleProductCategory2Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GoogleProductCategory2Filter/GOOGLE_PRODUCT_CATEGORY2> ;
    sh:name "google product category2" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringListCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringListCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Google Product Category1Filter
pinterest:GoogleProductCategory1FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:GoogleProductCategory1Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GoogleProductCategory1Filter/GOOGLE_PRODUCT_CATEGORY1> ;
    sh:name "google product category1" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringListCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringListCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Google Product Category0Filter
pinterest:GoogleProductCategory0FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:GoogleProductCategory0Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GoogleProductCategory0Filter/GOOGLE_PRODUCT_CATEGORY0> ;
    sh:name "google product category0" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringListCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringListCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Group Reference Filter
pinterest:ProductGroupReferenceFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductGroupReferenceFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupReferenceFilter/PRODUCT_GROUP> ;
    sh:name "product group" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Number0Filter
pinterest:CustomNumber0FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomNumber0Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomNumber0Filter/CUSTOM_NUMBER0> ;
    sh:name "custom number0" ;
    sh:node pinterest:CatalogsProductGroupUint32CriteriaShape ;
    sh:class pinterest:CatalogsProductGroupUint32Criteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Product Group Uint32Criteria
pinterest:CatalogsProductGroupUint32CriteriaShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupUint32Criteria ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupUint32Criteria/negated> ;
    sh:name "negated" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupUint32Criteria/operator> ;
    sh:name "operator" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "GREATER_THAN" "GREATER_THAN_OR_EQUALS" "LESS_THAN" "LESS_THAN_OR_EQUALS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupUint32Criteria/value> ;
    sh:name "value" ;
    sh:datatype xsd:unsignedInt ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:unsignedInt ;
    sh:maxInclusive "4294967295"^^xsd:unsignedInt ;
  ] .

# Shape for Custom Number1Filter
pinterest:CustomNumber1FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomNumber1Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomNumber1Filter/CUSTOM_NUMBER1> ;
    sh:name "custom number1" ;
    sh:node pinterest:CatalogsProductGroupUint32CriteriaShape ;
    sh:class pinterest:CatalogsProductGroupUint32Criteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Number2Filter
pinterest:CustomNumber2FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomNumber2Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomNumber2Filter/CUSTOM_NUMBER2> ;
    sh:name "custom number2" ;
    sh:node pinterest:CatalogsProductGroupUint32CriteriaShape ;
    sh:class pinterest:CatalogsProductGroupUint32Criteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Number3Filter
pinterest:CustomNumber3FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomNumber3Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomNumber3Filter/CUSTOM_NUMBER3> ;
    sh:name "custom number3" ;
    sh:node pinterest:CatalogsProductGroupUint32CriteriaShape ;
    sh:class pinterest:CatalogsProductGroupUint32Criteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Custom Number4Filter
pinterest:CustomNumber4FilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomNumber4Filter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomNumber4Filter/CUSTOM_NUMBER4> ;
    sh:name "custom number4" ;
    sh:node pinterest:CatalogsProductGroupUint32CriteriaShape ;
    sh:class pinterest:CatalogsProductGroupUint32Criteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Title Keywords Filter
pinterest:TitleKeywordsFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:TitleKeywordsFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TitleKeywordsFilter/TITLE_KEYWORDS> ;
    sh:name "title keywords" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Product Group Filters Request Any Of2
pinterest:CatalogsProductGroupFiltersRequestAnyOf2Shape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupFiltersRequestAnyOf2 ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupFiltersRequestAnyOf2/allOf> ;
    sh:name "all of" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:MinPriceFilterShape ; sh:class pinterest:MinPriceFilter ]
      [ sh:node pinterest:MaxPriceFilterShape ; sh:class pinterest:MaxPriceFilter ]
      [ sh:node pinterest:CurrencyFilterShape ; sh:class pinterest:CurrencyFilter ]
      [ sh:node pinterest:ItemIdFilterShape ; sh:class pinterest:ItemIdFilter ]
      [ sh:node pinterest:AvailabilityFilterShape ; sh:class pinterest:AvailabilityFilter ]
      [ sh:node pinterest:BrandFilterShape ; sh:class pinterest:BrandFilter ]
      [ sh:node pinterest:ConditionFilterShape ; sh:class pinterest:ConditionFilter ]
      [ sh:node pinterest:CustomLabel0FilterShape ; sh:class pinterest:CustomLabel0Filter ]
      [ sh:node pinterest:CustomLabel1FilterShape ; sh:class pinterest:CustomLabel1Filter ]
      [ sh:node pinterest:CustomLabel2FilterShape ; sh:class pinterest:CustomLabel2Filter ]
      [ sh:node pinterest:CustomLabel3FilterShape ; sh:class pinterest:CustomLabel3Filter ]
      [ sh:node pinterest:CustomLabel4FilterShape ; sh:class pinterest:CustomLabel4Filter ]
      [ sh:node pinterest:ItemGroupIdFilterShape ; sh:class pinterest:ItemGroupIdFilter ]
      [ sh:node pinterest:GenderFilterShape ; sh:class pinterest:GenderFilter ]
      [ sh:node pinterest:MediaTypeFilterShape ; sh:class pinterest:MediaTypeFilter ]
      [ sh:node pinterest:ProductType4FilterShape ; sh:class pinterest:ProductType4Filter ]
      [ sh:node pinterest:ProductType3FilterShape ; sh:class pinterest:ProductType3Filter ]
      [ sh:node pinterest:ProductType2FilterShape ; sh:class pinterest:ProductType2Filter ]
      [ sh:node pinterest:ProductType1FilterShape ; sh:class pinterest:ProductType1Filter ]
      [ sh:node pinterest:ProductType0FilterShape ; sh:class pinterest:ProductType0Filter ]
      [ sh:node pinterest:GoogleProductCategory6FilterShape ; sh:class pinterest:GoogleProductCategory6Filter ]
      [ sh:node pinterest:GoogleProductCategory5FilterShape ; sh:class pinterest:GoogleProductCategory5Filter ]
      [ sh:node pinterest:GoogleProductCategory4FilterShape ; sh:class pinterest:GoogleProductCategory4Filter ]
      [ sh:node pinterest:GoogleProductCategory3FilterShape ; sh:class pinterest:GoogleProductCategory3Filter ]
      [ sh:node pinterest:GoogleProductCategory2FilterShape ; sh:class pinterest:GoogleProductCategory2Filter ]
      [ sh:node pinterest:GoogleProductCategory1FilterShape ; sh:class pinterest:GoogleProductCategory1Filter ]
      [ sh:node pinterest:GoogleProductCategory0FilterShape ; sh:class pinterest:GoogleProductCategory0Filter ]
      [ sh:node pinterest:ProductGroupReferenceFilterShape ; sh:class pinterest:ProductGroupReferenceFilter ]
      [ sh:node pinterest:CustomNumber0FilterShape ; sh:class pinterest:CustomNumber0Filter ]
      [ sh:node pinterest:CustomNumber1FilterShape ; sh:class pinterest:CustomNumber1Filter ]
      [ sh:node pinterest:CustomNumber2FilterShape ; sh:class pinterest:CustomNumber2Filter ]
      [ sh:node pinterest:CustomNumber3FilterShape ; sh:class pinterest:CustomNumber3Filter ]
      [ sh:node pinterest:CustomNumber4FilterShape ; sh:class pinterest:CustomNumber4Filter ]
      [ sh:node pinterest:TitleKeywordsFilterShape ; sh:class pinterest:TitleKeywordsFilter ]
    ) ;
    sh:minCount 1 ;
  ] .

# Shape for Catalogs Retail Product Group Create Request
pinterest:CatalogsRetailProductGroupCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailProductGroupCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupCreateRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the retail product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupCreateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Retail catalog based product group is available only for selected partners at the moment. If you are not eligible, please use feed based one." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "RETAIL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupCreateRequest/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupCreateRequest/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupCreateRequest/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for request on catalog product group. This is a distinct schema It is not possible to create or update a Product Group with empty filters. But some automatically generated Product Groups might have empty filters." ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsProductGroupFiltersRequestAnyOf1Shape ; sh:class pinterest:CatalogsProductGroupFiltersRequestAnyOf1 ]
      [ sh:node pinterest:CatalogsProductGroupFiltersRequestAnyOf2Shape ; sh:class pinterest:CatalogsProductGroupFiltersRequestAnyOf2 ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupCreateRequest/locale> ;
    sh:name "locale" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "af-ZA" "ar-SA" "bg-BG" "bn-IN" "cs-CZ" "da-DK" "de" "el-GR" "en-AU" "en-CA" "en-GB" "en-IN" "en-US" "es-419" "es-AR" "es-ES" "es-MX" "fi-FI" "fr" "fr-CA" "he-IL" "hi-IN" "hr-HR" "hu-HU" "id-ID" "it" "ja" "ko-KR" "ms-MY" "nb-NO" "nl" "pl-PL" "pt-BR" "pt-PT" "ro-RO" "ru-RU" "sk-SK" "sv-SE" "te-IN" "th-TH" "tl-PH" "tr" "uk-UA" "vi-VN" "zh-CN" "zh-TW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupCreateRequest/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Product Group Create Request
pinterest:CatalogsHotelProductGroupCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelProductGroupCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupCreateRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the hotel product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupCreateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "HOTEL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupCreateRequest/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupCreateRequest/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for a hotel product group" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsHotelProductGroupFiltersAnyOfShape ; sh:class pinterest:CatalogsHotelProductGroupFiltersAnyOf ]
      [ sh:node pinterest:CatalogsHotelProductGroupFiltersAllOfShape ; sh:class pinterest:CatalogsHotelProductGroupFiltersAllOf ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupCreateRequest/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Product Group Filters Any Of
pinterest:CatalogsHotelProductGroupFiltersAnyOfShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelProductGroupFiltersAnyOf ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupFiltersAnyOf/anyOf> ;
    sh:name "any of" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:PriceFilterShape ; sh:class pinterest:PriceFilter ]
      [ sh:node pinterest:HotelIdFilterShape ; sh:class pinterest:HotelIdFilter ]
      [ sh:node pinterest:BrandFilterShape ; sh:class pinterest:BrandFilter ]
      [ sh:node pinterest:CustomLabel0FilterShape ; sh:class pinterest:CustomLabel0Filter ]
      [ sh:node pinterest:CustomLabel1FilterShape ; sh:class pinterest:CustomLabel1Filter ]
      [ sh:node pinterest:CustomLabel2FilterShape ; sh:class pinterest:CustomLabel2Filter ]
      [ sh:node pinterest:CustomLabel3FilterShape ; sh:class pinterest:CustomLabel3Filter ]
      [ sh:node pinterest:CustomLabel4FilterShape ; sh:class pinterest:CustomLabel4Filter ]
      [ sh:node pinterest:CountryFilterShape ; sh:class pinterest:CountryFilter ]
      [ sh:node pinterest:TitleKeywordsFilterShape ; sh:class pinterest:TitleKeywordsFilter ]
    ) ;
  ] .

# Shape for Price Filter
pinterest:PriceFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:PriceFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PriceFilter/PRICE> ;
    sh:name "price" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PriceFilter/PRICE/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PriceFilter/PRICE/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Hotel Id Filter
pinterest:HotelIdFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:HotelIdFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.HotelIdFilter/HOTEL_ID> ;
    sh:name "hotel id" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Country Filter
pinterest:CountryFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CountryFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CountryFilter/COUNTRY> ;
    sh:name "country" ;
    sh:node pinterest:CatalogsProductGroupMultipleCountriesCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleCountriesCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Product Group Multiple Countries Criteria
pinterest:CatalogsProductGroupMultipleCountriesCriteriaShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupMultipleCountriesCriteria ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleCountriesCriteria/negated> ;
    sh:name "negated" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleCountriesCriteria/values> ;
    sh:name "values" ;
    sh:datatype xsd:string ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] .

# Shape for Catalogs Hotel Product Group Filters All Of
pinterest:CatalogsHotelProductGroupFiltersAllOfShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelProductGroupFiltersAllOf ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupFiltersAllOf/allOf> ;
    sh:name "all of" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:PriceFilterShape ; sh:class pinterest:PriceFilter ]
      [ sh:node pinterest:HotelIdFilterShape ; sh:class pinterest:HotelIdFilter ]
      [ sh:node pinterest:BrandFilterShape ; sh:class pinterest:BrandFilter ]
      [ sh:node pinterest:CustomLabel0FilterShape ; sh:class pinterest:CustomLabel0Filter ]
      [ sh:node pinterest:CustomLabel1FilterShape ; sh:class pinterest:CustomLabel1Filter ]
      [ sh:node pinterest:CustomLabel2FilterShape ; sh:class pinterest:CustomLabel2Filter ]
      [ sh:node pinterest:CustomLabel3FilterShape ; sh:class pinterest:CustomLabel3Filter ]
      [ sh:node pinterest:CustomLabel4FilterShape ; sh:class pinterest:CustomLabel4Filter ]
      [ sh:node pinterest:CountryFilterShape ; sh:class pinterest:CountryFilter ]
      [ sh:node pinterest:TitleKeywordsFilterShape ; sh:class pinterest:TitleKeywordsFilter ]
    ) ;
  ] .

# Shape for Catalogs Creative Assets Product Group Create Request
pinterest:CatalogsCreativeAssetsProductGroupCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsProductGroupCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupCreateRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the creative assets product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupCreateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "CREATIVE_ASSETS" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupCreateRequest/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupCreateRequest/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for a creative assets product group" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsCreativeAssetsProductGroupFiltersAnyOfShape ; sh:class pinterest:CatalogsCreativeAssetsProductGroupFiltersAnyOf ]
      [ sh:node pinterest:CatalogsCreativeAssetsProductGroupFiltersAllOfShape ; sh:class pinterest:CatalogsCreativeAssetsProductGroupFiltersAllOf ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupCreateRequest/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Creative Assets Product Group Filters Any Of
pinterest:CatalogsCreativeAssetsProductGroupFiltersAnyOfShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsProductGroupFiltersAnyOf ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupFiltersAnyOf/anyOf> ;
    sh:name "any of" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CreativeAssetsIdFilterShape ; sh:class pinterest:CreativeAssetsIdFilter ]
      [ sh:node pinterest:CustomLabel0FilterShape ; sh:class pinterest:CustomLabel0Filter ]
      [ sh:node pinterest:CustomLabel1FilterShape ; sh:class pinterest:CustomLabel1Filter ]
      [ sh:node pinterest:CustomLabel2FilterShape ; sh:class pinterest:CustomLabel2Filter ]
      [ sh:node pinterest:CustomLabel3FilterShape ; sh:class pinterest:CustomLabel3Filter ]
      [ sh:node pinterest:CustomLabel4FilterShape ; sh:class pinterest:CustomLabel4Filter ]
      [ sh:node pinterest:GoogleProductCategory6FilterShape ; sh:class pinterest:GoogleProductCategory6Filter ]
      [ sh:node pinterest:GoogleProductCategory5FilterShape ; sh:class pinterest:GoogleProductCategory5Filter ]
      [ sh:node pinterest:GoogleProductCategory4FilterShape ; sh:class pinterest:GoogleProductCategory4Filter ]
      [ sh:node pinterest:GoogleProductCategory3FilterShape ; sh:class pinterest:GoogleProductCategory3Filter ]
      [ sh:node pinterest:GoogleProductCategory2FilterShape ; sh:class pinterest:GoogleProductCategory2Filter ]
      [ sh:node pinterest:GoogleProductCategory1FilterShape ; sh:class pinterest:GoogleProductCategory1Filter ]
      [ sh:node pinterest:GoogleProductCategory0FilterShape ; sh:class pinterest:GoogleProductCategory0Filter ]
      [ sh:node pinterest:MediaTypeFilterShape ; sh:class pinterest:MediaTypeFilter ]
      [ sh:node pinterest:TitleKeywordsFilterShape ; sh:class pinterest:TitleKeywordsFilter ]
    ) ;
  ] .

# Shape for Creative Assets Id Filter
pinterest:CreativeAssetsIdFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CreativeAssetsIdFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreativeAssetsIdFilter/CREATIVE_ASSETS_ID> ;
    sh:name "creative assets id" ;
    sh:node pinterest:CatalogsProductGroupMultipleStringCriteriaShape ;
    sh:class pinterest:CatalogsProductGroupMultipleStringCriteria ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Creative Assets Product Group Filters All Of
pinterest:CatalogsCreativeAssetsProductGroupFiltersAllOfShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsProductGroupFiltersAllOf ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupFiltersAllOf/allOf> ;
    sh:name "all of" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CreativeAssetsIdFilterShape ; sh:class pinterest:CreativeAssetsIdFilter ]
      [ sh:node pinterest:CustomLabel0FilterShape ; sh:class pinterest:CustomLabel0Filter ]
      [ sh:node pinterest:CustomLabel1FilterShape ; sh:class pinterest:CustomLabel1Filter ]
      [ sh:node pinterest:CustomLabel2FilterShape ; sh:class pinterest:CustomLabel2Filter ]
      [ sh:node pinterest:CustomLabel3FilterShape ; sh:class pinterest:CustomLabel3Filter ]
      [ sh:node pinterest:CustomLabel4FilterShape ; sh:class pinterest:CustomLabel4Filter ]
      [ sh:node pinterest:GoogleProductCategory6FilterShape ; sh:class pinterest:GoogleProductCategory6Filter ]
      [ sh:node pinterest:GoogleProductCategory5FilterShape ; sh:class pinterest:GoogleProductCategory5Filter ]
      [ sh:node pinterest:GoogleProductCategory4FilterShape ; sh:class pinterest:GoogleProductCategory4Filter ]
      [ sh:node pinterest:GoogleProductCategory3FilterShape ; sh:class pinterest:GoogleProductCategory3Filter ]
      [ sh:node pinterest:GoogleProductCategory2FilterShape ; sh:class pinterest:GoogleProductCategory2Filter ]
      [ sh:node pinterest:GoogleProductCategory1FilterShape ; sh:class pinterest:GoogleProductCategory1Filter ]
      [ sh:node pinterest:GoogleProductCategory0FilterShape ; sh:class pinterest:GoogleProductCategory0Filter ]
      [ sh:node pinterest:MediaTypeFilterShape ; sh:class pinterest:MediaTypeFilter ]
      [ sh:node pinterest:TitleKeywordsFilterShape ; sh:class pinterest:TitleKeywordsFilter ]
    ) ;
  ] .

# Shape for Keywords Request
pinterest:KeywordsRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:KeywordsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordsRequest/keywords> ;
    sh:name "keywords" ;
    sh:description "Keyword JSON array. Each array element has 3 fields" ;
    sh:node pinterest:KeywordsCommonShape ;
    sh:class pinterest:KeywordsCommon ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordsRequest/parentId> ;
    sh:name "parent id" ;
    sh:description "Keyword parent entity ID (advertiser, campaign, ad group)." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^((AG)|C)?\\d+$" ;
  ] .

# Shape for Keywords Common
pinterest:KeywordsCommonShape a sh:NodeShape ;
  sh:targetClass pinterest:KeywordsCommon ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordsCommon/bid> ;
    sh:name "bid" ;
    sh:description "</p><strong>Note:</strong> bid field has been deprecated. Input will not be set and field will return null. Keyword custom bid in microcurrency - null if inherited from parent ad group." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordsCommon/matchType> ;
    sh:name "match type" ;
    sh:description "Keyword match type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "BROAD" "PHRASE" "EXACT" "EXACT_NEGATIVE" "PHRASE_NEGATIVE" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordsCommon/value> ;
    sh:name "value" ;
    sh:description "Keyword value (120 chars max)." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Label Create Request
pinterest:LabelCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:LabelCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LabelCreateRequest/labels> ;
    sh:name "labels" ;
    sh:description "Labels that you are applying to the campaign." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelCreateRequest/labels/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelCreateRequest/labels/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LabelCreateRequest/parentId> ;
    sh:name "parent id" ;
    sh:description "Unique identifier of the asset you are labelling. Currently, you can only label campaigns." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^[C]?\\d+$" ;
  ] .

# Shape for Product Group Promotion Create Request
pinterest:ProductGroupPromotionCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductGroupPromotionCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotionCreateRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "ID of the Ad Group the Product Group Promotion belongs to." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(AG)?\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotionCreateRequest/productGroupPromotion> ;
    sh:name "product group promotion" ;
    sh:node pinterest:ProductGroupPromotionShape ;
    sh:class pinterest:ProductGroupPromotion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Product Group Promotion
pinterest:ProductGroupPromotionShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductGroupPromotion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "ID of the ad group the product group belongs to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^(AG)?\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/bidInMicroCurrency> ;
    sh:name "bid in micro currency" ;
    sh:description "The bid in micro currency." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/catalogProductGroupId> ;
    sh:name "catalog product group id" ;
    sh:description "ID of the catalogs product group that this product group promotion references" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/catalogProductGroupName> ;
    sh:name "catalog product group name" ;
    sh:description "Catalogs product group name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/collectionsHeaderType> ;
    sh:name "collections header type" ;
    sh:description "Collections ad header type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "SHOP_THIS_COLLECTION" "EXPLORE_THIS_COLLECTION" "NO_HEADER" "ON_SALE" "GET_DEAL" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/collectionsHeroDestinationUrl> ;
    sh:name "collections hero destination url" ;
    sh:description "Collections Hero Destination Url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/collectionsHeroPinId> ;
    sh:name "collections hero pin id" ;
    sh:description "Hero Pin ID if this PG is promoted as a Collection" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/creativeType> ;
    sh:name "creative type" ;
    sh:description "Ad creative type enum.\n**Note:** SHOP_THE_PIN has been deprecated. Please use COLLECTION instead." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "REGULAR" "VIDEO" "SHOPPING" "CAROUSEL" "MAX_VIDEO" "SHOP_THE_PIN" "COLLECTION" "IDEA" "SHOWCASE" "QUIZ" "COLLAGE" "MAX_WIDTH_REGULAR_COLLECTION" "MAX_WIDTH_VIDEO_COLLECTION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/customizableCtaType> ;
    sh:name "customizable cta type" ;
    sh:description "Select a call to action (CTA) to display below your ad. CTA options for catalog sales campaigns are SHOP_NOW, BOOK_NOW, ON_SALE, GET_DEAL, BUY_ONLINE_PICKUP_IN_STORE" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "SHOP_NOW" "BOOK_NOW" "ON_SALE" "GET_DEAL" "BUY_ONLINE_PICKUP_IN_STORE" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/definition> ;
    sh:name "definition" ;
    sh:description "The full product group definition path" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/gridClickType> ;
    sh:name "grid click type" ;
    sh:description "Where a user is taken after clicking on an ad in grid. </p><strong>Note:</strong>  This parameter is read-only and is set to DIRECT_TO_DESTINATION by default for direct links supported ads.  grid_click_type values provided will be ignored." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CLOSEUP" "DIRECT_TO_DESTINATION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/id> ;
    sh:name "id" ;
    sh:description "ID of the product group promotion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/included> ;
    sh:name "included" ;
    sh:description "True if the group is BIDDABLE, false if it should be EXCLUDED from serving ads." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/isGenerateBackground> ;
    sh:name "is generate background" ;
    sh:description "Enable generate backgrounds for the product group, default value is FALSE. When enabled, Pinterest will use generative AI to apply backgrounds for your product images that help drive user inspiration and engagement." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/isMdl> ;
    sh:name "is mdl" ;
    sh:description "If set to true products promoted in this product group will use the Mobile Deep Link specified in your catalog" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/parentId> ;
    sh:name "parent id" ;
    sh:description "The parent Product Group ID of this Product Group" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/preferredMediaType> ;
    sh:name "preferred media type" ;
    sh:description "Select whether to promote the image or video pin by default for items in the promoted product group. If selecting IMAGE, image will be promoted for all ads in the product group, and when selecting VIDEO, video will be promoted when present, otherwise fall back to image. This is applicable for standard shopping ads only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "VIDEO" "IMAGE" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/relativeDefinition> ;
    sh:name "relative definition" ;
    sh:description "The definition of the product group, relative to its parent - an attribute name/value pair" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/selectedImageTag> ;
    sh:name "selected image tag" ;
    sh:description "The ad image tag selected for the product group promotion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/selectedVideoTag> ;
    sh:name "selected video tag" ;
    sh:description "The ad video tag selected for the product group promotion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/slideshowCollectionsDescription> ;
    sh:name "slideshow collections description" ;
    sh:description "Slideshow Collections Description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/slideshowCollectionsTitle> ;
    sh:name "slideshow collections title" ;
    sh:description "Slideshow Collections Title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/status> ;
    sh:name "status" ;
    sh:description "Entity status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotion/trackingUrl> ;
    sh:name "tracking url" ;
    sh:description "Tracking template for proudct group promotions. 4000 limit" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Upsert Request Update
pinterest:BulkUpsertRequestUpdateShape a sh:NodeShape ;
  sh:targetClass pinterest:BulkUpsertRequestUpdate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestUpdate/adGroups> ;
    sh:name "ad groups" ;
    sh:node pinterest:AdGroupUpdateRequestShape ;
    sh:class pinterest:AdGroupUpdateRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestUpdate/ads> ;
    sh:name "ads" ;
    sh:node pinterest:AdUpdateRequestShape ;
    sh:class pinterest:AdUpdateRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestUpdate/campaigns> ;
    sh:name "campaigns" ;
    sh:node pinterest:CampaignUpdateRequestShape ;
    sh:class pinterest:CampaignUpdateRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestUpdate/catalogProductGroups> ;
    sh:name "catalog product groups" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsProductGroupUpdateRequestShape ; sh:class pinterest:CatalogsProductGroupUpdateRequest ]
      [ sh:node pinterest:CatalogsRetailProductGroupUpdateRequestShape ; sh:class pinterest:CatalogsRetailProductGroupUpdateRequest ]
      [ sh:node pinterest:CatalogsHotelProductGroupUpdateRequestShape ; sh:class pinterest:CatalogsHotelProductGroupUpdateRequest ]
      [ sh:node pinterest:CatalogsCreativeAssetsProductGroupUpdateRequestShape ; sh:class pinterest:CatalogsCreativeAssetsProductGroupUpdateRequest ]
    ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestUpdate/keywords> ;
    sh:name "keywords" ;
    sh:node pinterest:KeywordUpdateShape ;
    sh:class pinterest:KeywordUpdate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestUpdate/labels> ;
    sh:name "labels" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkUpsertRequestUpdate/labels/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkUpsertRequestUpdate/labels/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestUpdate/productGroups> ;
    sh:name "product groups" ;
    sh:node pinterest:ProductGroupPromotionUpdateRequestShape ;
    sh:class pinterest:ProductGroupPromotionUpdateRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Update Request
pinterest:CampaignUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CampaignUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/id> ;
    sh:name "id" ;
    sh:description "Campaign ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Campaign's Advertiser ID. If you want to create a campaign in a Business Account shared account you need to specify the Business Access advertiser ID in both the query path param as well as the request body schema." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/dailySpendCap> ;
    sh:name "daily spend cap" ;
    sh:description "Campaign daily spending cap. Required for Campaign Budget Optimization (CBO) campaigns. This and \"lifetime_spend_cap\" cannot be set at the same time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/endTime> ;
    sh:name "end time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the campaign stop appearing. Must occur after any end times for child ad groups. If `end_time` is not specified for the campaign, ads run indefinitely unless you update the campaign, changing their status to `paused`. Learn about <a href=\"/docs/api-features/managing-campaigns/#campaign-scheduling\" target=\"blank\">scheduling campaigns</a>.\nDifferent end times can be set for the campaign's child ad groups, but they cannot occur after an `end_time` specified for the campaign.\n- If your campaign has a child ad group with an end time specified, and if you update that campaign with an `end_time` that is earlier than that of the ad group, the campaign `end_time` will supersede the ad group `end_time`, and the request will not return an error.\n- In this scenario, if you call <a href=\"/docs/api/v5/campaigns-list\" target=\"blank\">List campaigns</a> or <a href=\"/docs/api/v5/ad_groups-list\" target=\"blank\">List ad groups</a>, the returned campaigns or ad groups are listed with the start and end times that you assigned them, regardless of supersedence." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/isAutomatedCampaign> ;
    sh:name "is automated campaign" ;
    sh:description "Specifies whether the campaign was created in the automated campaign flow" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/isFlexibleDailyBudgets> ;
    sh:name "is flexible daily budgets" ;
    sh:description "Determine if a campaign has setup for flexible daily budgets, also known as \"Pinterest Performance+ budgets\"." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/lifetimeSpendCap> ;
    sh:name "lifetime spend cap" ;
    sh:description "Campaign total spending cap. Required for Campaign Budget Optimization (CBO) campaigns. This and \"daily_spend_cap\" cannot be set at the same time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/name> ;
    sh:name "name" ;
    sh:description "Campaign name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/orderLineId> ;
    sh:name "order line id" ;
    sh:description "Order line ID that appears on the invoice." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/startTime> ;
    sh:name "start time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the campaign start to appear. Must precede any start times set for child ad groups. Defaults to current time if no time is specified. Learn about <a href=\"/docs/api-features/managing-campaigns/#campaign-scheduling\" target=\"blank\">scheduling campaigns</a>.\nDifferent start times can be set for the campaign's child ad groups, but they cannot occur before a `start_time` specified for the campaign.\n- If your campaign has a child ad group with a start time specified, and if you update that campaign with a `start_time` that is later than that of the ad group, the campaign `start_time` will supersede the ad group `start_time`, and the request will not return an error.\n- In this scenario, if you call <a href=\"/docs/api/v5/campaigns-list\" target=\"blank\">List campaigns</a> or <a href=\"/docs/api/v5/ad_groups-list\" target=\"blank\">List ad groups</a>, the returned campaigns or ad groups are listed with the start and end times that you assigned them, regardless of supersedence." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/defaultAdGroupBudgetInMicroCurrency> ;
    sh:name "default ad group budget in micro currency" ;
    sh:description "When transitioning from campaign budget optimization to non-campaign budget optimization, the default_ad_group_budget_in_micro_currency will propagate to each child ad groups daily budget. Unit is micro currency of the associated advertiser account." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/isCampaignBudgetOptimization> ;
    sh:name "is campaign budget optimization" ;
    sh:description "Determines if a campaign automatically generate ad-group level budgets given a campaign budget to maximize campaign outcome. When transitioning from non-cbo to cbo, all previous child ad group budget will be cleared." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/bidOptions> ;
    sh:name "bid options" ;
    sh:description "Object describing an update to the campaign level bid multipliers." ;
    sh:node pinterest:CampaignBidOptionsUpdateShape ;
    sh:class pinterest:CampaignBidOptionsUpdate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/isPerformancePlus> ;
    sh:name "is performance plus" ;
    sh:description "Enable Pinterest Performance+ for your campaign. To learn more, see <a href=\"https://developers.pinterest.com/docs/api-features/pinterest-performance-plus-setup/\">Pinterest Performance+ Setup</a>. This field is immutable, except only for campaigns in draft status which may update this field." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateRequest/objectiveType> ;
    sh:name "objective type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AWARENESS" "CONSIDERATION" "WEB_CONVERSION" "CATALOG_SALES" "VIDEO_COMPLETION" ) ;
  ] .

# Shape for Campaign Bid Options Update
pinterest:CampaignBidOptionsUpdateShape a sh:NodeShape ;
  sh:targetClass pinterest:CampaignBidOptionsUpdate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignBidOptionsUpdate/appTypeMultipliers> ;
    sh:name "app type multipliers" ;
    sh:description "This represents a mapping from app type targeting criteria to a bid price adjustment.\n\nMultiplier values must be between 0 and 10. A value of 10 represents a 900% increase in bid price (from $1 to $10 for example). A value of 0 will stop distribution for this item on the specified app type in `MAX_BID` ad groups in `CATALOG_SALES` campaigns. All app type multipliers must be set at the same time. If a multiplier is not provided it is assumed to be 1 (no bid adjustment)." ;
    sh:node pinterest:AppTypeMultipliersShape ;
    sh:class pinterest:AppTypeMultipliers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignBidOptionsUpdate/audienceMultipliers> ;
    sh:name "audience multipliers" ;
    sh:description "This represents a mapping from Audience ID to a bid price adjustment.\n\nMultiplier values must be between 0 and 10. A value of 10 represents a 900% increase in bid price (from $1 to $10 for example). A value of 0 will stop distribution for this item on the specified audience in `MAX_BID` ad groups in `CATALOG_SALES` campaigns. All audience multipliers must be set at the same time. If a multiplier is not provided it is assumed to be 1 (no bid adjustment)." ;
    sh:node pinterest:CampaignAudienceMultipliersShape ;
    sh:class pinterest:CampaignAudienceMultipliers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignBidOptionsUpdate/placementMultipliers> ;
    sh:name "placement multipliers" ;
    sh:description "This represents a mapping from placement to a bid price adjustment.\n\nMultiplier values must be between 0 and 10. A value of 10 represents a 900% increase in bid price (from $1 to $10 for example). A value of 0 will stop distribution for this item on the specified placement in `MAX_BID` ad groups in `CATALOG_SALES` campaigns. All placement multipliers must be set at the same time. If a multiplier is not provided it is assumed to be 1 (no bid adjustment)." ;
    sh:node pinterest:PlacementMultipliersShape ;
    sh:class pinterest:PlacementMultipliers ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignBidOptionsUpdate/updateMask> ;
    sh:name "update mask" ;
    sh:description "List of fields to update, only the fields in the list will be updated." ;
    sh:datatype xsd:string ;
    sh:in ( "AUDIENCE" "APP_TYPE" "PLACEMENT" "GENDER" "AGE_BUCKET" ) ;
  ] .

# Shape for Catalogs Product Group Update Request
pinterest:CatalogsProductGroupUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupUpdateRequest/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupUpdateRequest/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for request on catalog product group. This is a distinct schema It is not possible to create or update a Product Group with empty filters. But some automatically generated Product Groups might have empty filters." ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsProductGroupFiltersRequestAnyOf1Shape ; sh:class pinterest:CatalogsProductGroupFiltersRequestAnyOf1 ]
      [ sh:node pinterest:CatalogsProductGroupFiltersRequestAnyOf2Shape ; sh:class pinterest:CatalogsProductGroupFiltersRequestAnyOf2 ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupUpdateRequest/isFeatured> ;
    sh:name "is featured" ;
    sh:description "boolean indicator of whether the product group is being featured or not" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupUpdateRequest/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Retail Product Group Update Request
pinterest:CatalogsRetailProductGroupUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailProductGroupUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupUpdateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Retail catalog based product group is available only for selected partners at the moment. If you are not eligible, please use feed based one." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupUpdateRequest/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupUpdateRequest/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupUpdateRequest/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for request on catalog product group. This is a distinct schema It is not possible to create or update a Product Group with empty filters. But some automatically generated Product Groups might have empty filters." ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsProductGroupFiltersRequestAnyOf1Shape ; sh:class pinterest:CatalogsProductGroupFiltersRequestAnyOf1 ]
      [ sh:node pinterest:CatalogsProductGroupFiltersRequestAnyOf2Shape ; sh:class pinterest:CatalogsProductGroupFiltersRequestAnyOf2 ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupUpdateRequest/locale> ;
    sh:name "locale" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "af-ZA" "ar-SA" "bg-BG" "bn-IN" "cs-CZ" "da-DK" "de" "el-GR" "en-AU" "en-CA" "en-GB" "en-IN" "en-US" "es-419" "es-AR" "es-ES" "es-MX" "fi-FI" "fr" "fr-CA" "he-IL" "hi-IN" "hr-HR" "hu-HU" "id-ID" "it" "ja" "ko-KR" "ms-MY" "nb-NO" "nl" "pl-PL" "pt-BR" "pt-PT" "ro-RO" "ru-RU" "sk-SK" "sv-SE" "te-IN" "th-TH" "tl-PH" "tr" "uk-UA" "vi-VN" "zh-CN" "zh-TW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupUpdateRequest/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Product Group Update Request
pinterest:CatalogsHotelProductGroupUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelProductGroupUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupUpdateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "HOTEL" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupUpdateRequest/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupUpdateRequest/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for a hotel product group" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsHotelProductGroupFiltersAnyOfShape ; sh:class pinterest:CatalogsHotelProductGroupFiltersAnyOf ]
      [ sh:node pinterest:CatalogsHotelProductGroupFiltersAllOfShape ; sh:class pinterest:CatalogsHotelProductGroupFiltersAllOf ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupUpdateRequest/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Creative Assets Product Group Update Request
pinterest:CatalogsCreativeAssetsProductGroupUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsProductGroupUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupUpdateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupUpdateRequest/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupUpdateRequest/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for a creative assets product group" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsCreativeAssetsProductGroupFiltersAnyOfShape ; sh:class pinterest:CatalogsCreativeAssetsProductGroupFiltersAnyOf ]
      [ sh:node pinterest:CatalogsCreativeAssetsProductGroupFiltersAllOfShape ; sh:class pinterest:CatalogsCreativeAssetsProductGroupFiltersAllOf ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupUpdateRequest/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword Update
pinterest:KeywordUpdateShape a sh:NodeShape ;
  sh:targetClass pinterest:KeywordUpdate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordUpdate/archived> ;
    sh:name "archived" ;
    sh:description "Is keyword archived?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordUpdate/bid> ;
    sh:name "bid" ;
    sh:description "</p><strong>Note:</strong> bid field has been deprecated. Input will not be set and field will return null. Keyword custom bid in microcurrency - null if inherited from parent ad group." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordUpdate/id> ;
    sh:name "id" ;
    sh:description "Keyword ID." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Product Group Promotion Update Request
pinterest:ProductGroupPromotionUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductGroupPromotionUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotionUpdateRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "ID of the ad group the product group belongs to." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(AG)?\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotionUpdateRequest/productGroupPromotion> ;
    sh:name "product group promotion" ;
    sh:node pinterest:ProductGroupPromotionShape ;
    sh:class pinterest:ProductGroupPromotion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Bulk Upsert Response
pinterest:BulkUpsertResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:BulkUpsertResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertResponse/requestId> ;
    sh:name "request id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Upsert Status Response
pinterest:BulkUpsertStatusResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:BulkUpsertStatusResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertStatusResponse/resultUrl> ;
    sh:name "result url" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertStatusResponse/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "RUNNING" "SUCCEEDED" "FAILED" ) ;
  ] .

# Shape for Asset Id Permissions
pinterest:AssetIdPermissionsShape a sh:NodeShape ;
  sh:targetClass pinterest:AssetIdPermissions ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetIdPermissions/assetGroupInfo> ;
    sh:name "asset group info" ;
    sh:node pinterest:AssetGroupBindingShape ;
    sh:class pinterest:AssetGroupBinding ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetIdPermissions/assetId> ;
    sh:name "asset id" ;
    sh:description "Unique identifier of a business asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:minLength 1 ;
    sh:maxLength 20 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetIdPermissions/assetType> ;
    sh:name "asset type" ;
    sh:description "Type of asset. Currently we only support AD_ACCOUNT, PROFILE, ASSET_GROUP and CATALOG." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetIdPermissions/permissions> ;
    sh:name "permissions" ;
    sh:description "Permission levels member or partner has on an asset." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Asset Group Binding
pinterest:AssetGroupBindingShape a sh:NodeShape ;
  sh:targetClass pinterest:AssetGroupBinding ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetGroupBinding/adAccountsIds> ;
    sh:name "ad accounts ids" ;
    sh:description "A list of ad account IDs under the asset group" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetGroupBinding/assetGroupDescription> ;
    sh:name "asset group description" ;
    sh:description "Asset group description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetGroupBinding/assetGroupName> ;
    sh:name "asset group name" ;
    sh:description "Asset Group name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetGroupBinding/assetGroupTypes> ;
    sh:name "asset group types" ;
    sh:description "Asset group types" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetGroupBinding/catalogsIds> ;
    sh:name "catalogs ids" ;
    sh:description "A list of catalog IDs under asset group" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetGroupBinding/createdBy> ;
    sh:name "created by" ;
    sh:description "The data of the user that created the asset group." ;
    sh:node pinterest:BusinessAccessUserSummaryShape ;
    sh:class pinterest:BusinessAccessUserSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetGroupBinding/createdTime> ;
    sh:name "created time" ;
    sh:description "The creation time of the asset group" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetGroupBinding/id> ;
    sh:name "id" ;
    sh:description "Asset Group ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetGroupBinding/owner> ;
    sh:name "owner" ;
    sh:description "The data of the business that owns the asset group." ;
    sh:node pinterest:BusinessAccessUserSummaryShape ;
    sh:class pinterest:BusinessAccessUserSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetGroupBinding/profilesIds> ;
    sh:name "profiles ids" ;
    sh:description "A list of profile IDs under asset group" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AssetGroupBinding/updatedTime> ;
    sh:name "updated time" ;
    sh:description "The last update time of the asset group" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Update Partner Asset Access Body
pinterest:UpdatePartnerAssetAccessBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:UpdatePartnerAssetAccessBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatePartnerAssetAccessBody/accesses> ;
    sh:name "accesses" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdatePartnerAssetAccessBody/accesses/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdatePartnerAssetAccessBody/accesses/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 50 ;
  ] .

# Shape for Delete Partner Asset Access Body
pinterest:DeletePartnerAssetAccessBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:DeletePartnerAssetAccessBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeletePartnerAssetAccessBody/accesses> ;
    sh:name "accesses" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeletePartnerAssetAccessBody/accesses/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeletePartnerAssetAccessBody/accesses/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 50 ;
  ] .

# Shape for Delete Partner Assets Result
pinterest:DeletePartnerAssetsResultShape a sh:NodeShape ;
  sh:targetClass pinterest:DeletePartnerAssetsResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeletePartnerAssetsResult/assetId> ;
    sh:name "asset id" ;
    sh:description "Unique identifier of a business asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeletePartnerAssetsResult/assetType> ;
    sh:name "asset type" ;
    sh:description "Type of asset. Currently we only support AD_ACCOUNT, PROFILE, ASSET_GROUP and CATALOG." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeletePartnerAssetsResult/isSharedPartner> ;
    sh:name "is shared partner" ;
    sh:description "If is_shared_partner=FALSE, you terminated a partner's asset access to your business asset.<br> If is_shared_partner=TRUE, you terminated your asset access to your partner's business asset." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeletePartnerAssetsResult/partnerId> ;
    sh:name "partner id" ;
    sh:description "Unique identifier of a business partner." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeletePartnerAssetsResult/permissions> ;
    sh:name "permissions" ;
    sh:description "Permission levels member or partner has on an asset." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Delete Partner Assets Results Response Array
pinterest:DeletePartnerAssetsResultsResponseArrayShape a sh:NodeShape ;
  sh:targetClass pinterest:DeletePartnerAssetsResultsResponseArray ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeletePartnerAssetsResultsResponseArray/items> ;
    sh:name "items" ;
    sh:description "List of terminated asset access." ;
    sh:node pinterest:DeletePartnerAssetsResultShape ;
    sh:class pinterest:DeletePartnerAssetsResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Update Member Asset Access Body
pinterest:UpdateMemberAssetAccessBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:UpdateMemberAssetAccessBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateMemberAssetAccessBody/accesses> ;
    sh:name "accesses" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetAccessBody/accesses/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetAccessBody/accesses/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 50 ;
  ] .

# Shape for Create Asset Group Body
pinterest:CreateAssetGroupBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:CreateAssetGroupBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetGroupBody/assetGroupDescription> ;
    sh:name "asset group description" ;
    sh:description "Asset group description" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetGroupBody/assetGroupName> ;
    sh:name "asset group name" ;
    sh:description "Asset Group name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetGroupBody/assetGroupTypes> ;
    sh:name "asset group types" ;
    sh:description "Asset Group Types. Note: The asset group types are used for user reference and categorization purposes only and do not impact the functionality of the asset group." ;
    sh:datatype xsd:string ;
    sh:in ( "BRAND" "LOCATION_OR_LANGUAGE" "PRODUCT_LINE" "OTHER" ) ;
  ] .

# Shape for Create Asset Group Response
pinterest:CreateAssetGroupResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CreateAssetGroupResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetGroupResponse/assetGroup> ;
    sh:name "asset group" ;
    sh:node pinterest:AssetGroupBindingShape ;
    sh:class pinterest:AssetGroupBinding ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Delete Member Access Result
pinterest:DeleteMemberAccessResultShape a sh:NodeShape ;
  sh:targetClass pinterest:DeleteMemberAccessResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeleteMemberAccessResult/assetId> ;
    sh:name "asset id" ;
    sh:description "Unique identifier of the business asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeleteMemberAccessResult/memberId> ;
    sh:name "member id" ;
    sh:description "Unique identifier of the business member." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Delete Member Access Results Response Array
pinterest:DeleteMemberAccessResultsResponseArrayShape a sh:NodeShape ;
  sh:targetClass pinterest:DeleteMemberAccessResultsResponseArray ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeleteMemberAccessResultsResponseArray/items> ;
    sh:name "items" ;
    sh:description "List of member asset permissions that were deleted." ;
    sh:node pinterest:DeleteMemberAccessResultShape ;
    sh:class pinterest:DeleteMemberAccessResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Update Asset Group Body
pinterest:UpdateAssetGroupBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:UpdateAssetGroupBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateAssetGroupBody/assetGroupsToUpdate> ;
    sh:name "asset groups to update" ;
    sh:description "A list of asset groups and the data that will be used to update them." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupBody/assetGroupsToUpdate/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupBody/assetGroupsToUpdate/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Update Asset Group Response
pinterest:UpdateAssetGroupResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:UpdateAssetGroupResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateAssetGroupResponse/exceptions> ;
    sh:name "exceptions" ;
    sh:description "A list of errors associated with the asset groups. Will be returned if there is an error." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupResponse/exceptions/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupResponse/exceptions/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateAssetGroupResponse/updatedAssetGroups> ;
    sh:name "updated asset groups" ;
    sh:description "A list of successfully edited asset groups." ;
    sh:node pinterest:AssetGroupBindingShape ;
    sh:class pinterest:AssetGroupBinding ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Delete Asset Group Body
pinterest:DeleteAssetGroupBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:DeleteAssetGroupBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeleteAssetGroupBody/assetGroupsToDelete> ;
    sh:name "asset groups to delete" ;
    sh:description "List of ids of asset groups to be deleted" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 50 ;
  ] .

# Shape for Delete Asset Group Response
pinterest:DeleteAssetGroupResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:DeleteAssetGroupResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeleteAssetGroupResponse/deletedAssetGroups> ;
    sh:name "deleted asset groups" ;
    sh:description "A list of ids of successfully deleted asset groups." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeleteAssetGroupResponse/exceptions> ;
    sh:name "exceptions" ;
    sh:description "A list of errors associated with the asset groups. Will be returned if there is an error." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteAssetGroupResponse/exceptions/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteAssetGroupResponse/exceptions/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Update Member Assets Results Response Array
pinterest:UpdateMemberAssetsResultsResponseArrayShape a sh:NodeShape ;
  sh:targetClass pinterest:UpdateMemberAssetsResultsResponseArray ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateMemberAssetsResultsResponseArray/items> ;
    sh:name "items" ;
    sh:description "List of assigned/updated member asset access.\nIf there is an error, an exception object will be returned. If the action was successfully completed, a response object will be returned." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetsResultsResponseArray/items/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetsResultsResponseArray/items/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Users For Individual Asset Response
pinterest:UsersForIndividualAssetResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:UsersForIndividualAssetResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UsersForIndividualAssetResponse/assetId> ;
    sh:name "asset id" ;
    sh:description "Unique identifier of a business asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UsersForIndividualAssetResponse/memberId> ;
    sh:name "member id" ;
    sh:description "Unique identifier of the business member with asset access." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UsersForIndividualAssetResponse/permissions> ;
    sh:name "permissions" ;
    sh:description "Permission levels member or partner has on an asset." ;
    sh:datatype xsd:string ;
  ] .

# Shape for User Single Asset Binding
pinterest:UserSingleAssetBindingShape a sh:NodeShape ;
  sh:targetClass pinterest:UserSingleAssetBinding ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserSingleAssetBinding/permissions> ;
    sh:name "permissions" ;
    sh:description "Permission levels member or partner has on an asset." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserSingleAssetBinding/user> ;
    sh:name "user" ;
    sh:description "Metadata of the member/partner that has access to the asset." ;
    sh:node pinterest:BusinessAccessUserSummaryShape ;
    sh:class pinterest:BusinessAccessUserSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Update Partner Assets Result
pinterest:UpdatePartnerAssetsResultShape a sh:NodeShape ;
  sh:targetClass pinterest:UpdatePartnerAssetsResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatePartnerAssetsResult/assetId> ;
    sh:name "asset id" ;
    sh:description "Unique identifier of a business asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatePartnerAssetsResult/assetType> ;
    sh:name "asset type" ;
    sh:description "Type of asset. Currently we only support AD_ACCOUNT, PROFILE, ASSET_GROUP and CATALOG." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatePartnerAssetsResult/partnerId> ;
    sh:name "partner id" ;
    sh:description "Unique identifier of a business partner." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatePartnerAssetsResult/permissions> ;
    sh:name "permissions" ;
    sh:description "Permission levels member or partner has on an asset." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Update Partner Assets Results Response Array
pinterest:UpdatePartnerAssetsResultsResponseArrayShape a sh:NodeShape ;
  sh:targetClass pinterest:UpdatePartnerAssetsResultsResponseArray ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatePartnerAssetsResultsResponseArray/items> ;
    sh:name "items" ;
    sh:description "List of assigned/updated partner asset access." ;
    sh:node pinterest:UpdatePartnerAssetsResultShape ;
    sh:class pinterest:UpdatePartnerAssetsResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Auth Respond Invites Body
pinterest:AuthRespondInvitesBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:AuthRespondInvitesBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AuthRespondInvitesBody/invites> ;
    sh:name "invites" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AuthRespondInvitesBody/invites/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AuthRespondInvitesBody/invites/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 100 ;
  ] .

# Shape for Base Invite Data Response
pinterest:BaseInviteDataResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:BaseInviteDataResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BaseInviteDataResponse/id> ;
    sh:name "id" ;
    sh:description "Unique identifier of the invite/request." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BaseInviteDataResponse/inviteData> ;
    sh:name "invite data" ;
    sh:description "Metadata for the invite/request." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BaseInviteDataResponse/inviteData/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BaseInviteDataResponse/inviteData/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BaseInviteDataResponse/isReceivedInvite> ;
    sh:name "is received invite" ;
    sh:description "Indicates whether the invite/request was received." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BaseInviteDataResponse/user> ;
    sh:name "user" ;
    sh:description "Metadata for the member/partner that was sent the invite/request." ;
    sh:node pinterest:BusinessAccessUserSummaryShape ;
    sh:class pinterest:BusinessAccessUserSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Cancel Invites Body
pinterest:CancelInvitesBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:CancelInvitesBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CancelInvitesBody/inviteIds> ;
    sh:name "invite ids" ;
    sh:description "List of invite/request ids to be cancelled" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 50 ;
  ] .

# Shape for Create Asset Access Request Body
pinterest:CreateAssetAccessRequestBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:CreateAssetAccessRequestBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetAccessRequestBody/assetRequests> ;
    sh:name "asset requests" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestBody/assetRequests/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestBody/assetRequests/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 100 ;
  ] .

# Shape for Create Asset Access Request Response
pinterest:CreateAssetAccessRequestResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CreateAssetAccessRequestResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetAccessRequestResponse/exceptions> ;
    sh:name "exceptions" ;
    sh:description "A list of errors associated with the asset access requests. Will be returned if there is an error." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/exceptions/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/exceptions/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetAccessRequestResponse/invites> ;
    sh:name "invites" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/invites/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/invites/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Create Invites Results Response Array
pinterest:CreateInvitesResultsResponseArrayShape a sh:NodeShape ;
  sh:targetClass pinterest:CreateInvitesResultsResponseArray ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateInvitesResultsResponseArray/items> ;
    sh:name "items" ;
    sh:description "List of invite/request creation status. If there is an error, an exception object will be returned. If the action was successfully completed, an invite object will be returned." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateInvitesResultsResponseArray/items/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateInvitesResultsResponseArray/items/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Create Membership Or Partnership Invites Body
pinterest:CreateMembershipOrPartnershipInvitesBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:CreateMembershipOrPartnershipInvitesBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMembershipOrPartnershipInvitesBody/businessRole> ;
    sh:name "business role" ;
    sh:description "The business access level to grant member/partner. Note, values are case-sensitive.\n- EMPLOYEE: Can only view and access assets you assign them to. They cannot see details about other employees, partners, or other assets.\n- BIZ_ADMIN: Have full control of roles and can add employees and partners as well as grant asset access.\n- PARTNER: Can only view and access assets you assign them to/or they assign to you." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "EMPLOYEE" "BIZ_ADMIN" "PARTNER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMembershipOrPartnershipInvitesBody/inviteType> ;
    sh:name "invite type" ;
    sh:description "The type of invite. <br>'MEMBER_INVITE' is to invite a member to access your business assets. <br>'PARTNER INVITE' is to invite a partner to access your business assets. <br>'PARTNER_REQUEST' is to request access a partner's business assets." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "MEMBER_INVITE" "PARTNER_INVITE" "PARTNER_REQUEST" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMembershipOrPartnershipInvitesBody/members> ;
    sh:name "members" ;
    sh:description "A list of usernames, emails, or a mix of them. Should be used if invite_type is MEMBER_INVITE" ;
    sh:datatype xsd:string ;
    sh:maxCount 50 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMembershipOrPartnershipInvitesBody/partners> ;
    sh:name "partners" ;
    sh:description "A list of partner_id. Should be used if invite_type is PARTNER_INVITE or PARTNER_REQUEST" ;
    sh:datatype xsd:string ;
    sh:maxCount 50 ;
  ] ;
  sh:or (
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMembershipOrPartnershipInvitesBody/members> ; sh:maxCount 0 ] ]
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMembershipOrPartnershipInvitesBody/members> ; sh:minCount 1 ] ]
  ) ;
  sh:or (
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMembershipOrPartnershipInvitesBody/partners> ; sh:maxCount 0 ] ]
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMembershipOrPartnershipInvitesBody/partners> ; sh:minCount 1 ] ]
  ) .

# Shape for Invite Assets Summary
pinterest:InviteAssetsSummaryShape a sh:NodeShape ;
  sh:targetClass pinterest:InviteAssetsSummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteAssetsSummary/adAccounts> ;
    sh:name "ad accounts" ;
    sh:description "List of ad account IDs and respective permission levels that will be assigned." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/adAccounts/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/adAccounts/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteAssetsSummary/profiles> ;
    sh:name "profiles" ;
    sh:description "List of profile IDs and respective permission levels that will be assigned." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/profiles/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/profiles/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Invite Exception Response
pinterest:InviteExceptionResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:InviteExceptionResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteExceptionResponse/code> ;
    sh:name "code" ;
    sh:description "Error code associated with the error in performing the action on the invite/request." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteExceptionResponse/inviteOrRequestId> ;
    sh:name "invite or request id" ;
    sh:description "Unique identifier of the invite/request." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteExceptionResponse/message> ;
    sh:name "message" ;
    sh:description "Error message associated with the error in performing the action on the invite/request." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteExceptionResponse/usersOrPartnerIds> ;
    sh:name "users or partner ids" ;
    sh:description "A list of users' usernames or emails OR a list of partner ids that caused the error." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Invite Business Role Binding
pinterest:InviteBusinessRoleBindingShape a sh:NodeShape ;
  sh:targetClass pinterest:InviteBusinessRoleBinding ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteBusinessRoleBinding/id> ;
    sh:name "id" ;
    sh:description "Unique identifier of the invite/request." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteBusinessRoleBinding/inviteData> ;
    sh:name "invite data" ;
    sh:description "Metadata for the invite/request." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteBusinessRoleBinding/inviteData/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteBusinessRoleBinding/inviteData/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteBusinessRoleBinding/isReceivedInvite> ;
    sh:name "is received invite" ;
    sh:description "Indicates whether the invite/request was received." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteBusinessRoleBinding/user> ;
    sh:name "user" ;
    sh:description "Metadata for the member/partner that was sent the invite/request." ;
    sh:node pinterest:BusinessAccessUserSummaryShape ;
    sh:class pinterest:BusinessAccessUserSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteBusinessRoleBinding/createdByBusinessId> ;
    sh:name "created by business id" ;
    sh:description "Unique identifier for the business that created the invite/request." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteBusinessRoleBinding/createdByUserId> ;
    sh:name "created by user id" ;
    sh:description "Unique identifier for the user that created the invite/request." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Invite Response
pinterest:InviteResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:InviteResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteResponse/id> ;
    sh:name "id" ;
    sh:description "Unique identifier of the invite/request." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteResponse/inviteData> ;
    sh:name "invite data" ;
    sh:description "Metadata for the invite/request." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteResponse/inviteData/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteResponse/inviteData/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteResponse/isReceivedInvite> ;
    sh:name "is received invite" ;
    sh:description "Indicates whether the invite/request was received." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteResponse/user> ;
    sh:name "user" ;
    sh:description "Metadata for the member/partner that was sent the invite/request." ;
    sh:node pinterest:BusinessAccessUserSummaryShape ;
    sh:class pinterest:BusinessAccessUserSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteResponse/assetsSummary> ;
    sh:name "assets summary" ;
    sh:description "Ad accounts and profiles the member/partner will be granted access to with this invite/request." ;
    sh:node pinterest:InviteAssetsSummaryShape ;
    sh:class pinterest:InviteAssetsSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteResponse/businessRoles> ;
    sh:name "business roles" ;
    sh:description "The access level a user would be granted on the business if the invite/request is accepted. This can be EMPLOYEE, BIZ_ADMIN, or PARTNER." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteResponse/createdByBusiness> ;
    sh:name "created by business" ;
    sh:description "Metadata for the business that created the invite/request." ;
    sh:node pinterest:BusinessAccessUserSummaryShape ;
    sh:class pinterest:BusinessAccessUserSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteResponse/createdByUser> ;
    sh:name "created by user" ;
    sh:description "Metadata for the user that created the invite/request." ;
    sh:node pinterest:BusinessAccessUserSummaryShape ;
    sh:class pinterest:BusinessAccessUserSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteResponse/createdTime> ;
    sh:name "created time" ;
    sh:description "The time the invite/request was created. Returned in milliseconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Respond To Invites Response Array
pinterest:RespondToInvitesResponseArrayShape a sh:NodeShape ;
  sh:targetClass pinterest:RespondToInvitesResponseArray ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.RespondToInvitesResponseArray/items> ;
    sh:name "items" ;
    sh:description "List of invite/request accept/decline status. If there is an error, an exception object will be returned. If the invite/request was successfully accepted/declined, an invite object will be returned." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RespondToInvitesResponseArray/items/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RespondToInvitesResponseArray/items/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Create Asset Invites Request Item
pinterest:CreateAssetInvitesRequestItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CreateAssetInvitesRequestItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions> ;
    sh:name "asset id to permissions" ;
    sh:description "An object mapping asset ids to lists of business permissions. This can be used to setting/requesting permissions on various assets. If accepting an invite or request, this object would be used to grant asset permissions to the member or partner.\n" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetInvitesRequestItem/inviteId> ;
    sh:name "invite id" ;
    sh:description "Unique identifier of an invite." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetInvitesRequestItem/inviteType> ;
    sh:name "invite type" ;
    sh:description "The type of invite. <br>'MEMBER_INVITE' is to invite a member to access your business assets. <br>'PARTNER INVITE' is to invite a partner to access your business assets. <br>'PARTNER_REQUEST' is to request access a partner's business assets." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "MEMBER_INVITE" "PARTNER_INVITE" "PARTNER_REQUEST" ) ;
  ] .

# Shape for Create Asset Invites Request
pinterest:CreateAssetInvitesRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CreateAssetInvitesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetInvitesRequest/invites> ;
    sh:name "invites" ;
    sh:node pinterest:CreateAssetInvitesRequestItemShape ;
    sh:class pinterest:CreateAssetInvitesRequestItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 50 ;
  ] .

# Shape for Update Invites Results Response Array
pinterest:UpdateInvitesResultsResponseArrayShape a sh:NodeShape ;
  sh:targetClass pinterest:UpdateInvitesResultsResponseArray ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateInvitesResultsResponseArray/items> ;
    sh:name "items" ;
    sh:description "List of invite/Request action status. If there is an error, an exception object will be returned. If the action was successfully completed, an invite object will be returned." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateInvitesResultsResponseArray/items/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateInvitesResultsResponseArray/items/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Delete Invites Results Response Array
pinterest:DeleteInvitesResultsResponseArrayShape a sh:NodeShape ;
  sh:targetClass pinterest:DeleteInvitesResultsResponseArray ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeleteInvitesResultsResponseArray/items> ;
    sh:name "items" ;
    sh:description "List of invite/Request deletion status. If there is an error, an exception object will be returned. If the invite/request was successfully cancelled, an invite object will be returned for the invite that was cancelled." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteInvitesResultsResponseArray/items/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteInvitesResultsResponseArray/items/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Business Member Assets Summary
pinterest:BusinessMemberAssetsSummaryShape a sh:NodeShape ;
  sh:targetClass pinterest:BusinessMemberAssetsSummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessMemberAssetsSummary/adAccounts> ;
    sh:name "ad accounts" ;
    sh:description "List of ad account IDs and respective permission levels." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/adAccounts/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/adAccounts/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessMemberAssetsSummary/profiles> ;
    sh:name "profiles" ;
    sh:description "List of profile IDs and respective permission levels." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/profiles/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/profiles/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Update Member Result
pinterest:UpdateMemberResultShape a sh:NodeShape ;
  sh:targetClass pinterest:UpdateMemberResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateMemberResult/businessRole> ;
    sh:name "business role" ;
    sh:description "The access level a member has to the business. Values are case-sensitive.\n<br> - EMPLOYEE: Can only view and access assets you assign to them.\nThey cannot see details about other employees, partners, or other assets.\n<br> - BIZ_ADMIN: Have full control of roles and can add employees and partners as well as grant asset access." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateMemberResult/memberId> ;
    sh:name "member id" ;
    sh:description "Unique identifier of the business member." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Update Member Results Response Array
pinterest:UpdateMemberResultsResponseArrayShape a sh:NodeShape ;
  sh:targetClass pinterest:UpdateMemberResultsResponseArray ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateMemberResultsResponseArray/items> ;
    sh:name "items" ;
    sh:description "List of members with updated business access role." ;
    sh:node pinterest:UpdateMemberResultShape ;
    sh:class pinterest:UpdateMemberResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Update Member Business Role Body
pinterest:UpdateMemberBusinessRoleBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:UpdateMemberBusinessRoleBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateMemberBusinessRoleBody/businessRole> ;
    sh:name "business role" ;
    sh:description "The access level a member has to the business. Values are case-sensitive.\n<br> - EMPLOYEE: Can only view and access assets you assign to them.\nThey cannot see details about other employees, partners, or other assets.\n<br> - BIZ_ADMIN: Have full control of roles and can add employees and partners as well as grant asset access." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "EMPLOYEE" "BIZ_ADMIN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateMemberBusinessRoleBody/memberId> ;
    sh:name "member id" ;
    sh:description "Unique identifier of the member" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:maxLength 25 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Deleted Members Response
pinterest:DeletedMembersResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:DeletedMembersResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeletedMembersResponse/deletedMembers> ;
    sh:name "deleted members" ;
    sh:description "List of members whose business membership have been terminated." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Delete Partners Request
pinterest:DeletePartnersRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:DeletePartnersRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeletePartnersRequest/partnerIds> ;
    sh:name "partner ids" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 50 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeletePartnersRequest/partnerType> ;
    sh:name "partner type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "INTERNAL" "EXTERNAL" ) ;
  ] .

# Shape for Delete Partners Response
pinterest:DeletePartnersResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:DeletePartnersResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeletePartnersResponse/deletedPartners> ;
    sh:name "deleted partners" ;
    sh:description "List of partners whose business partnership have been terminated." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Members To Delete Body
pinterest:MembersToDeleteBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:MembersToDeleteBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MembersToDeleteBody/members> ;
    sh:name "members" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MembersToDeleteBody/members/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MembersToDeleteBody/members/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 50 ;
  ] .

# Shape for User Business Role Binding
pinterest:UserBusinessRoleBindingShape a sh:NodeShape ;
  sh:targetClass pinterest:UserBusinessRoleBinding ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserBusinessRoleBinding/assetsSummary> ;
    sh:name "assets summary" ;
    sh:node pinterest:BusinessMemberAssetsSummaryShape ;
    sh:class pinterest:BusinessMemberAssetsSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserBusinessRoleBinding/businessRoles> ;
    sh:name "business roles" ;
    sh:description "The access level a user has on the business. This can be EMPLOYEE, BIZ_ADMIN, or PARTNER." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserBusinessRoleBinding/createdByBusiness> ;
    sh:name "created by business" ;
    sh:description "Metadata for the business that created the business relationship." ;
    sh:node pinterest:BusinessAccessUserSummaryShape ;
    sh:class pinterest:BusinessAccessUserSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserBusinessRoleBinding/createdByUser> ;
    sh:name "created by user" ;
    sh:description "Metadata for the user that created the business relationship." ;
    sh:node pinterest:BusinessAccessUserSummaryShape ;
    sh:class pinterest:BusinessAccessUserSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserBusinessRoleBinding/createdTime> ;
    sh:name "created time" ;
    sh:description "The time the business relationship was created. Returned in milliseconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserBusinessRoleBinding/id> ;
    sh:name "id" ;
    sh:description "Unique identifier of the business member/business partner/employer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserBusinessRoleBinding/isSharedPartner> ;
    sh:name "is shared partner" ;
    sh:description "This field is only relevant when business_role=\"PARTNER\".\n<br>If is_shared_partner=FALSE, the partner can access your business assets. If assets_summary\nis not empty, the assets listed are your business assets the partner has access to.\n<br>If is_shared_partner=TRUE, you can access the partner's business asset. If assets_summary\nis not empty, the assets listed are the partner's business assets you have access to." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserBusinessRoleBinding/user> ;
    sh:name "user" ;
    sh:description "Metadata for the business member/business partner/employer." ;
    sh:node pinterest:BusinessAccessUserSummaryShape ;
    sh:class pinterest:BusinessAccessUserSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Pin Analytics
pinterest:AdPinAnalyticsShape a sh:NodeShape ;
  sh:targetClass pinterest:AdPinAnalytics ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdPinAnalytics/DATE> ;
    sh:name "date" ;
    sh:description "Current metrics date. Only returned when granularity is a time-based value (`DAY`, `HOUR`, `WEEK`, `MONTH`)" ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdPinAnalytics/PIN_ID> ;
    sh:name "pin id" ;
    sh:description "The ID of the pin that the metric belongs to." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Campaign Create Response
pinterest:CampaignCreateResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CampaignCreateResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponse/items> ;
    sh:name "items" ;
    sh:node pinterest:CampaignCreateResponseItemShape ;
    sh:class pinterest:CampaignCreateResponseItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Create Response Item
pinterest:CampaignCreateResponseItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CampaignCreateResponseItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseItem/data> ;
    sh:name "data" ;
    sh:node pinterest:CampaignCreateResponseDataShape ;
    sh:class pinterest:CampaignCreateResponseData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseItem/exceptions> ;
    sh:name "exceptions" ;
    sh:node pinterest:ExceptionShape ;
    sh:class pinterest:Exception ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Create Response Data
pinterest:CampaignCreateResponseDataShape a sh:NodeShape ;
  sh:targetClass pinterest:CampaignCreateResponseData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/id> ;
    sh:name "id" ;
    sh:description "Campaign ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Campaign's Advertiser ID. If you want to create a campaign in a Business Account shared account you need to specify the Business Access advertiser ID in both the query path param as well as the request body schema." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/dailySpendCap> ;
    sh:name "daily spend cap" ;
    sh:description "Campaign daily spending cap. Required for Campaign Budget Optimization (CBO) campaigns. This and \"lifetime_spend_cap\" cannot be set at the same time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/endTime> ;
    sh:name "end time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the campaign stop appearing. Must occur after any end times for child ad groups. If `end_time` is not specified for the campaign, ads run indefinitely unless you update the campaign, changing their status to `paused`. Learn about <a href=\"/docs/api-features/managing-campaigns/#campaign-scheduling\" target=\"blank\">scheduling campaigns</a>.\nDifferent end times can be set for the campaign's child ad groups, but they cannot occur after an `end_time` specified for the campaign.\n- If your campaign has a child ad group with an end time specified, and if you update that campaign with an `end_time` that is earlier than that of the ad group, the campaign `end_time` will supersede the ad group `end_time`, and the request will not return an error.\n- In this scenario, if you call <a href=\"/docs/api/v5/campaigns-list\" target=\"blank\">List campaigns</a> or <a href=\"/docs/api/v5/ad_groups-list\" target=\"blank\">List ad groups</a>, the returned campaigns or ad groups are listed with the start and end times that you assigned them, regardless of supersedence." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/isAutomatedCampaign> ;
    sh:name "is automated campaign" ;
    sh:description "Specifies whether the campaign was created in the automated campaign flow" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/isFlexibleDailyBudgets> ;
    sh:name "is flexible daily budgets" ;
    sh:description "Determine if a campaign has setup for flexible daily budgets, also known as \"Pinterest Performance+ budgets\"." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/lifetimeSpendCap> ;
    sh:name "lifetime spend cap" ;
    sh:description "Campaign total spending cap. Required for Campaign Budget Optimization (CBO) campaigns. This and \"daily_spend_cap\" cannot be set at the same time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/name> ;
    sh:name "name" ;
    sh:description "Campaign name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/orderLineId> ;
    sh:name "order line id" ;
    sh:description "Order line ID that appears on the invoice." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/startTime> ;
    sh:name "start time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the campaign start to appear. Must precede any start times set for child ad groups. Defaults to current time if no time is specified. Learn about <a href=\"/docs/api-features/managing-campaigns/#campaign-scheduling\" target=\"blank\">scheduling campaigns</a>.\nDifferent start times can be set for the campaign's child ad groups, but they cannot occur before a `start_time` specified for the campaign.\n- If your campaign has a child ad group with a start time specified, and if you update that campaign with a `start_time` that is later than that of the ad group, the campaign `start_time` will supersede the ad group `start_time`, and the request will not return an error.\n- In this scenario, if you call <a href=\"/docs/api/v5/campaigns-list\" target=\"blank\">List campaigns</a> or <a href=\"/docs/api/v5/ad_groups-list\" target=\"blank\">List ad groups</a>, the returned campaigns or ad groups are listed with the start and end times that you assigned them, regardless of supersedence." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/bidOptions> ;
    sh:name "bid options" ;
    sh:description "Object describing the campaign level bid multipliers." ;
    sh:node pinterest:CampaignBidOptionsShape ;
    sh:class pinterest:CampaignBidOptions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/createdTime> ;
    sh:name "created time" ;
    sh:description "Campaign creation time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/isCampaignBudgetOptimization> ;
    sh:name "is campaign budget optimization" ;
    sh:description "Determines if a campaign automatically generate ad-group level budgets given a campaign budget to maximize campaign outcome. When transitioning from non-cbo to cbo, all previous child ad group budget will be cleared." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/isPerformancePlus> ;
    sh:name "is performance plus" ;
    sh:description "Enable Pinterest Performance+ for your campaign. To learn more, see <a href=\"https://developers.pinterest.com/docs/api-features/pinterest-performance-plus-setup/\">Pinterest Performance+ Setup</a>." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/objectiveType> ;
    sh:name "objective type" ;
    sh:description "Intended result of the campaign. \nYou can only update objectives for draft campaigns.\n`WEB_SESSIONS` and `VIDEO_VIEW` objectives are deprecated. We recommend using `VIDEO_COMPLETION` as an alternative for the latter. " ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AWARENESS" "CONSIDERATION" "WEB_CONVERSION" "CATALOG_SALES" "VIDEO_COMPLETION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/summaryStatus> ;
    sh:name "summary status" ;
    sh:description "Summary status for campaign" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "RUNNING" "PAUSED" "NOT_STARTED" "COMPLETED" "ADVERTISER_DISABLED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/type> ;
    sh:name "type" ;
    sh:description "Always \"campaign\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignCreateResponseData/updatedTime> ;
    sh:name "updated time" ;
    sh:description "UTC timestamp. Last update time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Response
pinterest:CampaignShape a sh:NodeShape ;
  sh:targetClass pinterest:Campaign ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/id> ;
    sh:name "id" ;
    sh:description "Campaign ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Campaign's Advertiser ID. If you want to create a campaign in a Business Account shared account you need to specify the Business Access advertiser ID in both the query path param as well as the request body schema." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/dailySpendCap> ;
    sh:name "daily spend cap" ;
    sh:description "Campaign daily spending cap. Required for Campaign Budget Optimization (CBO) campaigns. This and \"lifetime_spend_cap\" cannot be set at the same time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/endTime> ;
    sh:name "end time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the campaign stop appearing. Must occur after any end times for child ad groups. If `end_time` is not specified for the campaign, ads run indefinitely unless you update the campaign, changing their status to `paused`. Learn about <a href=\"/docs/api-features/managing-campaigns/#campaign-scheduling\" target=\"blank\">scheduling campaigns</a>.\nDifferent end times can be set for the campaign's child ad groups, but they cannot occur after an `end_time` specified for the campaign.\n- If your campaign has a child ad group with an end time specified, and if you update that campaign with an `end_time` that is earlier than that of the ad group, the campaign `end_time` will supersede the ad group `end_time`, and the request will not return an error.\n- In this scenario, if you call <a href=\"/docs/api/v5/campaigns-list\" target=\"blank\">List campaigns</a> or <a href=\"/docs/api/v5/ad_groups-list\" target=\"blank\">List ad groups</a>, the returned campaigns or ad groups are listed with the start and end times that you assigned them, regardless of supersedence." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/isAutomatedCampaign> ;
    sh:name "is automated campaign" ;
    sh:description "Specifies whether the campaign was created in the automated campaign flow" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/isFlexibleDailyBudgets> ;
    sh:name "is flexible daily budgets" ;
    sh:description "Determine if a campaign has setup for flexible daily budgets, also known as \"Pinterest Performance+ budgets\"." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/lifetimeSpendCap> ;
    sh:name "lifetime spend cap" ;
    sh:description "Campaign total spending cap. Required for Campaign Budget Optimization (CBO) campaigns. This and \"daily_spend_cap\" cannot be set at the same time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/name> ;
    sh:name "name" ;
    sh:description "Campaign name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/orderLineId> ;
    sh:name "order line id" ;
    sh:description "Order line ID that appears on the invoice." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/startTime> ;
    sh:name "start time" ;
    sh:description "Timestamp in Unix format for scheduling when ads in the campaign start to appear. Must precede any start times set for child ad groups. Defaults to current time if no time is specified. Learn about <a href=\"/docs/api-features/managing-campaigns/#campaign-scheduling\" target=\"blank\">scheduling campaigns</a>.\nDifferent start times can be set for the campaign's child ad groups, but they cannot occur before a `start_time` specified for the campaign.\n- If your campaign has a child ad group with a start time specified, and if you update that campaign with a `start_time` that is later than that of the ad group, the campaign `start_time` will supersede the ad group `start_time`, and the request will not return an error.\n- In this scenario, if you call <a href=\"/docs/api/v5/campaigns-list\" target=\"blank\">List campaigns</a> or <a href=\"/docs/api/v5/ad_groups-list\" target=\"blank\">List ad groups</a>, the returned campaigns or ad groups are listed with the start and end times that you assigned them, regardless of supersedence." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/bidOptions> ;
    sh:name "bid options" ;
    sh:description "Object describing the campaign level bid multipliers." ;
    sh:node pinterest:CampaignBidOptionsShape ;
    sh:class pinterest:CampaignBidOptions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/createdTime> ;
    sh:name "created time" ;
    sh:description "Campaign creation time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/isCampaignBudgetOptimization> ;
    sh:name "is campaign budget optimization" ;
    sh:description "Determines if a campaign automatically generate ad-group level budgets given a campaign budget to maximize campaign outcome. When transitioning from non-cbo to cbo, all previous child ad group budget will be cleared." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/isPerformancePlus> ;
    sh:name "is performance plus" ;
    sh:description "Enable Pinterest Performance+ for your campaign. To learn more, see <a href=\"https://developers.pinterest.com/docs/api-features/pinterest-performance-plus-setup/\">Pinterest Performance+ Setup</a>." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/objectiveType> ;
    sh:name "objective type" ;
    sh:description "Intended result of the campaign. \nYou can only update objectives for draft campaigns.\n`WEB_SESSIONS` and `VIDEO_VIEW` objectives are deprecated. We recommend using `VIDEO_COMPLETION` as an alternative for the latter. " ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AWARENESS" "CONSIDERATION" "WEB_CONVERSION" "CATALOG_SALES" "VIDEO_COMPLETION" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/summaryStatus> ;
    sh:name "summary status" ;
    sh:description "Summary status for campaign" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "RUNNING" "PAUSED" "NOT_STARTED" "COMPLETED" "ADVERTISER_DISABLED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/type> ;
    sh:name "type" ;
    sh:description "Always \"campaign\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignResponse/updatedTime> ;
    sh:name "updated time" ;
    sh:description "UTC timestamp. Last update time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Update Response
pinterest:CampaignUpdateResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CampaignUpdateResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CampaignUpdateResponse/items> ;
    sh:name "items" ;
    sh:node pinterest:CampaignCreateResponseItemShape ;
    sh:class pinterest:CampaignCreateResponseItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Catalogs Db Item
pinterest:CatalogsDbItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsDbItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsDbItem/createdAt> ;
    sh:name "created at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsDbItem/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsDbItem/updatedAt> ;
    sh:name "updated at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Creative Assets Feed
pinterest:CatalogsCreativeAssetsFeedShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsFeed ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/createdAt> ;
    sh:name "created at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/updatedAt> ;
    sh:name "updated at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the feed. If not provided, feed will use a default catalog based on type." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/credentials> ;
    sh:name "credentials" ;
    sh:description "This field is **OPTIONAL**. Use this if your feed file requires username and password." ;
    sh:node pinterest:CatalogsFeedCredentialsShape ;
    sh:class pinterest:CatalogsFeedCredentials ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/defaultCountry> ;
    sh:name "default country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/defaultCurrency> ;
    sh:name "default currency" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/defaultLocale> ;
    sh:name "default locale" ;
    sh:description "The locale used within a feed for product descriptions." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/format> ;
    sh:name "format" ;
    sh:description "The file format of a feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "TSV" "CSV" "XML" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/location> ;
    sh:name "location" ;
    sh:description "The URL where a feed is available for download. This URL is what Pinterest will use to download a feed for processing." ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a given feed. This value is currently nullable due to historical reasons. It is expected to become non-nullable in the future." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/preferredProcessingSchedule> ;
    sh:name "preferred processing schedule" ;
    sh:description "Daily processing schedule. This field is **OPTIONAL**. Use this to configure the preferred time for processing a feed (otherwise random)." ;
    sh:node pinterest:CatalogsFeedProcessingScheduleShape ;
    sh:class pinterest:CatalogsFeedProcessingSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeed/status> ;
    sh:name "status" ;
    sh:description "Status for catalogs entities. Present in catalogs_feed values. When a feed is deleted, the response will inform DELETED as status." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "INACTIVE" ) ;
  ] .

# Shape for Catalogs Feed Credentials
pinterest:CatalogsFeedCredentialsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedCredentials ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedCredentials/password> ;
    sh:name "password" ;
    sh:description "The required password for downloading a feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedCredentials/username> ;
    sh:name "username" ;
    sh:description "The required username for downloading a feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Feed Processing Schedule
pinterest:CatalogsFeedProcessingScheduleShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedProcessingSchedule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedProcessingSchedule/time> ;
    sh:name "time" ;
    sh:description "A time in format HH:MM with leading 0 (zero)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedProcessingSchedule/timezone> ;
    sh:name "timezone" ;
    sh:description "The timezone considered for the processing schedule time." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Africa/Abidjan" "Africa/Accra" "Africa/Algiers" "Africa/Bissau" "Africa/Cairo" "Africa/Casablanca" "Africa/Ceuta" "Africa/El_Aaiun" "Africa/Johannesburg" "Africa/Juba" "Africa/Khartoum" "Africa/Lagos" "Africa/Maputo" "Africa/Monrovia" "Africa/Nairobi" "Africa/Ndjamena" "Africa/Sao_Tome" "Africa/Tripoli" "Africa/Tunis" "Africa/Windhoek" "America/Adak" "America/Anchorage" "America/Araguaina" "America/Argentina/Buenos_Aires" "America/Argentina/Catamarca" "America/Argentina/Cordoba" "America/Argentina/Jujuy" "America/Argentina/La_Rioja" "America/Argentina/Mendoza" "America/Argentina/Rio_Gallegos" "America/Argentina/Salta" "America/Argentina/San_Juan" "America/Argentina/San_Luis" "America/Argentina/Tucuman" "America/Argentina/Ushuaia" "America/Asuncion" "America/Atikokan" "America/Bahia" "America/Bahia_Banderas" "America/Barbados" "America/Belem" "America/Belize" "America/Blanc-Sablon" "America/Boa_Vista" "America/Bogota" "America/Boise" "America/Cambridge_Bay" "America/Campo_Grande" "America/Cancun" "America/Caracas" "America/Cayenne" "America/Chicago" "America/Chihuahua" "America/Costa_Rica" "America/Creston" "America/Cuiaba" "America/Curacao" "America/Danmarkshavn" "America/Dawson" "America/Dawson_Creek" "America/Denver" "America/Detroit" "America/Edmonton" "America/Eirunepe" "America/El_Salvador" "America/Fort_Nelson" "America/Fortaleza" "America/Glace_Bay" "America/Goose_Bay" "America/Grand_Turk" "America/Guatemala" "America/Guayaquil" "America/Guyana" "America/Halifax" "America/Havana" "America/Hermosillo" "America/Indiana/Indianapolis" "America/Indiana/Knox" "America/Indiana/Marengo" "America/Indiana/Petersburg" "America/Indiana/Tell_City" "America/Indiana/Vevay" "America/Indiana/Vincennes" "America/Indiana/Winamac" "America/Inuvik" "America/Iqaluit" "America/Jamaica" "America/Juneau" "America/Kentucky/Louisville" "America/Kentucky/Monticello" "America/La_Paz" "America/Lima" "America/Los_Angeles" "America/Maceio" "America/Managua" "America/Manaus" "America/Martinique" "America/Matamoros" "America/Mazatlan" "America/Menominee" "America/Merida" "America/Metlakatla" "America/Mexico_City" "America/Miquelon" "America/Moncton" "America/Monterrey" "America/Montevideo" "America/Nassau" "America/New_York" "America/Nipigon" "America/Nome" "America/Noronha" "America/North_Dakota/Beulah" "America/North_Dakota/Center" "America/North_Dakota/New_Salem" "America/Nuuk" "America/Ojinaga" "America/Panama" "America/Pangnirtung" "America/Paramaribo" "America/Phoenix" "America/Port-au-Prince" "America/Port_of_Spain" "America/Porto_Velho" "America/Puerto_Rico" "America/Punta_Arenas" "America/Rainy_River" "America/Rankin_Inlet" "America/Recife" "America/Regina" "America/Resolute" "America/Rio_Branco" "America/Santarem" "America/Santiago" "America/Santo_Domingo" "America/Sao_Paulo" "America/Scoresbysund" "America/Sitka" "America/St_Johns" "America/Swift_Current" "America/Tegucigalpa" "America/Thule" "America/Thunder_Bay" "America/Tijuana" "America/Toronto" "America/Vancouver" "America/Whitehorse" "America/Winnipeg" "America/Yakutat" "America/Yellowknife" "Antarctica/Casey" "Antarctica/Davis" "Antarctica/DumontDUrville" "Antarctica/Macquarie" "Antarctica/Mawson" "Antarctica/Palmer" "Antarctica/Rothera" "Antarctica/Syowa" "Antarctica/Troll" "Antarctica/Vostok" "Asia/Almaty" "Asia/Amman" "Asia/Anadyr" "Asia/Aqtau" "Asia/Aqtobe" "Asia/Ashgabat" "Asia/Atyrau" "Asia/Baghdad" "Asia/Baku" "Asia/Bangkok" "Asia/Barnaul" "Asia/Beirut" "Asia/Bishkek" "Asia/Brunei" "Asia/Chita" "Asia/Choibalsan" "Asia/Colombo" "Asia/Damascus" "Asia/Dhaka" "Asia/Dili" "Asia/Dubai" "Asia/Dushanbe" "Asia/Famagusta" "Asia/Gaza" "Asia/Hebron" "Asia/Ho_Chi_Minh" "Asia/Hong_Kong" "Asia/Hovd" "Asia/Irkutsk" "Asia/Jakarta" "Asia/Jayapura" "Asia/Jerusalem" "Asia/Kabul" "Asia/Kamchatka" "Asia/Karachi" "Asia/Kathmandu" "Asia/Khandyga" "Asia/Kolkata" "Asia/Krasnoyarsk" "Asia/Kuala_Lumpur" "Asia/Kuching" "Asia/Macau" "Asia/Magadan" "Asia/Makassar" "Asia/Manila" "Asia/Nicosia" "Asia/Novokuznetsk" "Asia/Novosibirsk" "Asia/Omsk" "Asia/Oral" "Asia/Pontianak" "Asia/Pyongyang" "Asia/Qatar" "Asia/Qostanay" "Asia/Qyzylorda" "Asia/Riyadh" "Asia/Sakhalin" "Asia/Samarkand" "Asia/Seoul" "Asia/Shanghai" "Asia/Singapore" "Asia/Srednekolymsk" "Asia/Taipei" "Asia/Tashkent" "Asia/Tbilisi" "Asia/Tehran" "Asia/Thimphu" "Asia/Tokyo" "Asia/Tomsk" "Asia/Ulaanbaatar" "Asia/Urumqi" "Asia/Ust-Nera" "Asia/Vladivostok" "Asia/Yakutsk" "Asia/Yangon" "Asia/Yekaterinburg" "Asia/Yerevan" "Atlantic/Azores" "Atlantic/Bermuda" "Atlantic/Canary" "Atlantic/Cape_Verde" "Atlantic/Faroe" "Atlantic/Madeira" "Atlantic/Reykjavik" "Atlantic/South_Georgia" "Atlantic/Stanley" "Australia/Adelaide" "Australia/Brisbane" "Australia/Broken_Hill" "Australia/Currie" "Australia/Darwin" "Australia/Eucla" "Australia/Hobart" "Australia/Lindeman" "Australia/Lord_Howe" "Australia/Melbourne" "Australia/Perth" "Australia/Sydney" "CET" "CST6CDT" "EET" "EST" "EST5EDT" "Etc/GMT" "Etc/GMT+1" "Etc/GMT+10" "Etc/GMT+11" "Etc/GMT+12" "Etc/GMT+2" "Etc/GMT+3" "Etc/GMT+4" "Etc/GMT+5" "Etc/GMT+6" "Etc/GMT+7" "Etc/GMT+8" "Etc/GMT+9" "Etc/GMT-1" "Etc/GMT-10" "Etc/GMT-11" "Etc/GMT-12" "Etc/GMT-13" "Etc/GMT-14" "Etc/GMT-2" "Etc/GMT-3" "Etc/GMT-4" "Etc/GMT-5" "Etc/GMT-6" "Etc/GMT-7" "Etc/GMT-8" "Etc/GMT-9" "Etc/UTC" "Europe/Amsterdam" "Europe/Andorra" "Europe/Astrakhan" "Europe/Athens" "Europe/Belgrade" "Europe/Berlin" "Europe/Brussels" "Europe/Bucharest" "Europe/Budapest" "Europe/Chisinau" "Europe/Copenhagen" "Europe/Dublin" "Europe/Gibraltar" "Europe/Helsinki" "Europe/Istanbul" "Europe/Kaliningrad" "Europe/Kiev" "Europe/Kirov" "Europe/Lisbon" "Europe/London" "Europe/Luxembourg" "Europe/Madrid" "Europe/Malta" "Europe/Minsk" "Europe/Monaco" "Europe/Moscow" "Europe/Oslo" "Europe/Paris" "Europe/Prague" "Europe/Riga" "Europe/Rome" "Europe/Samara" "Europe/Saratov" "Europe/Simferopol" "Europe/Sofia" "Europe/Stockholm" "Europe/Tallinn" "Europe/Tirane" "Europe/Ulyanovsk" "Europe/Uzhgorod" "Europe/Vienna" "Europe/Vilnius" "Europe/Volgograd" "Europe/Warsaw" "Europe/Zaporozhye" "Europe/Zurich" "HST" "Indian/Chagos" "Indian/Christmas" "Indian/Cocos" "Indian/Kerguelen" "Indian/Mahe" "Indian/Maldives" "Indian/Mauritius" "Indian/Reunion" "MET" "MST" "MST7MDT" "PST8PDT" "Pacific/Apia" "Pacific/Auckland" "Pacific/Bougainville" "Pacific/Chatham" "Pacific/Chuuk" "Pacific/Easter" "Pacific/Efate" "Pacific/Enderbury" "Pacific/Fakaofo" "Pacific/Fiji" "Pacific/Funafuti" "Pacific/Galapagos" "Pacific/Gambier" "Pacific/Guadalcanal" "Pacific/Guam" "Pacific/Honolulu" "Pacific/Kiritimati" "Pacific/Kosrae" "Pacific/Kwajalein" "Pacific/Majuro" "Pacific/Marquesas" "Pacific/Nauru" "Pacific/Niue" "Pacific/Norfolk" "Pacific/Noumea" "Pacific/Pago_Pago" "Pacific/Palau" "Pacific/Pitcairn" "Pacific/Pohnpei" "Pacific/Port_Moresby" "Pacific/Rarotonga" "Pacific/Tahiti" "Pacific/Tarawa" "Pacific/Tongatapu" "Pacific/Wake" "Pacific/Wallis" "WET" "null" ) ;
  ] .

# Shape for Catalogs Hotel Feed
pinterest:CatalogsHotelFeedShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelFeed ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/createdAt> ;
    sh:name "created at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/updatedAt> ;
    sh:name "updated at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the feed. If not provided, feed will use a default catalog based on type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/credentials> ;
    sh:name "credentials" ;
    sh:description "This field is **OPTIONAL**. Use this if your feed file requires username and password." ;
    sh:node pinterest:CatalogsFeedCredentialsShape ;
    sh:class pinterest:CatalogsFeedCredentials ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/defaultCurrency> ;
    sh:name "default currency" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/defaultLocale> ;
    sh:name "default locale" ;
    sh:description "The locale used within a feed for product descriptions." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/format> ;
    sh:name "format" ;
    sh:description "The file format of a feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "TSV" "CSV" "XML" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/location> ;
    sh:name "location" ;
    sh:description "The URL where a feed is available for download. This URL is what Pinterest will use to download a feed for processing." ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a given feed. This value is currently nullable due to historical reasons. It is expected to become non-nullable in the future." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/preferredProcessingSchedule> ;
    sh:name "preferred processing schedule" ;
    sh:description "Daily processing schedule. This field is **OPTIONAL**. Use this to configure the preferred time for processing a feed (otherwise random)." ;
    sh:node pinterest:CatalogsFeedProcessingScheduleShape ;
    sh:class pinterest:CatalogsFeedProcessingSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeed/status> ;
    sh:name "status" ;
    sh:description "Status for catalogs entities. Present in catalogs_feed values. When a feed is deleted, the response will inform DELETED as status." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "INACTIVE" ) ;
  ] .

# Shape for Catalogs Retail Feed
pinterest:CatalogsRetailFeedShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailFeed ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/createdAt> ;
    sh:name "created at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/updatedAt> ;
    sh:name "updated at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/credentials> ;
    sh:name "credentials" ;
    sh:description "This field is **OPTIONAL**. Use this if your feed file requires username and password." ;
    sh:node pinterest:CatalogsFeedCredentialsShape ;
    sh:class pinterest:CatalogsFeedCredentials ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/defaultAvailability> ;
    sh:name "default availability" ;
    sh:description "Default availability for products in a feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "IN_STOCK" "OUT_OF_STOCK" "PREORDER" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/defaultCountry> ;
    sh:name "default country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/defaultCurrency> ;
    sh:name "default currency" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/defaultLocale> ;
    sh:name "default locale" ;
    sh:description "The locale used within a feed for product descriptions." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/format> ;
    sh:name "format" ;
    sh:description "The file format of a feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "TSV" "CSV" "XML" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/location> ;
    sh:name "location" ;
    sh:description "The URL where a feed is available for download. This URL is what Pinterest will use to download a feed for processing." ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a given feed. This value is currently nullable due to historical reasons. It is expected to become non-nullable in the future." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/preferredProcessingSchedule> ;
    sh:name "preferred processing schedule" ;
    sh:description "Daily processing schedule. This field is **OPTIONAL**. Use this to configure the preferred time for processing a feed (otherwise random)." ;
    sh:node pinterest:CatalogsFeedProcessingScheduleShape ;
    sh:class pinterest:CatalogsFeedProcessingSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeed/status> ;
    sh:name "status" ;
    sh:description "Status for catalogs entities. Present in catalogs_feed values. When a feed is deleted, the response will inform DELETED as status." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "INACTIVE" ) ;
  ] .

# Shape for Catalogs Feed Ingestion Details
pinterest:CatalogsFeedIngestionDetailsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedIngestionDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionDetails/errors> ;
    sh:name "errors" ;
    sh:node pinterest:CatalogsFeedIngestionErrorsShape ;
    sh:class pinterest:CatalogsFeedIngestionErrors ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionDetails/info> ;
    sh:name "info" ;
    sh:node pinterest:CatalogsFeedIngestionInfoShape ;
    sh:class pinterest:CatalogsFeedIngestionInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionDetails/warnings> ;
    sh:name "warnings" ;
    sh:node pinterest:CatalogsFeedIngestionWarningsShape ;
    sh:class pinterest:CatalogsFeedIngestionWarnings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Feed Ingestion Errors
pinterest:CatalogsFeedIngestionErrorsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedIngestionErrors ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionErrors/ACCOUNT_FLAGGED> ;
    sh:name "account flagged" ;
    sh:description "We detected an issue with your account and are not currently ingesting your items. Please review our policies at policy.pinterest.com/community-guidelines#section-spam or contact us at help.pinterest.com/contact for more information." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionErrors/FETCH_GOOGLE_SHEET_NOT_SHARED> ;
    sh:name "fetch google sheet not shared" ;
    sh:description "Update your Google Sheets sharing settings to 'Anyone with link' as a Viewer so that Pinterest can access your file." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionErrors/IMAGE_FILE_NOT_ACCESSIBLE> ;
    sh:name "image file not accessible" ;
    sh:description "Image files are unreadable. Please upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionErrors/IMAGE_FILE_NOT_FOUND> ;
    sh:name "image file not found" ;
    sh:description "Image files are unreadable. Please upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionErrors/IMAGE_INVALID_FILE> ;
    sh:name "image invalid file" ;
    sh:description "Image files are unreadable. Please upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionErrors/IMAGE_LEVEL_INTERNAL_ERROR> ;
    sh:name "image level internal error" ;
    sh:description "We experienced a technical difficulty and were unable to download some images. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionErrors/IMAGE_MALFORMED_URL> ;
    sh:name "image malformed url" ;
    sh:description "Image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionErrors/LARGE_PRODUCT_COUNT_DECREASE> ;
    sh:name "large product count decrease" ;
    sh:description "The product count has decreased by more than 99% compared to the last successful ingestion." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionErrors/LINE_LEVEL_INTERNAL_ERROR> ;
    sh:name "line level internal error" ;
    sh:description "We experienced a technical difficulty and were unable to ingest this some items. The next ingestion will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Feed Ingestion Info
pinterest:CatalogsFeedIngestionInfoShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedIngestionInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionInfo/IN_STOCK> ;
    sh:name "in stock" ;
    sh:description "The number of ingested products that are in stock." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionInfo/OUT_OF_STOCK> ;
    sh:name "out of stock" ;
    sh:description "The number of ingested products that are in out of stock." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionInfo/PREORDER> ;
    sh:name "preorder" ;
    sh:description "The number of ingested products that are in preorder." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Feed Ingestion Warnings
pinterest:CatalogsFeedIngestionWarningsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedIngestionWarnings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_CONTENT_READ_ERROR> ;
    sh:name "ad image download content read error" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_DNS_LOOKUP_ERROR> ;
    sh:name "ad image download dns lookup error" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_FILE_NOT_ACCESSIBLE> ;
    sh:name "ad image download file not accessible" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_FILE_NOT_FOUND> ;
    sh:name "ad image download file not found" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS400> ;
    sh:name "ad image download http status400" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS403> ;
    sh:name "ad image download http status403" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS404> ;
    sh:name "ad image download http status404" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS405> ;
    sh:name "ad image download http status405" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS410> ;
    sh:name "ad image download http status410" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS429> ;
    sh:name "ad image download http status429" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS500> ;
    sh:name "ad image download http status500" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS502> ;
    sh:name "ad image download http status502" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS503> ;
    sh:name "ad image download http status503" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS504> ;
    sh:name "ad image download http status504" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS507> ;
    sh:name "ad image download http status507" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS508> ;
    sh:name "ad image download http status508" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS520> ;
    sh:name "ad image download http status520" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS521> ;
    sh:name "ad image download http status521" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS522> ;
    sh:name "ad image download http status522" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_HTTP_STATUS525> ;
    sh:name "ad image download http status525" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_INTERNAL_CONFIGURATION_ERROR> ;
    sh:name "ad image download internal configuration error" ;
    sh:description "We experienced a technical difficulty and were unable to download some additional images. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_INTERNAL_ERROR> ;
    sh:name "ad image download internal error" ;
    sh:description "We experienced a technical difficulty and were unable to download some additional images. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_INTERNAL_FAILED_TO_DOWNLOAD> ;
    sh:name "ad image download internal failed to download" ;
    sh:description "We experienced a technical difficulty and were unable to download some additional images. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_INTERNAL_MALFORMED_URL> ;
    sh:name "ad image download internal malformed url" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_INTERNAL_RATE_LIMITED> ;
    sh:name "ad image download internal rate limited" ;
    sh:description "We experienced a technical difficulty and were unable to download some additional images. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_INTERNAL_REQUEST_EXPIRED> ;
    sh:name "ad image download internal request expired" ;
    sh:description "We experienced a technical difficulty and were unable to download some additional images. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_INVALID_FILE> ;
    sh:name "ad image download invalid file" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_SITE_ERROR> ;
    sh:name "ad image download site error" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_SITE_TIMEOUT> ;
    sh:name "ad image download site timeout" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_SSL_ERROR> ;
    sh:name "ad image download ssl error" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_DOWNLOAD_SSL_HANDSHAKE_ERROR> ;
    sh:name "ad image download ssl handshake error" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_PROCESSING_EMPTY_FILE> ;
    sh:name "ad image processing empty file" ;
    sh:description "Ad image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_PROCESSING_HEIGHT_TOO_SMALL> ;
    sh:name "ad image processing height too small" ;
    sh:description "Ad images must have a height larger than 75 pixels" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_PROCESSING_TOO_MANY_PIXELS> ;
    sh:name "ad image processing too many pixels" ;
    sh:description "Ad images must have a maximum area (width x height) of less than 89478485 pixels" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_PROCESSING_TYPE_MISMATCH> ;
    sh:name "ad image processing type mismatch" ;
    sh:description "Some ad images could not be processed due to a file type mismatch." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_IMAGE_PROCESSING_WIDTH_TOO_SMALL> ;
    sh:name "ad image processing width too small" ;
    sh:description "Ad images must have a width larger than 75 pixels" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_CONTENT_READ_ERROR> ;
    sh:name "ad video download content read error" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_DNS_LOOKUP_ERROR> ;
    sh:name "ad video download dns lookup error" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_FILE_NOT_ACCESSIBLE> ;
    sh:name "ad video download file not accessible" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_FILE_NOT_FOUND> ;
    sh:name "ad video download file not found" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS400> ;
    sh:name "ad video download http status400" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS403> ;
    sh:name "ad video download http status403" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS404> ;
    sh:name "ad video download http status404" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS405> ;
    sh:name "ad video download http status405" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS410> ;
    sh:name "ad video download http status410" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS429> ;
    sh:name "ad video download http status429" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS500> ;
    sh:name "ad video download http status500" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS502> ;
    sh:name "ad video download http status502" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS503> ;
    sh:name "ad video download http status503" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS504> ;
    sh:name "ad video download http status504" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS507> ;
    sh:name "ad video download http status507" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS508> ;
    sh:name "ad video download http status508" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS520> ;
    sh:name "ad video download http status520" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS521> ;
    sh:name "ad video download http status521" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS522> ;
    sh:name "ad video download http status522" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_HTTP_STATUS525> ;
    sh:name "ad video download http status525" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_INTERNAL_CONFIGURATION_ERROR> ;
    sh:name "ad video download internal configuration error" ;
    sh:description "We experienced a technical difficulty and were unable to download some additional images. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_INTERNAL_ERROR> ;
    sh:name "ad video download internal error" ;
    sh:description "We experienced a technical difficulty and were unable to download some additional images. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_INTERNAL_FAILED_TO_DOWNLOAD> ;
    sh:name "ad video download internal failed to download" ;
    sh:description "We experienced a technical difficulty and were unable to download some additional images. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_INTERNAL_MALFORMED_URL> ;
    sh:name "ad video download internal malformed url" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_INTERNAL_RATE_LIMITED> ;
    sh:name "ad video download internal rate limited" ;
    sh:description "We experienced a technical difficulty and were unable to download some additional images. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_INTERNAL_REQUEST_EXPIRED> ;
    sh:name "ad video download internal request expired" ;
    sh:description "We experienced a technical difficulty and were unable to download some additional images. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_INVALID_FILE> ;
    sh:name "ad video download invalid file" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_SITE_ERROR> ;
    sh:name "ad video download site error" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_SITE_TIMEOUT> ;
    sh:name "ad video download site timeout" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_SSL_ERROR> ;
    sh:name "ad video download ssl error" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_DOWNLOAD_SSL_HANDSHAKE_ERROR> ;
    sh:name "ad video download ssl handshake error" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_LENGTH_TOO_SHORT> ;
    sh:name "ad video length too short" ;
    sh:description "Ad videos length is too short. Please ensure that all ad videos are at least 4 seconds long." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_PROCESSING_EMPTY_FILE> ;
    sh:name "ad video processing empty file" ;
    sh:description "Ad video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_PROCESSING_HEIGHT_TOO_SMALL> ;
    sh:name "ad video processing height too small" ;
    sh:description "Ad videos must have a height larger than 75 pixels" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_PROCESSING_TOO_MANY_PIXELS> ;
    sh:name "ad video processing too many pixels" ;
    sh:description "Ad videos must have a maximum area (width x height) of less than 89478485 pixels" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_PROCESSING_TYPE_MISMATCH> ;
    sh:name "ad video processing type mismatch" ;
    sh:description "Some ad videos could not be processed due to a file type mismatch." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/AD_VIDEO_PROCESSING_WIDTH_TOO_SMALL> ;
    sh:name "ad video processing width too small" ;
    sh:description "Ad videos must have a width larger than 75 pixels" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/ADDITIONAL_IMAGE_FILE_NOT_ACCESSIBLE> ;
    sh:name "additional image file not accessible" ;
    sh:description "Additional image files are unreadable. Please upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/ADDITIONAL_IMAGE_FILE_NOT_FOUND> ;
    sh:name "additional image file not found" ;
    sh:description "Additional image files are unreadable. Please upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/ADDITIONAL_IMAGE_INVALID_FILE> ;
    sh:name "additional image invalid file" ;
    sh:description "Additional image files are unreadable. Please upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/ADDITIONAL_IMAGE_LEVEL_INTERNAL_ERROR> ;
    sh:name "additional image level internal error" ;
    sh:description "We experienced a technical difficulty and were unable to download some additional images. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/ADDITIONAL_IMAGE_MALFORMED_URL> ;
    sh:name "additional image malformed url" ;
    sh:description "Additional image files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/FETCH_GOOGLE_SHEET_PUBLIC_CAN_EDIT> ;
    sh:name "fetch google sheet public can edit" ;
    sh:description "Update your Google Sheets sharing settings from 'Editor' to 'Viewer'." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/HOTEL_PRICE_HEADER_IS_PRESENT> ;
    sh:name "hotel price header is present" ;
    sh:description "Price is not a supported column. Use base_price and sale_price instead." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/VIDEO_DOWNLOAD_VIDEO_TOO_SHORT> ;
    sh:name "video download video too short" ;
    sh:description "Video length is too short. Please ensure that the main video is at least 4 seconds long." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/VIDEO_FILE_NOT_ACCESSIBLE> ;
    sh:name "video file not accessible" ;
    sh:description "Video files are unreadable. Please upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/VIDEO_FILE_NOT_FOUND> ;
    sh:name "video file not found" ;
    sh:description "Video files are unreadable. Please upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/VIDEO_INVALID_FILE> ;
    sh:name "video invalid file" ;
    sh:description "Video files are unreadable. Please upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/VIDEO_LEVEL_INTERNAL_ERROR> ;
    sh:name "video level internal error" ;
    sh:description "We experienced a technical difficulty and were unable to download some additional videos. The next download attempt will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestionWarnings/VIDEO_MALFORMED_URL> ;
    sh:name "video malformed url" ;
    sh:description "Video files are unreadable. Please check your link and upload new files to continue." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Feed Ingestion
pinterest:CatalogsFeedIngestionShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedIngestion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestion/createdAt> ;
    sh:name "created at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestion/feedId> ;
    sh:name "feed id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestion/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedIngestion/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "COMPLETED" "FAILED" "PROCESSING" ) ;
  ] .

# Shape for Catalogs Feed Processing Result
pinterest:CatalogsFeedProcessingResultShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedProcessingResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedProcessingResult/createdAt> ;
    sh:name "created at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedProcessingResult/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedProcessingResult/updatedAt> ;
    sh:name "updated at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedProcessingResult/ingestionDetails> ;
    sh:name "ingestion details" ;
    sh:node pinterest:CatalogsFeedIngestionDetailsShape ;
    sh:class pinterest:CatalogsFeedIngestionDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedProcessingResult/productCounts> ;
    sh:name "product counts" ;
    sh:description "The counts can be null early in the process." ;
    sh:node pinterest:CatalogsFeedProductCountsShape ;
    sh:class pinterest:CatalogsFeedProductCounts ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedProcessingResult/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "COMPLETED" "FAILED" "PROCESSING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedProcessingResult/validationDetails> ;
    sh:name "validation details" ;
    sh:node pinterest:CatalogsFeedValidationDetailsShape ;
    sh:class pinterest:CatalogsFeedValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedProcessingResult/videoCounts> ;
    sh:name "video counts" ;
    sh:description "Counts of total, ingested, and not ingested videos in the feed file. The counts may not appear early in the process." ;
    sh:node pinterest:CatalogsFeedVideoCountsShape ;
    sh:class pinterest:CatalogsFeedVideoCounts ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Feed Product Counts
pinterest:CatalogsFeedProductCountsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedProductCounts ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedProductCounts/ingested> ;
    sh:name "ingested" ;
    sh:description "The number of products successfully ingested from the feed file." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedProductCounts/original> ;
    sh:name "original" ;
    sh:description "The number of products in the feed file." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Feed Validation Details
pinterest:CatalogsFeedValidationDetailsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedValidationDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationDetails/errors> ;
    sh:name "errors" ;
    sh:node pinterest:CatalogsFeedValidationErrorsShape ;
    sh:class pinterest:CatalogsFeedValidationErrors ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationDetails/warnings> ;
    sh:name "warnings" ;
    sh:node pinterest:CatalogsFeedValidationWarningsShape ;
    sh:class pinterest:CatalogsFeedValidationWarnings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Feed Validation Errors
pinterest:CatalogsFeedValidationErrorsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedValidationErrors ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/ADULT_INVALID> ;
    sh:name "adult invalid" ;
    sh:description "Some items have invalid adult values." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/ADWORDS_FORMAT_INVALID> ;
    sh:name "adwords format invalid" ;
    sh:description "Some adwords links contain too many characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/AVAILABILITY_INVALID> ;
    sh:name "availability invalid" ;
    sh:description "Some items are missing an availability value in their product metadata, those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/BLOCKLISTED_IMAGE_SIGNATURE> ;
    sh:name "blocklisted image signature" ;
    sh:description "Some items were not published because they don't meet Pinterest's Merchant Guidelines." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/DELIMITER_ERROR> ;
    sh:name "delimiter error" ;
    sh:description "Your feed includes data with formatting errors." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/DESCRIPTION_MISSING> ;
    sh:name "description missing" ;
    sh:description "Some items are missing a description in their product metadata, those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/DUPLICATE_PRODUCTS> ;
    sh:name "duplicate products" ;
    sh:description "Some products are duplicated." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/ENCODING_ERROR> ;
    sh:name "encoding error" ;
    sh:description "Your feed includes data with an unsupported encoding format." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/FEED_LENGTH_TOO_LONG> ;
    sh:name "feed length too long" ;
    sh:description "Your feed contains too many items, some items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/FEED_TOO_SMALL> ;
    sh:name "feed too small" ;
    sh:description "Your feed couldn't be validated because the file doesn't contain the minimum number of lines required." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/FETCH_ERROR> ;
    sh:name "fetch error" ;
    sh:description "Pinterest couldn't download your feed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/FETCH_INACTIVE_FEED_ERROR> ;
    sh:name "fetch inactive feed error" ;
    sh:description "Your feed wasn't ingested because it hasn’t changed in the previous 90 days." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/IMAGE_LINK_INVALID> ;
    sh:name "image link invalid" ;
    sh:description "Some image links are formatted incorrectly." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/IMAGE_LINK_LENGTH_TOO_LONG> ;
    sh:name "image link length too long" ;
    sh:description "Some items have image_link URLs that contain too many characters, so those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/IMAGE_LINK_MISSING> ;
    sh:name "image link missing" ;
    sh:description "Some items are missing an image link URL in their product metadata, those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/INTERNAL_SERVICE_ERROR> ;
    sh:name "internal service error" ;
    sh:description "We experienced a technical difficulty and were unable to ingest your feed. The next ingestion will happen in 24 hours." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/INVALID_DOMAIN> ;
    sh:name "invalid domain" ;
    sh:description "Some of your product link values don't match the verified domain associated with this account." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/ITEM_MAIN_IMAGE_DOWNLOAD_FAILURE> ;
    sh:name "item main image download failure" ;
    sh:description "Some items' main images can't be found." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/ITEMID_MISSING> ;
    sh:name "itemid missing" ;
    sh:description "Some items are missing an item id in their product metadata, those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/LINK_FORMAT_INVALID> ;
    sh:name "link format invalid" ;
    sh:description "Some link values are formatted incorrectly." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/LINK_LENGTH_TOO_LONG> ;
    sh:name "link length too long" ;
    sh:description "Some product links contain too many characters, those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/LIST_PRICE_INVALID> ;
    sh:name "list price invalid" ;
    sh:description "Some items have list price formatting errors in their product metadata, those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/MALFORMED_XML> ;
    sh:name "malformed xml" ;
    sh:description "Your feed couldn't be validated because the xml file is formatted incorrectly." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/MAX_ITEMS_PER_ITEM_GROUP_EXCEEDED> ;
    sh:name "max items per item group exceeded" ;
    sh:description "Some items exceed the maximum number of items per item group, those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/NO_VERIFIED_DOMAIN> ;
    sh:name "no verified domain" ;
    sh:description "Your merchant domain needs to be claimed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/PARSE_LINE_ERROR> ;
    sh:name "parse line error" ;
    sh:description "Your feed contains formatting errors for some items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/PINJOIN_CONTENT_UNSAFE> ;
    sh:name "pinjoin content unsafe" ;
    sh:description "Some items were not published because they don't meet Pinterest's Merchant Guidelines." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/PRICE_CANNOT_BE_DETERMINED> ;
    sh:name "price cannot be determined" ;
    sh:description "Some items were not published because price cannot be determined. The price, list price, and sale price are all different, so those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/PRICE_MISSING> ;
    sh:name "price missing" ;
    sh:description "Some products are missing a price, those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/PRODUCT_LINK_MISSING> ;
    sh:name "product link missing" ;
    sh:description "Some items are missing a link URL in their product metadata, those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/PRODUCT_PRICE_INVALID> ;
    sh:name "product price invalid" ;
    sh:description "Some items have price formatting errors in their product metadata, those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/REQUIRED_COLUMNS_MISSING> ;
    sh:name "required columns missing" ;
    sh:description "Your feed is missing some required column headers." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationErrors/TITLE_MISSING> ;
    sh:name "title missing" ;
    sh:description "Some items are missing a title in their product metadata, those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Feed Validation Warnings
pinterest:CatalogsFeedValidationWarningsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedValidationWarnings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE0_LINK_DUPLICATED> ;
    sh:name "ad image0 link duplicated" ;
    sh:description "ad_image_0_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE0_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image0 link length too long" ;
    sh:description "Ad image link 0 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE0_LINK_REQUIRED> ;
    sh:name "ad image0 link required" ;
    sh:description "Ad image link 0 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE0_LINK_WARNING> ;
    sh:name "ad image0 link warning" ;
    sh:description "Ad image link 0 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE0_TAG_DUPLICATED> ;
    sh:name "ad image0 tag duplicated" ;
    sh:description "ad_image_0_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE0_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image0 tag length too long" ;
    sh:description "Ad image tag 0 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE0_TAG_REQUIRED> ;
    sh:name "ad image0 tag required" ;
    sh:description "Ad image tag 0 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE10_LINK_DUPLICATED> ;
    sh:name "ad image10 link duplicated" ;
    sh:description "ad_image_10_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE10_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image10 link length too long" ;
    sh:description "Ad image link 10 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE10_LINK_REQUIRED> ;
    sh:name "ad image10 link required" ;
    sh:description "Ad image link 10 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE10_LINK_WARNING> ;
    sh:name "ad image10 link warning" ;
    sh:description "Ad image link 10 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE10_TAG_DUPLICATED> ;
    sh:name "ad image10 tag duplicated" ;
    sh:description "ad_image_10_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE10_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image10 tag length too long" ;
    sh:description "Ad image tag 10 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE10_TAG_REQUIRED> ;
    sh:name "ad image10 tag required" ;
    sh:description "Ad image tag 10 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE11_LINK_DUPLICATED> ;
    sh:name "ad image11 link duplicated" ;
    sh:description "ad_image_11_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE11_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image11 link length too long" ;
    sh:description "Ad image link 11 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE11_LINK_REQUIRED> ;
    sh:name "ad image11 link required" ;
    sh:description "Ad image link 11 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE11_LINK_WARNING> ;
    sh:name "ad image11 link warning" ;
    sh:description "Ad image link 11 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE11_TAG_DUPLICATED> ;
    sh:name "ad image11 tag duplicated" ;
    sh:description "ad_image_11_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE11_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image11 tag length too long" ;
    sh:description "Ad image tag 11 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE11_TAG_REQUIRED> ;
    sh:name "ad image11 tag required" ;
    sh:description "Ad image tag 11 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE12_LINK_DUPLICATED> ;
    sh:name "ad image12 link duplicated" ;
    sh:description "ad_image_12_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE12_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image12 link length too long" ;
    sh:description "Ad image link 12 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE12_LINK_REQUIRED> ;
    sh:name "ad image12 link required" ;
    sh:description "Ad image link 12 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE12_LINK_WARNING> ;
    sh:name "ad image12 link warning" ;
    sh:description "Ad image link 12 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE12_TAG_DUPLICATED> ;
    sh:name "ad image12 tag duplicated" ;
    sh:description "ad_image_12_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE12_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image12 tag length too long" ;
    sh:description "Ad image tag 12 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE12_TAG_REQUIRED> ;
    sh:name "ad image12 tag required" ;
    sh:description "Ad image tag 12 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE13_LINK_DUPLICATED> ;
    sh:name "ad image13 link duplicated" ;
    sh:description "ad_image_13_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE13_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image13 link length too long" ;
    sh:description "Ad image link 13 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE13_LINK_REQUIRED> ;
    sh:name "ad image13 link required" ;
    sh:description "Ad image link 13 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE13_LINK_WARNING> ;
    sh:name "ad image13 link warning" ;
    sh:description "Ad image link 13 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE13_TAG_DUPLICATED> ;
    sh:name "ad image13 tag duplicated" ;
    sh:description "ad_image_13_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE13_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image13 tag length too long" ;
    sh:description "Ad image tag 13 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE13_TAG_REQUIRED> ;
    sh:name "ad image13 tag required" ;
    sh:description "Ad image tag 13 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE14_LINK_DUPLICATED> ;
    sh:name "ad image14 link duplicated" ;
    sh:description "ad_image_14_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE14_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image14 link length too long" ;
    sh:description "Ad image link 14 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE14_LINK_REQUIRED> ;
    sh:name "ad image14 link required" ;
    sh:description "Ad image link 14 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE14_LINK_WARNING> ;
    sh:name "ad image14 link warning" ;
    sh:description "Ad image link 14 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE14_TAG_DUPLICATED> ;
    sh:name "ad image14 tag duplicated" ;
    sh:description "ad_image_14_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE14_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image14 tag length too long" ;
    sh:description "Ad image tag 14 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE14_TAG_REQUIRED> ;
    sh:name "ad image14 tag required" ;
    sh:description "Ad image tag 14 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE15_LINK_DUPLICATED> ;
    sh:name "ad image15 link duplicated" ;
    sh:description "ad_image_15_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE15_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image15 link length too long" ;
    sh:description "Ad image link 15 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE15_LINK_REQUIRED> ;
    sh:name "ad image15 link required" ;
    sh:description "Ad image link 15 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE15_LINK_WARNING> ;
    sh:name "ad image15 link warning" ;
    sh:description "Ad image link 15 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE15_TAG_DUPLICATED> ;
    sh:name "ad image15 tag duplicated" ;
    sh:description "ad_image_15_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE15_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image15 tag length too long" ;
    sh:description "Ad image tag 15 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE15_TAG_REQUIRED> ;
    sh:name "ad image15 tag required" ;
    sh:description "Ad image tag 15 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE16_LINK_DUPLICATED> ;
    sh:name "ad image16 link duplicated" ;
    sh:description "ad_image_16_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE16_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image16 link length too long" ;
    sh:description "Ad image link 16 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE16_LINK_REQUIRED> ;
    sh:name "ad image16 link required" ;
    sh:description "Ad image link 16 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE16_LINK_WARNING> ;
    sh:name "ad image16 link warning" ;
    sh:description "Ad image link 16 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE16_TAG_DUPLICATED> ;
    sh:name "ad image16 tag duplicated" ;
    sh:description "ad_image_16_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE16_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image16 tag length too long" ;
    sh:description "Ad image tag 16 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE16_TAG_REQUIRED> ;
    sh:name "ad image16 tag required" ;
    sh:description "Ad image tag 16 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE17_LINK_DUPLICATED> ;
    sh:name "ad image17 link duplicated" ;
    sh:description "ad_image_17_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE17_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image17 link length too long" ;
    sh:description "Ad image link 17 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE17_LINK_REQUIRED> ;
    sh:name "ad image17 link required" ;
    sh:description "Ad image link 17 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE17_LINK_WARNING> ;
    sh:name "ad image17 link warning" ;
    sh:description "Ad image link 17 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE17_TAG_DUPLICATED> ;
    sh:name "ad image17 tag duplicated" ;
    sh:description "ad_image_17_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE17_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image17 tag length too long" ;
    sh:description "Ad image tag 17 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE17_TAG_REQUIRED> ;
    sh:name "ad image17 tag required" ;
    sh:description "Ad image tag 17 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE18_LINK_DUPLICATED> ;
    sh:name "ad image18 link duplicated" ;
    sh:description "ad_image_18_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE18_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image18 link length too long" ;
    sh:description "Ad image link 18 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE18_LINK_REQUIRED> ;
    sh:name "ad image18 link required" ;
    sh:description "Ad image link 18 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE18_LINK_WARNING> ;
    sh:name "ad image18 link warning" ;
    sh:description "Ad image link 18 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE18_TAG_DUPLICATED> ;
    sh:name "ad image18 tag duplicated" ;
    sh:description "ad_image_18_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE18_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image18 tag length too long" ;
    sh:description "Ad image tag 18 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE18_TAG_REQUIRED> ;
    sh:name "ad image18 tag required" ;
    sh:description "Ad image tag 18 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE19_LINK_DUPLICATED> ;
    sh:name "ad image19 link duplicated" ;
    sh:description "ad_image_19_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE19_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image19 link length too long" ;
    sh:description "Ad image link 19 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE19_LINK_REQUIRED> ;
    sh:name "ad image19 link required" ;
    sh:description "Ad image link 19 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE19_LINK_WARNING> ;
    sh:name "ad image19 link warning" ;
    sh:description "Ad image link 19 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE19_TAG_DUPLICATED> ;
    sh:name "ad image19 tag duplicated" ;
    sh:description "ad_image_19_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE19_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image19 tag length too long" ;
    sh:description "Ad image tag 19 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE19_TAG_REQUIRED> ;
    sh:name "ad image19 tag required" ;
    sh:description "Ad image tag 19 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE1_LINK_DUPLICATED> ;
    sh:name "ad image1 link duplicated" ;
    sh:description "ad_image_1_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE1_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image1 link length too long" ;
    sh:description "Ad image link 1 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE1_LINK_REQUIRED> ;
    sh:name "ad image1 link required" ;
    sh:description "Ad image link 1 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE1_LINK_WARNING> ;
    sh:name "ad image1 link warning" ;
    sh:description "Ad image link 1 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE1_TAG_DUPLICATED> ;
    sh:name "ad image1 tag duplicated" ;
    sh:description "ad_image_1_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE1_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image1 tag length too long" ;
    sh:description "Ad image tag 1 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE1_TAG_REQUIRED> ;
    sh:name "ad image1 tag required" ;
    sh:description "Ad image tag 1 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE2_LINK_DUPLICATED> ;
    sh:name "ad image2 link duplicated" ;
    sh:description "ad_image_2_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE2_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image2 link length too long" ;
    sh:description "Ad image link 2 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE2_LINK_REQUIRED> ;
    sh:name "ad image2 link required" ;
    sh:description "Ad image link 2 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE2_LINK_WARNING> ;
    sh:name "ad image2 link warning" ;
    sh:description "Ad image link 2 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE2_TAG_DUPLICATED> ;
    sh:name "ad image2 tag duplicated" ;
    sh:description "ad_image_2_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE2_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image2 tag length too long" ;
    sh:description "Ad image tag 2 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE2_TAG_REQUIRED> ;
    sh:name "ad image2 tag required" ;
    sh:description "Ad image tag 2 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE3_LINK_DUPLICATED> ;
    sh:name "ad image3 link duplicated" ;
    sh:description "ad_image_3_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE3_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image3 link length too long" ;
    sh:description "Ad image link 3 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE3_LINK_REQUIRED> ;
    sh:name "ad image3 link required" ;
    sh:description "Ad image link 3 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE3_LINK_WARNING> ;
    sh:name "ad image3 link warning" ;
    sh:description "Ad image link 3 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE3_TAG_DUPLICATED> ;
    sh:name "ad image3 tag duplicated" ;
    sh:description "ad_image_3_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE3_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image3 tag length too long" ;
    sh:description "Ad image tag 3 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE3_TAG_REQUIRED> ;
    sh:name "ad image3 tag required" ;
    sh:description "Ad image tag 3 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE4_LINK_DUPLICATED> ;
    sh:name "ad image4 link duplicated" ;
    sh:description "ad_image_4_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE4_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image4 link length too long" ;
    sh:description "Ad image link 4 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE4_LINK_REQUIRED> ;
    sh:name "ad image4 link required" ;
    sh:description "Ad image link 4 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE4_LINK_WARNING> ;
    sh:name "ad image4 link warning" ;
    sh:description "Ad image link 4 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE4_TAG_DUPLICATED> ;
    sh:name "ad image4 tag duplicated" ;
    sh:description "ad_image_4_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE4_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image4 tag length too long" ;
    sh:description "Ad image tag 4 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE4_TAG_REQUIRED> ;
    sh:name "ad image4 tag required" ;
    sh:description "Ad image tag 4 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE5_LINK_DUPLICATED> ;
    sh:name "ad image5 link duplicated" ;
    sh:description "ad_image_5_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE5_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image5 link length too long" ;
    sh:description "Ad image link 5 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE5_LINK_REQUIRED> ;
    sh:name "ad image5 link required" ;
    sh:description "Ad image link 5 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE5_LINK_WARNING> ;
    sh:name "ad image5 link warning" ;
    sh:description "Ad image link 5 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE5_TAG_DUPLICATED> ;
    sh:name "ad image5 tag duplicated" ;
    sh:description "ad_image_5_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE5_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image5 tag length too long" ;
    sh:description "Ad image tag 5 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE5_TAG_REQUIRED> ;
    sh:name "ad image5 tag required" ;
    sh:description "Ad image tag 5 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE6_LINK_DUPLICATED> ;
    sh:name "ad image6 link duplicated" ;
    sh:description "ad_image_6_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE6_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image6 link length too long" ;
    sh:description "Ad image link 6 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE6_LINK_REQUIRED> ;
    sh:name "ad image6 link required" ;
    sh:description "Ad image link 6 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE6_LINK_WARNING> ;
    sh:name "ad image6 link warning" ;
    sh:description "Ad image link 6 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE6_TAG_DUPLICATED> ;
    sh:name "ad image6 tag duplicated" ;
    sh:description "ad_image_6_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE6_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image6 tag length too long" ;
    sh:description "Ad image tag 6 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE6_TAG_REQUIRED> ;
    sh:name "ad image6 tag required" ;
    sh:description "Ad image tag 6 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE7_LINK_DUPLICATED> ;
    sh:name "ad image7 link duplicated" ;
    sh:description "ad_image_7_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE7_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image7 link length too long" ;
    sh:description "Ad image link 7 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE7_LINK_REQUIRED> ;
    sh:name "ad image7 link required" ;
    sh:description "Ad image link 7 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE7_LINK_WARNING> ;
    sh:name "ad image7 link warning" ;
    sh:description "Ad image link 7 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE7_TAG_DUPLICATED> ;
    sh:name "ad image7 tag duplicated" ;
    sh:description "ad_image_7_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE7_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image7 tag length too long" ;
    sh:description "Ad image tag 7 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE7_TAG_REQUIRED> ;
    sh:name "ad image7 tag required" ;
    sh:description "Ad image tag 7 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE8_LINK_DUPLICATED> ;
    sh:name "ad image8 link duplicated" ;
    sh:description "ad_image_8_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE8_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image8 link length too long" ;
    sh:description "Ad image link 8 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE8_LINK_REQUIRED> ;
    sh:name "ad image8 link required" ;
    sh:description "Ad image link 8 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE8_LINK_WARNING> ;
    sh:name "ad image8 link warning" ;
    sh:description "Ad image link 8 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE8_TAG_DUPLICATED> ;
    sh:name "ad image8 tag duplicated" ;
    sh:description "ad_image_8_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE8_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image8 tag length too long" ;
    sh:description "Ad image tag 8 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE8_TAG_REQUIRED> ;
    sh:name "ad image8 tag required" ;
    sh:description "Ad image tag 8 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE9_LINK_DUPLICATED> ;
    sh:name "ad image9 link duplicated" ;
    sh:description "ad_image_9_link is duplicated with another ad image link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE9_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image9 link length too long" ;
    sh:description "Ad image link 9 length is too long. The maximum length is 2047 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE9_LINK_REQUIRED> ;
    sh:name "ad image9 link required" ;
    sh:description "Ad image link 9 is required because an image tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE9_LINK_WARNING> ;
    sh:name "ad image9 link warning" ;
    sh:description "Ad image link 9 format is unsupported." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE9_TAG_DUPLICATED> ;
    sh:name "ad image9 tag duplicated" ;
    sh:description "ad_image_9_tag is duplicated with another ad image tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE9_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image9 tag length too long" ;
    sh:description "Ad image tag 9 length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_IMAGE9_TAG_REQUIRED> ;
    sh:name "ad image9 tag required" ;
    sh:description "Ad image tag 9 is required because an image link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_LINK_FORMAT_WARNING> ;
    sh:name "ad link format warning" ;
    sh:description "Some items have ad links that are formatted incorrectly." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_LINK_SAME_AS_LINK> ;
    sh:name "ad link same as link" ;
    sh:description "Some items have ad link URLs that are duplicates of the link URLs for those items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO0_LINK_DUPLICATED> ;
    sh:name "ad video0 link duplicated" ;
    sh:description "ad_video_0_link is duplicated with another ad video link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO0_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad video0 link length too long" ;
    sh:description "ad_video_0_link length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO0_LINK_REQUIRED> ;
    sh:name "ad video0 link required" ;
    sh:description "ad_video_0_link is required for this item because ad_video_0_tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO0_LINK_WARNING> ;
    sh:name "ad video0 link warning" ;
    sh:description "ad_video_0_link is formatted incorrectly and will not be published with your items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO0_TAG_DUPLICATED> ;
    sh:name "ad video0 tag duplicated" ;
    sh:description "ad_video_0_tag is duplicated with another ad video tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO0_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad video0 tag length too long" ;
    sh:description "ad_video_0_tag length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO0_TAG_REQUIRED> ;
    sh:name "ad video0 tag required" ;
    sh:description "ad_video_0_tag is required because ad_video_0_link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO1_LINK_DUPLICATED> ;
    sh:name "ad video1 link duplicated" ;
    sh:description "ad_video_1_link is duplicated with another ad video link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO1_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad video1 link length too long" ;
    sh:description "ad_video_1_link length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO1_LINK_REQUIRED> ;
    sh:name "ad video1 link required" ;
    sh:description "ad_video_1_link is required for this item because ad_video_1_tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO1_LINK_WARNING> ;
    sh:name "ad video1 link warning" ;
    sh:description "ad_video_1_link is formatted incorrectly and will not be published with your items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO1_TAG_DUPLICATED> ;
    sh:name "ad video1 tag duplicated" ;
    sh:description "ad_video_1_tag is duplicated with another ad video tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO1_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad video1 tag length too long" ;
    sh:description "ad_video_1_tag length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO1_TAG_REQUIRED> ;
    sh:name "ad video1 tag required" ;
    sh:description "ad_video_1_tag is required because ad_video_1_link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO2_LINK_DUPLICATED> ;
    sh:name "ad video2 link duplicated" ;
    sh:description "ad_video_2_link is duplicated with another ad video link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO2_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad video2 link length too long" ;
    sh:description "ad_video_2_link length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO2_LINK_REQUIRED> ;
    sh:name "ad video2 link required" ;
    sh:description "ad_video_2_link is required for this item because ad_video_2_tag was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO2_LINK_WARNING> ;
    sh:name "ad video2 link warning" ;
    sh:description "ad_video_2_link is formatted incorrectly and will not be published with your items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO2_TAG_DUPLICATED> ;
    sh:name "ad video2 tag duplicated" ;
    sh:description "ad_video_2_tag is duplicated with another ad video tag." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO2_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad video2 tag length too long" ;
    sh:description "ad_video_2_tag length is too long. The maximum length is 511 characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AD_VIDEO2_TAG_REQUIRED> ;
    sh:name "ad video2 tag required" ;
    sh:description "ad_video_2_tag is required because ad_video_2_link was provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/ADDITIONAL_IMAGE_LINK_LENGTH_TOO_LONG> ;
    sh:name "additional image link length too long" ;
    sh:description "Some items have additional_image_link URLs that contain too many characters, so those items will not be published." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/ADDITIONAL_IMAGE_LINK_WARNING> ;
    sh:name "additional image link warning" ;
    sh:description "Some items have additional_image_link URLs that are formatted incorrectly and will not be published with your items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/ADWORDS_FORMAT_WARNING> ;
    sh:name "adwords format warning" ;
    sh:description "Some items have adwords_redirect links that are formatted incorrectly." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/ADWORDS_SAME_AS_LINK> ;
    sh:name "adwords same as link" ;
    sh:description "Some items have adwords_redirect URLs that are duplicates of the link URLs for those items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AGE_GROUP_INVALID> ;
    sh:name "age group invalid" ;
    sh:description "Some items have age group values that are formatted incorrectly, which may limit visibility in recommendations, search results and shopping experiences." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/ANDROID_DEEP_LINK_INVALID> ;
    sh:name "android deep link invalid" ;
    sh:description "Some items include invalid android_deep_link." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/AVAILABILITY_DATE_INVALID> ;
    sh:name "availability date invalid" ;
    sh:description "Some items have availability_date values that are formatted incorrectly, those items will be published without an availability date." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/COUNTRY_DOES_NOT_MAP_TO_CURRENCY> ;
    sh:name "country does not map to currency" ;
    sh:description "Some items include a currency that doesn't match the usual currency for the location where that product is sold or shipped." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/CUSTOM_LABEL_LENGTH_TOO_LONG> ;
    sh:name "custom label length too long" ;
    sh:description "Some items have custom_label values that are too long, those items will be published without that custom label." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/DESCRIPTION_LENGTH_TOO_LONG> ;
    sh:name "description length too long" ;
    sh:description "The description for some items were truncated because they contain too many characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/DUPLICATE_HEADERS> ;
    sh:name "duplicate headers" ;
    sh:description "Your feed contains duplicate headers." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/EXPIRATION_DATE_INVALID> ;
    sh:name "expiration date invalid" ;
    sh:description "Some items have expiration_date values that are formatted incorrectly, those items will be published without an expiration date." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/FETCH_SAME_SIGNATURE> ;
    sh:name "fetch same signature" ;
    sh:description "Ingestion completed early because there are no changes to your feed since the last successful update." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/GENDER_INVALID> ;
    sh:name "gender invalid" ;
    sh:description "Some items have gender values that are formatted incorrectly, which may limit visibility in recommendations, search results and shopping experiences." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/GTIN_INVALID> ;
    sh:name "gtin invalid" ;
    sh:description "Some items include incorrectly formatted GTINs." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/IMAGE_LINK_WARNING> ;
    sh:name "image link warning" ;
    sh:description "Some items have image_link URLs that are formatted incorrectly and will not be published with those items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/INCONSISTENT_CURRENCY_VALUES> ;
    sh:name "inconsistent currency values" ;
    sh:description "Some items include inconsistent currencies in price fields." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/INDEXED_PRODUCT_COUNT_LARGE_DELTA> ;
    sh:name "indexed product count large delta" ;
    sh:description "The product count has increased or decreased significantly compared to the last successful ingestion." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/IOS_DEEP_LINK_INVALID> ;
    sh:name "ios deep link invalid" ;
    sh:description "Some items include invalid ios_deep_link values." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/IS_BUNDLE_INVALID> ;
    sh:name "is bundle invalid" ;
    sh:description "Some items have is_bundle values that are formatted incorrectly, those items will be published without being bundled with other products." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/ITEM_ADDITIONAL_IMAGE_DOWNLOAD_FAILURE> ;
    sh:name "item additional image download failure" ;
    sh:description "Some items include additional_image_links that can't be found." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/LINK_FORMAT_WARNING> ;
    sh:name "link format warning" ;
    sh:description "Some items have an invalid product link which contains invalid UTM tracking paramaters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/MIN_AD_PRICE_INVALID> ;
    sh:name "min ad price invalid" ;
    sh:description "Some items include min_ad_price values that are formatted incorrectly." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/MPN_INVALID> ;
    sh:name "mpn invalid" ;
    sh:description "Some items include incorrectly formatted MPNs." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/MULTIPACK_INVALID> ;
    sh:name "multipack invalid" ;
    sh:description "Some items have invalid multipack values." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/OPTIONAL_CONDITION_INVALID> ;
    sh:name "optional condition invalid" ;
    sh:description "Some items include condition values that are formatted incorrectly, which may limit visibility in recommendations, search results and shopping experiences." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/OPTIONAL_CONDITION_MISSING> ;
    sh:name "optional condition missing" ;
    sh:description "Some items are missing a condition value, which may limit visibility in recommendations, search results and shopping experiences." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/OPTIONAL_PRODUCT_CATEGORY_INVALID> ;
    sh:name "optional product category invalid" ;
    sh:description "Some items include google_product_category values that are not formatted correctly according to the GPC taxonomy." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/OPTIONAL_PRODUCT_CATEGORY_MISSING> ;
    sh:name "optional product category missing" ;
    sh:description "Some items are missing a google_product_category." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/PRODUCT_CATEGORY_DEPTH_WARNING> ;
    sh:name "product category depth warning" ;
    sh:description "Some items only have 1 or 2 levels of google_product_category values, which may limit visibility in recommendations, search results and shopping experiences." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/PRODUCT_TYPE_LENGTH_TOO_LONG> ;
    sh:name "product type length too long" ;
    sh:description "Some items have product_type values that are too long, those items will be published without that product type." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/SALE_DATE_INVALID> ;
    sh:name "sale date invalid" ;
    sh:description "Some items have sale_price_effective_date values that are formatted incorrectly, those items will be published without a sale date." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/SALES_PRICE_INVALID> ;
    sh:name "sales price invalid" ;
    sh:description "Some items have sale price values that are higher than the original price of the item." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/SALES_PRICE_TOO_HIGH> ;
    sh:name "sales price too high" ;
    sh:description "Some items include a sales price that is higher than the list price. The sales price has been defaulted to the list price." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/SALES_PRICE_TOO_LOW> ;
    sh:name "sales price too low" ;
    sh:description "Some items include sales price that is much lower than the list price." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/SHIPPING_HEIGHT_INVALID> ;
    sh:name "shipping height invalid" ;
    sh:description "Some items include incorrectly formatted shipping_height." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/SHIPPING_INVALID> ;
    sh:name "shipping invalid" ;
    sh:description "Some items have shipping values that are formatted incorrectly." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/SHIPPING_WEIGHT_INVALID> ;
    sh:name "shipping weight invalid" ;
    sh:description "Some items have invalid shipping_weight values." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/SHIPPING_WIDTH_INVALID> ;
    sh:name "shipping width invalid" ;
    sh:description "Some items include incorrectly formatted shipping_width." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/SIZE_SYSTEM_INVALID> ;
    sh:name "size system invalid" ;
    sh:description "Some items have size system values which are not one of the supported size systems." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/SIZE_TYPE_INVALID> ;
    sh:name "size type invalid" ;
    sh:description "Some items have size type values that are formatted incorrectly, which may limit visibility in recommendations, search results and shopping experiences." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/TAX_INVALID> ;
    sh:name "tax invalid" ;
    sh:description "Some items have tax values that are formatted incorrectly." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/TITLE_LENGTH_TOO_LONG> ;
    sh:name "title length too long" ;
    sh:description "The title for some items were truncated because they contain too many characters." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/TOO_MANY_ADDITIONAL_IMAGE_LINKS> ;
    sh:name "too many additional image links" ;
    sh:description "Some items have additional_image_link values that exceed the limit for additional images, those items will be published without some of your images." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/UPDATED_TIME_INVALID> ;
    sh:name "updated time invalid" ;
    sh:description "Some items have updated_time values thate are formatted incorrectly, those items will be published without an updated time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/UTM_SOURCE_AUTO_CORRECTED> ;
    sh:name "utm source auto corrected" ;
    sh:description "Some items include utm_source values that are formatted incorrectly and have been automatically corrected." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/VIDEO_REQUIRED_WHEN_AD_VIDEO_PROVIDED> ;
    sh:name "video required when ad video provided" ;
    sh:description "A video is required in the item when ad_video fields are provided." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedValidationWarnings/WEIGHT_UNIT_INVALID> ;
    sh:name "weight unit invalid" ;
    sh:description "Some items have weight_unit values that are formatted incorrectly, those items will be published without a weight unit." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Feed Video Counts
pinterest:CatalogsFeedVideoCountsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedVideoCounts ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedVideoCounts/ingestedVideos> ;
    sh:name "ingested videos" ;
    sh:description "The number of videos successfully ingested from the feed file." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedVideoCounts/notIngestedVideos> ;
    sh:name "not ingested videos" ;
    sh:description "The number of videos that were not ingested from the feed file." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedVideoCounts/totalVideos> ;
    sh:name "total videos" ;
    sh:description "The number of videos in the feed file." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Feeds Create Request
pinterest:CatalogsFeedsCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedsCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsCreateRequest/credentials> ;
    sh:name "credentials" ;
    sh:description "This field is **OPTIONAL**. Use this if your feed file requires username and password." ;
    sh:node pinterest:CatalogsFeedCredentialsShape ;
    sh:class pinterest:CatalogsFeedCredentials ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsCreateRequest/defaultAvailability> ;
    sh:name "default availability" ;
    sh:description "Default availability for products in a feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "IN_STOCK" "OUT_OF_STOCK" "PREORDER" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsCreateRequest/defaultCountry> ;
    sh:name "default country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsCreateRequest/defaultCurrency> ;
    sh:name "default currency" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsCreateRequest/defaultLocale> ;
    sh:name "default locale" ;
    sh:description "The locale used within a feed for product descriptions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsCreateRequest/format> ;
    sh:name "format" ;
    sh:description "The file format of a feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "TSV" "CSV" "XML" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsCreateRequest/location> ;
    sh:name "location" ;
    sh:description "The URL where a feed is available for download. This URL is what Pinterest will use to download a feed for processing." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(http|https|ftp|sftp)://" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsCreateRequest/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a given feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsCreateRequest/preferredProcessingSchedule> ;
    sh:name "preferred processing schedule" ;
    sh:description "Daily processing schedule. This field is **OPTIONAL**. Use this to configure the preferred time for processing a feed (otherwise random)." ;
    sh:node pinterest:CatalogsFeedProcessingScheduleShape ;
    sh:class pinterest:CatalogsFeedProcessingSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsCreateRequest/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "INACTIVE" ) ;
  ] .

# Shape for Catalogs Retail Feeds Create Request
pinterest:CatalogsRetailFeedsCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailFeedsCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsCreateRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the feed. If not provided, feed will use a default catalog based on type. Currently, this field has no effect." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsCreateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsCreateRequest/credentials> ;
    sh:name "credentials" ;
    sh:description "This field is **OPTIONAL**. Use this if your feed file requires username and password." ;
    sh:node pinterest:CatalogsFeedCredentialsShape ;
    sh:class pinterest:CatalogsFeedCredentials ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsCreateRequest/defaultAvailability> ;
    sh:name "default availability" ;
    sh:description "Default availability for products in a feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "IN_STOCK" "OUT_OF_STOCK" "PREORDER" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsCreateRequest/defaultCountry> ;
    sh:name "default country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsCreateRequest/defaultCurrency> ;
    sh:name "default currency" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsCreateRequest/defaultLocale> ;
    sh:name "default locale" ;
    sh:description "The locale used within a feed for product descriptions." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsCreateRequest/format> ;
    sh:name "format" ;
    sh:description "The file format of a feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "TSV" "CSV" "XML" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsCreateRequest/location> ;
    sh:name "location" ;
    sh:description "The URL where a feed is available for download. This URL is what Pinterest will use to download a feed for processing." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(http|https|ftp|sftp)://" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsCreateRequest/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a given feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsCreateRequest/preferredProcessingSchedule> ;
    sh:name "preferred processing schedule" ;
    sh:description "Daily processing schedule. This field is **OPTIONAL**. Use this to configure the preferred time for processing a feed (otherwise random)." ;
    sh:node pinterest:CatalogsFeedProcessingScheduleShape ;
    sh:class pinterest:CatalogsFeedProcessingSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsCreateRequest/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "INACTIVE" ) ;
  ] .

# Shape for Catalogs Hotel Feeds Create Request
pinterest:CatalogsHotelFeedsCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelFeedsCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsCreateRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the feed. If not provided, feed will use a default catalog based on type. At the moment a catalog can not have multiple hotel feeds but this will change in the future." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsCreateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsCreateRequest/credentials> ;
    sh:name "credentials" ;
    sh:description "This field is **OPTIONAL**. Use this if your feed file requires username and password." ;
    sh:node pinterest:CatalogsFeedCredentialsShape ;
    sh:class pinterest:CatalogsFeedCredentials ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsCreateRequest/defaultCurrency> ;
    sh:name "default currency" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsCreateRequest/defaultLocale> ;
    sh:name "default locale" ;
    sh:description "The locale used within a feed for product descriptions." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsCreateRequest/format> ;
    sh:name "format" ;
    sh:description "The file format of a feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "TSV" "CSV" "XML" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsCreateRequest/location> ;
    sh:name "location" ;
    sh:description "The URL where a feed is available for download. This URL is what Pinterest will use to download a feed for processing." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(http|https|ftp|sftp)://" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsCreateRequest/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a given feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsCreateRequest/preferredProcessingSchedule> ;
    sh:name "preferred processing schedule" ;
    sh:description "Daily processing schedule. This field is **OPTIONAL**. Use this to configure the preferred time for processing a feed (otherwise random)." ;
    sh:node pinterest:CatalogsFeedProcessingScheduleShape ;
    sh:class pinterest:CatalogsFeedProcessingSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsCreateRequest/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "INACTIVE" ) ;
  ] .

# Shape for Catalogs Creative Assets Feeds Create Request
pinterest:CatalogsCreativeAssetsFeedsCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsFeedsCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsCreateRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the feed. If not provided, feed will use a default catalog based on type. At the moment a catalog can not have multiple creative assets feeds but this will change in the future." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsCreateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsCreateRequest/credentials> ;
    sh:name "credentials" ;
    sh:description "This field is **OPTIONAL**. Use this if your feed file requires username and password." ;
    sh:node pinterest:CatalogsFeedCredentialsShape ;
    sh:class pinterest:CatalogsFeedCredentials ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsCreateRequest/defaultCountry> ;
    sh:name "default country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsCreateRequest/defaultCurrency> ;
    sh:name "default currency" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsCreateRequest/defaultLocale> ;
    sh:name "default locale" ;
    sh:description "The locale used within a feed for product descriptions." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsCreateRequest/format> ;
    sh:name "format" ;
    sh:description "The file format of a feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "TSV" "CSV" "XML" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsCreateRequest/location> ;
    sh:name "location" ;
    sh:description "The URL where a feed is available for download. This URL is what Pinterest will use to download a feed for processing." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(http|https|ftp|sftp)://" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsCreateRequest/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a given feed." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsCreateRequest/preferredProcessingSchedule> ;
    sh:name "preferred processing schedule" ;
    sh:description "Daily processing schedule. This field is **OPTIONAL**. Use this to configure the preferred time for processing a feed (otherwise random)." ;
    sh:node pinterest:CatalogsFeedProcessingScheduleShape ;
    sh:class pinterest:CatalogsFeedProcessingSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsCreateRequest/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "INACTIVE" ) ;
  ] .

# Shape for Catalogs Creative Assets Feeds Update Request
pinterest:CatalogsCreativeAssetsFeedsUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsFeedsUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsUpdateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsUpdateRequest/credentials> ;
    sh:name "credentials" ;
    sh:description "This field is **OPTIONAL**. Use this if your feed file requires username and password." ;
    sh:node pinterest:CatalogsFeedCredentialsShape ;
    sh:class pinterest:CatalogsFeedCredentials ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsUpdateRequest/defaultCurrency> ;
    sh:name "default currency" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsUpdateRequest/format> ;
    sh:name "format" ;
    sh:description "The file format of a feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TSV" "CSV" "XML" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsUpdateRequest/location> ;
    sh:name "location" ;
    sh:description "The URL where a feed is available for download. This URL is what Pinterest will use to download a feed for processing." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^(http|https|ftp|sftp)://" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsUpdateRequest/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a given feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsUpdateRequest/preferredProcessingSchedule> ;
    sh:name "preferred processing schedule" ;
    sh:description "Daily processing schedule. This field is **OPTIONAL**. Use this to configure the preferred time for processing a feed (otherwise random)." ;
    sh:node pinterest:CatalogsFeedProcessingScheduleShape ;
    sh:class pinterest:CatalogsFeedProcessingSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsFeedsUpdateRequest/status> ;
    sh:name "status" ;
    sh:description "Status for catalogs entities. Present in catalogs_feed values. When a feed is deleted, the response will inform DELETED as status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "INACTIVE" ) ;
  ] .

# Shape for Catalogs Retail Feeds Update Request
pinterest:CatalogsRetailFeedsUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailFeedsUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsUpdateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsUpdateRequest/credentials> ;
    sh:name "credentials" ;
    sh:description "This field is **OPTIONAL**. Use this if your feed file requires username and password." ;
    sh:node pinterest:CatalogsFeedCredentialsShape ;
    sh:class pinterest:CatalogsFeedCredentials ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsUpdateRequest/defaultAvailability> ;
    sh:name "default availability" ;
    sh:description "Default availability for products in a feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "IN_STOCK" "OUT_OF_STOCK" "PREORDER" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsUpdateRequest/defaultCurrency> ;
    sh:name "default currency" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsUpdateRequest/format> ;
    sh:name "format" ;
    sh:description "The file format of a feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TSV" "CSV" "XML" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsUpdateRequest/location> ;
    sh:name "location" ;
    sh:description "The URL where a feed is available for download. This URL is what Pinterest will use to download a feed for processing." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^(http|https|ftp|sftp)://" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsUpdateRequest/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a given feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsUpdateRequest/preferredProcessingSchedule> ;
    sh:name "preferred processing schedule" ;
    sh:description "Daily processing schedule. This field is **OPTIONAL**. Use this to configure the preferred time for processing a feed (otherwise random)." ;
    sh:node pinterest:CatalogsFeedProcessingScheduleShape ;
    sh:class pinterest:CatalogsFeedProcessingSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailFeedsUpdateRequest/status> ;
    sh:name "status" ;
    sh:description "Status for catalogs entities. Present in catalogs_feed values. When a feed is deleted, the response will inform DELETED as status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "INACTIVE" ) ;
  ] .

# Shape for Catalogs Hotel Feeds Update Request
pinterest:CatalogsHotelFeedsUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelFeedsUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsUpdateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsUpdateRequest/credentials> ;
    sh:name "credentials" ;
    sh:description "This field is **OPTIONAL**. Use this if your feed file requires username and password." ;
    sh:node pinterest:CatalogsFeedCredentialsShape ;
    sh:class pinterest:CatalogsFeedCredentials ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsUpdateRequest/defaultCurrency> ;
    sh:name "default currency" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsUpdateRequest/format> ;
    sh:name "format" ;
    sh:description "The file format of a feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TSV" "CSV" "XML" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsUpdateRequest/location> ;
    sh:name "location" ;
    sh:description "The URL where a feed is available for download. This URL is what Pinterest will use to download a feed for processing." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^(http|https|ftp|sftp)://" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsUpdateRequest/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a given feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsUpdateRequest/preferredProcessingSchedule> ;
    sh:name "preferred processing schedule" ;
    sh:description "Daily processing schedule. This field is **OPTIONAL**. Use this to configure the preferred time for processing a feed (otherwise random)." ;
    sh:node pinterest:CatalogsFeedProcessingScheduleShape ;
    sh:class pinterest:CatalogsFeedProcessingSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelFeedsUpdateRequest/status> ;
    sh:name "status" ;
    sh:description "Status for catalogs entities. Present in catalogs_feed values. When a feed is deleted, the response will inform DELETED as status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "INACTIVE" ) ;
  ] .

# Shape for Catalogs Feeds Update Request
pinterest:CatalogsFeedsUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsFeedsUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsUpdateRequest/credentials> ;
    sh:name "credentials" ;
    sh:description "This field is **OPTIONAL**. Use this if your feed file requires username and password." ;
    sh:node pinterest:CatalogsFeedCredentialsShape ;
    sh:class pinterest:CatalogsFeedCredentials ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsUpdateRequest/defaultAvailability> ;
    sh:name "default availability" ;
    sh:description "Default availability for products in a feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "IN_STOCK" "OUT_OF_STOCK" "PREORDER" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsUpdateRequest/defaultCurrency> ;
    sh:name "default currency" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsUpdateRequest/format> ;
    sh:name "format" ;
    sh:description "The file format of a feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TSV" "CSV" "XML" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsUpdateRequest/location> ;
    sh:name "location" ;
    sh:description "The URL where a feed is available for download. This URL is what Pinterest will use to download a feed for processing." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^(http|https|ftp|sftp)://" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsUpdateRequest/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a given feed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsUpdateRequest/preferredProcessingSchedule> ;
    sh:name "preferred processing schedule" ;
    sh:description "Daily processing schedule. This field is **OPTIONAL**. Use this to configure the preferred time for processing a feed (otherwise random)." ;
    sh:node pinterest:CatalogsFeedProcessingScheduleShape ;
    sh:class pinterest:CatalogsFeedProcessingSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsFeedsUpdateRequest/status> ;
    sh:name "status" ;
    sh:description "Status for catalogs entities. Present in catalogs_feed values. When a feed is deleted, the response will inform DELETED as status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "INACTIVE" ) ;
  ] .

# Shape for Catalogs Item Validation Details
pinterest:CatalogsItemValidationDetailsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItemValidationDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationDetails/attributeName> ;
    sh:name "attribute name" ;
    sh:description "Product item fields" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ITEM_ID" "ITEM_GROUP_ID" "TITLE" "DESCRIPTION" "ITEM_LINK" "ORGANIC_LINK" "IMAGE_LINK" "ADWORDS_REDIRECT_LINK" "AD_LINK" "SIZE" "GOOGLE_PRODUCT_CATEGORY" "PRODUCT_CATEGORY" "CONDITION" "AVAILABILITY" "GENDER" "AGE_GROUP" "SIZE_TYPE" "SIZE_SYSTEM" "ADULT" "SHIPPING" "SHIPPING_WEIGHT" "TAX" "MULTIPACK" "ADDITIONAL_IMAGE_LINK" "PRICE" "SALE_PRICE" "IS_BUNDLE" "EXPIRATION_DATE" "AVAILABILITY_DATE" "WEIGHT_UNIT" "PRODUCT_TYPE" "CUSTOM_LABEL_0" "CUSTOM_LABEL_1" "CUSTOM_LABEL_2" "CUSTOM_LABEL_3" "CUSTOM_LABEL_4" "MATERIAL" "PATTERN" "COLOR" "BRAND" "GTIN" "MPN" "IOS_DEEP_LINK" "ANDROID_DEEP_LINK" "FREE_SHIPPING_LABEL" "FREE_SHIPPING_LIMIT" "AVG_REVIEW_RATING" "NUM_RATINGS" "NUM_REVIEWS" "ALT_TEXT" "VARIANT_NAMES" "VARIANT_VALUES" "MIN_AD_PRICE" "SHIPPING_WIDTH" "SHIPPING_HEIGHT" "AD_IMAGE_0_LINK" "AD_IMAGE_1_LINK" "AD_IMAGE_2_LINK" "AD_IMAGE_3_LINK" "AD_IMAGE_4_LINK" "AD_IMAGE_5_LINK" "AD_IMAGE_6_LINK" "AD_IMAGE_7_LINK" "AD_IMAGE_8_LINK" "AD_IMAGE_9_LINK" "AD_IMAGE_10_LINK" "AD_IMAGE_11_LINK" "AD_IMAGE_12_LINK" "AD_IMAGE_13_LINK" "AD_IMAGE_14_LINK" "AD_IMAGE_15_LINK" "AD_IMAGE_16_LINK" "AD_IMAGE_17_LINK" "AD_IMAGE_18_LINK" "AD_IMAGE_19_LINK" "AD_IMAGE_0_TAG" "AD_IMAGE_1_TAG" "AD_IMAGE_2_TAG" "AD_IMAGE_3_TAG" "AD_IMAGE_4_TAG" "AD_IMAGE_5_TAG" "AD_IMAGE_6_TAG" "AD_IMAGE_7_TAG" "AD_IMAGE_8_TAG" "AD_IMAGE_9_TAG" "AD_IMAGE_10_TAG" "AD_IMAGE_11_TAG" "AD_IMAGE_12_TAG" "AD_IMAGE_13_TAG" "AD_IMAGE_14_TAG" "AD_IMAGE_15_TAG" "AD_IMAGE_16_TAG" "AD_IMAGE_17_TAG" "AD_IMAGE_18_TAG" "AD_IMAGE_19_TAG" "AD_VIDEO_0_LINK" "AD_VIDEO_1_LINK" "AD_VIDEO_2_LINK" "AD_VIDEO_0_TAG" "AD_VIDEO_1_TAG" "AD_VIDEO_2_TAG" "INSTALLMENT_PRICE" "UNIT_PRICE_TOTAL_MEASURE" "UNIT_PRICE_BASE_MEASURE" "SALE_PRICE_EFFECTIVE_DATE" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationDetails/providedValue> ;
    sh:name "provided value" ;
    sh:description "Provided value that caused the validation issue." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Item Validation Errors
pinterest:CatalogsItemValidationErrorsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItemValidationErrors ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/ADULT_INVALID> ;
    sh:name "adult invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/ADWORDS_FORMAT_INVALID> ;
    sh:name "adwords format invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/AVAILABILITY_INVALID> ;
    sh:name "availability invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/BLOCKLISTED_IMAGE_SIGNATURE> ;
    sh:name "blocklisted image signature" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/DESCRIPTION_MISSING> ;
    sh:name "description missing" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/DUPLICATE_PRODUCTS> ;
    sh:name "duplicate products" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/IMAGE_LINK_INVALID> ;
    sh:name "image link invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/IMAGE_LINK_LENGTH_TOO_LONG> ;
    sh:name "image link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/IMAGE_LINK_MISSING> ;
    sh:name "image link missing" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/INVALID_DOMAIN> ;
    sh:name "invalid domain" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/ITEM_MAIN_IMAGE_DOWNLOAD_FAILURE> ;
    sh:name "item main image download failure" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/ITEMID_MISSING> ;
    sh:name "itemid missing" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/LINK_FORMAT_INVALID> ;
    sh:name "link format invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/LINK_LENGTH_TOO_LONG> ;
    sh:name "link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/LIST_PRICE_INVALID> ;
    sh:name "list price invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/MAX_ITEMS_PER_ITEM_GROUP_EXCEEDED> ;
    sh:name "max items per item group exceeded" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/PARSE_LINE_ERROR> ;
    sh:name "parse line error" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/PINJOIN_CONTENT_UNSAFE> ;
    sh:name "pinjoin content unsafe" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/PRICE_CANNOT_BE_DETERMINED> ;
    sh:name "price cannot be determined" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/PRICE_MISSING> ;
    sh:name "price missing" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/PRODUCT_LINK_MISSING> ;
    sh:name "product link missing" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/PRODUCT_PRICE_INVALID> ;
    sh:name "product price invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationErrors/TITLE_MISSING> ;
    sh:name "title missing" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Item Validation Issues
pinterest:CatalogsItemValidationIssuesShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItemValidationIssues ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationIssues/errors> ;
    sh:name "errors" ;
    sh:node pinterest:CatalogsItemValidationErrorsShape ;
    sh:class pinterest:CatalogsItemValidationErrors ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationIssues/itemId> ;
    sh:name "item id" ;
    sh:description "The merchant-created unique ID that represents the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationIssues/itemNumber> ;
    sh:name "item number" ;
    sh:description "Item number based on order of appearance in the Catalogs Feed. For example, '0' refers to first item found in a feed that was downloaded from a 'location' specified during feed creation." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationIssues/warnings> ;
    sh:name "warnings" ;
    sh:node pinterest:CatalogsItemValidationWarningsShape ;
    sh:class pinterest:CatalogsItemValidationWarnings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Item Validation Warnings
pinterest:CatalogsItemValidationWarningsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItemValidationWarnings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE0_LINK_DUPLICATED> ;
    sh:name "ad image0 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE0_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image0 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE0_LINK_REQUIRED> ;
    sh:name "ad image0 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE0_LINK_WARNING> ;
    sh:name "ad image0 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE0_TAG_DUPLICATED> ;
    sh:name "ad image0 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE0_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image0 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE0_TAG_REQUIRED> ;
    sh:name "ad image0 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE10_LINK_DUPLICATED> ;
    sh:name "ad image10 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE10_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image10 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE10_LINK_REQUIRED> ;
    sh:name "ad image10 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE10_LINK_WARNING> ;
    sh:name "ad image10 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE10_TAG_DUPLICATED> ;
    sh:name "ad image10 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE10_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image10 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE10_TAG_REQUIRED> ;
    sh:name "ad image10 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE11_LINK_DUPLICATED> ;
    sh:name "ad image11 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE11_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image11 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE11_LINK_REQUIRED> ;
    sh:name "ad image11 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE11_LINK_WARNING> ;
    sh:name "ad image11 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE11_TAG_DUPLICATED> ;
    sh:name "ad image11 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE11_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image11 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE11_TAG_REQUIRED> ;
    sh:name "ad image11 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE12_LINK_DUPLICATED> ;
    sh:name "ad image12 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE12_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image12 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE12_LINK_REQUIRED> ;
    sh:name "ad image12 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE12_LINK_WARNING> ;
    sh:name "ad image12 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE12_TAG_DUPLICATED> ;
    sh:name "ad image12 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE12_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image12 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE12_TAG_REQUIRED> ;
    sh:name "ad image12 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE13_LINK_DUPLICATED> ;
    sh:name "ad image13 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE13_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image13 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE13_LINK_REQUIRED> ;
    sh:name "ad image13 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE13_LINK_WARNING> ;
    sh:name "ad image13 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE13_TAG_DUPLICATED> ;
    sh:name "ad image13 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE13_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image13 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE13_TAG_REQUIRED> ;
    sh:name "ad image13 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE14_LINK_DUPLICATED> ;
    sh:name "ad image14 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE14_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image14 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE14_LINK_REQUIRED> ;
    sh:name "ad image14 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE14_LINK_WARNING> ;
    sh:name "ad image14 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE14_TAG_DUPLICATED> ;
    sh:name "ad image14 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE14_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image14 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE14_TAG_REQUIRED> ;
    sh:name "ad image14 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE15_LINK_DUPLICATED> ;
    sh:name "ad image15 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE15_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image15 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE15_LINK_REQUIRED> ;
    sh:name "ad image15 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE15_LINK_WARNING> ;
    sh:name "ad image15 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE15_TAG_DUPLICATED> ;
    sh:name "ad image15 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE15_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image15 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE15_TAG_REQUIRED> ;
    sh:name "ad image15 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE16_LINK_DUPLICATED> ;
    sh:name "ad image16 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE16_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image16 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE16_LINK_REQUIRED> ;
    sh:name "ad image16 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE16_LINK_WARNING> ;
    sh:name "ad image16 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE16_TAG_DUPLICATED> ;
    sh:name "ad image16 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE16_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image16 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE16_TAG_REQUIRED> ;
    sh:name "ad image16 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE17_LINK_DUPLICATED> ;
    sh:name "ad image17 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE17_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image17 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE17_LINK_REQUIRED> ;
    sh:name "ad image17 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE17_LINK_WARNING> ;
    sh:name "ad image17 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE17_TAG_DUPLICATED> ;
    sh:name "ad image17 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE17_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image17 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE17_TAG_REQUIRED> ;
    sh:name "ad image17 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE18_LINK_DUPLICATED> ;
    sh:name "ad image18 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE18_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image18 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE18_LINK_REQUIRED> ;
    sh:name "ad image18 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE18_LINK_WARNING> ;
    sh:name "ad image18 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE18_TAG_DUPLICATED> ;
    sh:name "ad image18 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE18_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image18 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE18_TAG_REQUIRED> ;
    sh:name "ad image18 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE19_LINK_DUPLICATED> ;
    sh:name "ad image19 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE19_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image19 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE19_LINK_REQUIRED> ;
    sh:name "ad image19 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE19_LINK_WARNING> ;
    sh:name "ad image19 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE19_TAG_DUPLICATED> ;
    sh:name "ad image19 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE19_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image19 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE19_TAG_REQUIRED> ;
    sh:name "ad image19 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE1_LINK_DUPLICATED> ;
    sh:name "ad image1 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE1_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image1 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE1_LINK_REQUIRED> ;
    sh:name "ad image1 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE1_LINK_WARNING> ;
    sh:name "ad image1 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE1_TAG_DUPLICATED> ;
    sh:name "ad image1 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE1_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image1 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE1_TAG_REQUIRED> ;
    sh:name "ad image1 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE2_LINK_DUPLICATED> ;
    sh:name "ad image2 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE2_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image2 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE2_LINK_REQUIRED> ;
    sh:name "ad image2 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE2_LINK_WARNING> ;
    sh:name "ad image2 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE2_TAG_DUPLICATED> ;
    sh:name "ad image2 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE2_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image2 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE2_TAG_REQUIRED> ;
    sh:name "ad image2 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE3_LINK_DUPLICATED> ;
    sh:name "ad image3 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE3_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image3 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE3_LINK_REQUIRED> ;
    sh:name "ad image3 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE3_LINK_WARNING> ;
    sh:name "ad image3 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE3_TAG_DUPLICATED> ;
    sh:name "ad image3 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE3_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image3 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE3_TAG_REQUIRED> ;
    sh:name "ad image3 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE4_LINK_DUPLICATED> ;
    sh:name "ad image4 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE4_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image4 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE4_LINK_REQUIRED> ;
    sh:name "ad image4 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE4_LINK_WARNING> ;
    sh:name "ad image4 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE4_TAG_DUPLICATED> ;
    sh:name "ad image4 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE4_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image4 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE4_TAG_REQUIRED> ;
    sh:name "ad image4 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE5_LINK_DUPLICATED> ;
    sh:name "ad image5 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE5_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image5 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE5_LINK_REQUIRED> ;
    sh:name "ad image5 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE5_LINK_WARNING> ;
    sh:name "ad image5 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE5_TAG_DUPLICATED> ;
    sh:name "ad image5 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE5_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image5 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE5_TAG_REQUIRED> ;
    sh:name "ad image5 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE6_LINK_DUPLICATED> ;
    sh:name "ad image6 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE6_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image6 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE6_LINK_REQUIRED> ;
    sh:name "ad image6 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE6_LINK_WARNING> ;
    sh:name "ad image6 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE6_TAG_DUPLICATED> ;
    sh:name "ad image6 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE6_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image6 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE6_TAG_REQUIRED> ;
    sh:name "ad image6 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE7_LINK_DUPLICATED> ;
    sh:name "ad image7 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE7_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image7 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE7_LINK_REQUIRED> ;
    sh:name "ad image7 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE7_LINK_WARNING> ;
    sh:name "ad image7 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE7_TAG_DUPLICATED> ;
    sh:name "ad image7 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE7_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image7 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE7_TAG_REQUIRED> ;
    sh:name "ad image7 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE8_LINK_DUPLICATED> ;
    sh:name "ad image8 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE8_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image8 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE8_LINK_REQUIRED> ;
    sh:name "ad image8 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE8_LINK_WARNING> ;
    sh:name "ad image8 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE8_TAG_DUPLICATED> ;
    sh:name "ad image8 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE8_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image8 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE8_TAG_REQUIRED> ;
    sh:name "ad image8 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE9_LINK_DUPLICATED> ;
    sh:name "ad image9 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE9_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad image9 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE9_LINK_REQUIRED> ;
    sh:name "ad image9 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE9_LINK_WARNING> ;
    sh:name "ad image9 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE9_TAG_DUPLICATED> ;
    sh:name "ad image9 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE9_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad image9 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_IMAGE9_TAG_REQUIRED> ;
    sh:name "ad image9 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_LINK_FORMAT_WARNING> ;
    sh:name "ad link format warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_LINK_SAME_AS_LINK> ;
    sh:name "ad link same as link" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO0_LINK_DUPLICATED> ;
    sh:name "ad video0 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO0_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad video0 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO0_LINK_REQUIRED> ;
    sh:name "ad video0 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO0_LINK_WARNING> ;
    sh:name "ad video0 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO0_TAG_DUPLICATED> ;
    sh:name "ad video0 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO0_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad video0 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO0_TAG_REQUIRED> ;
    sh:name "ad video0 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO1_LINK_DUPLICATED> ;
    sh:name "ad video1 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO1_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad video1 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO1_LINK_REQUIRED> ;
    sh:name "ad video1 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO1_LINK_WARNING> ;
    sh:name "ad video1 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO1_TAG_DUPLICATED> ;
    sh:name "ad video1 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO1_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad video1 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO1_TAG_REQUIRED> ;
    sh:name "ad video1 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO2_LINK_DUPLICATED> ;
    sh:name "ad video2 link duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO2_LINK_LENGTH_TOO_LONG> ;
    sh:name "ad video2 link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO2_LINK_REQUIRED> ;
    sh:name "ad video2 link required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO2_LINK_WARNING> ;
    sh:name "ad video2 link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO2_TAG_DUPLICATED> ;
    sh:name "ad video2 tag duplicated" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO2_TAG_LENGTH_TOO_LONG> ;
    sh:name "ad video2 tag length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AD_VIDEO2_TAG_REQUIRED> ;
    sh:name "ad video2 tag required" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/ADDITIONAL_IMAGE_LINK_LENGTH_TOO_LONG> ;
    sh:name "additional image link length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/ADDITIONAL_IMAGE_LINK_WARNING> ;
    sh:name "additional image link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/ADWORDS_FORMAT_WARNING> ;
    sh:name "adwords format warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/ADWORDS_SAME_AS_LINK> ;
    sh:name "adwords same as link" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AGE_GROUP_INVALID> ;
    sh:name "age group invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/ANDROID_DEEP_LINK_INVALID> ;
    sh:name "android deep link invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/AVAILABILITY_DATE_INVALID> ;
    sh:name "availability date invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/COUNTRY_DOES_NOT_MAP_TO_CURRENCY> ;
    sh:name "country does not map to currency" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/CUSTOM_LABEL_LENGTH_TOO_LONG> ;
    sh:name "custom label length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/DESCRIPTION_LENGTH_TOO_LONG> ;
    sh:name "description length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/EXPIRATION_DATE_INVALID> ;
    sh:name "expiration date invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/GENDER_INVALID> ;
    sh:name "gender invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/GTIN_INVALID> ;
    sh:name "gtin invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/IMAGE_LINK_WARNING> ;
    sh:name "image link warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/IOS_DEEP_LINK_INVALID> ;
    sh:name "ios deep link invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/IS_BUNDLE_INVALID> ;
    sh:name "is bundle invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/ITEM_ADDITIONAL_IMAGE_DOWNLOAD_FAILURE> ;
    sh:name "item additional image download failure" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/LINK_FORMAT_WARNING> ;
    sh:name "link format warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/MIN_AD_PRICE_INVALID> ;
    sh:name "min ad price invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/MPN_INVALID> ;
    sh:name "mpn invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/MULTIPACK_INVALID> ;
    sh:name "multipack invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/OPTIONAL_CONDITION_INVALID> ;
    sh:name "optional condition invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/OPTIONAL_CONDITION_MISSING> ;
    sh:name "optional condition missing" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/OPTIONAL_PRODUCT_CATEGORY_INVALID> ;
    sh:name "optional product category invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/OPTIONAL_PRODUCT_CATEGORY_MISSING> ;
    sh:name "optional product category missing" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/PRODUCT_CATEGORY_DEPTH_WARNING> ;
    sh:name "product category depth warning" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/PRODUCT_TYPE_LENGTH_TOO_LONG> ;
    sh:name "product type length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/SALE_DATE_INVALID> ;
    sh:name "sale date invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/SALES_PRICE_INVALID> ;
    sh:name "sales price invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/SALES_PRICE_TOO_HIGH> ;
    sh:name "sales price too high" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/SALES_PRICE_TOO_LOW> ;
    sh:name "sales price too low" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/SHIPPING_HEIGHT_INVALID> ;
    sh:name "shipping height invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/SHIPPING_INVALID> ;
    sh:name "shipping invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/SHIPPING_WEIGHT_INVALID> ;
    sh:name "shipping weight invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/SHIPPING_WIDTH_INVALID> ;
    sh:name "shipping width invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/SIZE_SYSTEM_INVALID> ;
    sh:name "size system invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/SIZE_TYPE_INVALID> ;
    sh:name "size type invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/TAX_INVALID> ;
    sh:name "tax invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/TITLE_LENGTH_TOO_LONG> ;
    sh:name "title length too long" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/TOO_MANY_ADDITIONAL_IMAGE_LINKS> ;
    sh:name "too many additional image links" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/UTM_SOURCE_AUTO_CORRECTED> ;
    sh:name "utm source auto corrected" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/VIDEO_REQUIRED_WHEN_AD_VIDEO_PROVIDED> ;
    sh:name "video required when ad video provided" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemValidationWarnings/WEIGHT_UNIT_INVALID> ;
    sh:name "weight unit invalid" ;
    sh:node pinterest:CatalogsItemValidationDetailsShape ;
    sh:class pinterest:CatalogsItemValidationDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Items Batch
pinterest:CatalogsItemsBatchShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItemsBatch ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsBatch/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] .

# Shape for Catalogs Items Post Filters
pinterest:CatalogsItemsPostFiltersShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItemsPostFilters ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsPostFilters/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] .

# Shape for Catalogs Updatable Hotel Attributes
pinterest:CatalogsUpdatableHotelAttributesShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsUpdatableHotelAttributes ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/address> ;
    sh:name "address" ;
    sh:node pinterest:CatalogsHotelAddressShape ;
    sh:class pinterest:CatalogsHotelAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/basePrice> ;
    sh:name "base price" ;
    sh:description "Base price of the hotel room per night followed by the ISO currency code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/brand> ;
    sh:name "brand" ;
    sh:description "The brand to which this hotel belongs to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/category> ;
    sh:name "category" ;
    sh:description "The type of property. The category can be any type of internal description desired." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/customLabel0> ;
    sh:name "custom label0" ;
    sh:description "Custom grouping of hotels" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/customLabel1> ;
    sh:name "custom label1" ;
    sh:description "Custom grouping of hotels" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/customLabel2> ;
    sh:name "custom label2" ;
    sh:description "Custom grouping of hotels" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/customLabel3> ;
    sh:name "custom label3" ;
    sh:description "Custom grouping of hotels" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/customLabel4> ;
    sh:name "custom label4" ;
    sh:description "Custom grouping of hotels" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/description> ;
    sh:name "description" ;
    sh:description "Brief description of the hotel." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/guestRatings> ;
    sh:name "guest ratings" ;
    sh:description "If specified, you must provide all properties" ;
    sh:node pinterest:CatalogsHotelGuestRatingsShape ;
    sh:class pinterest:CatalogsHotelGuestRatings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/latitude> ;
    sh:name "latitude" ;
    sh:description "Latitude of the hotel." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/link> ;
    sh:name "link" ;
    sh:description "Link to the product page" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/longitude> ;
    sh:name "longitude" ;
    sh:description "Longitude of the hotel." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/name> ;
    sh:name "name" ;
    sh:description "The hotel's name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/neighborhood> ;
    sh:name "neighborhood" ;
    sh:description "A list of neighborhoods where the hotel is located" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableHotelAttributes/salePrice> ;
    sh:name "sale price" ;
    sh:description "Sale price of a hotel room per night. Used to advertise discounts off the regular price of the hotel." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Address
pinterest:CatalogsHotelAddressShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelAddress ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAddress/addr1> ;
    sh:name "addr1" ;
    sh:description "Primary street address of hotel." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAddress/city> ;
    sh:name "city" ;
    sh:description "City where the hotel is located." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAddress/country> ;
    sh:name "country" ;
    sh:description "Country where the hotel is located." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAddress/postalCode> ;
    sh:name "postal code" ;
    sh:description "Required for countries with a postal code system. Postal or zip code of the hotel." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAddress/region> ;
    sh:name "region" ;
    sh:description "State, county, province, where the hotel is located." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Guest Ratings
pinterest:CatalogsHotelGuestRatingsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelGuestRatings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelGuestRatings/maxScore> ;
    sh:name "max score" ;
    sh:description "Max value for the hotel rating score." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelGuestRatings/numberOfReviewers> ;
    sh:name "number of reviewers" ;
    sh:description "Total number of people who have rated this hotel." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelGuestRatings/ratingSystem> ;
    sh:name "rating system" ;
    sh:description "System you use for guest reviews." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelGuestRatings/score> ;
    sh:name "score" ;
    sh:description "Your hotel's rating." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Attributes
pinterest:CatalogsHotelAttributesShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelAttributes ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/address> ;
    sh:name "address" ;
    sh:node pinterest:CatalogsHotelAddressShape ;
    sh:class pinterest:CatalogsHotelAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/basePrice> ;
    sh:name "base price" ;
    sh:description "Base price of the hotel room per night followed by the ISO currency code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/brand> ;
    sh:name "brand" ;
    sh:description "The brand to which this hotel belongs to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/category> ;
    sh:name "category" ;
    sh:description "The type of property. The category can be any type of internal description desired." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/customLabel0> ;
    sh:name "custom label0" ;
    sh:description "Custom grouping of hotels" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/customLabel1> ;
    sh:name "custom label1" ;
    sh:description "Custom grouping of hotels" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/customLabel2> ;
    sh:name "custom label2" ;
    sh:description "Custom grouping of hotels" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/customLabel3> ;
    sh:name "custom label3" ;
    sh:description "Custom grouping of hotels" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/customLabel4> ;
    sh:name "custom label4" ;
    sh:description "Custom grouping of hotels" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/description> ;
    sh:name "description" ;
    sh:description "Brief description of the hotel." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/guestRatings> ;
    sh:name "guest ratings" ;
    sh:description "If specified, you must provide all properties" ;
    sh:node pinterest:CatalogsHotelGuestRatingsShape ;
    sh:class pinterest:CatalogsHotelGuestRatings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/latitude> ;
    sh:name "latitude" ;
    sh:description "Latitude of the hotel." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/link> ;
    sh:name "link" ;
    sh:description "Link to the product page" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/longitude> ;
    sh:name "longitude" ;
    sh:description "Longitude of the hotel." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/name> ;
    sh:name "name" ;
    sh:description "The hotel's name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/neighborhood> ;
    sh:name "neighborhood" ;
    sh:description "A list of neighborhoods where the hotel is located" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/salePrice> ;
    sh:name "sale price" ;
    sh:description "Sale price of a hotel room per night. Used to advertise discounts off the regular price of the hotel." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/additionalImageLink> ;
    sh:name "additional image link" ;
    sh:description "<p><= 2000 characters</p>\n<p>The links to additional images for your hotel. Up to ten\nadditional images can be used to show a hotel from different angles.\nMust begin with http:// or https://.</p>" ;
    sh:datatype xsd:anyURI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributes/mainImage> ;
    sh:name "main image" ;
    sh:description "The main hotel image" ;
    sh:node pinterest:CatalogsHotelAttributesMainImageShape ;
    sh:class pinterest:CatalogsHotelAttributesMainImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Attributes Main Image
pinterest:CatalogsHotelAttributesMainImageShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelAttributesMainImage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributesMainImage/link> ;
    sh:name "link" ;
    sh:description "<p><= 2000 characters</p>\n<p>The link to the main hotel image. Image should be at least\n75x75 pixels to avoid errors. Use the additional_image_link field to add\nmore images of your hotel. The URL of your main_image.link must be accessible\nby the Pinterest user-agent, and send the accurate image. Please make\nsure there is no template or placeholder image at the link. Must start\nwith http:// or https://.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAttributesMainImage/tag> ;
    sh:name "tag" ;
    sh:description "Tag appended to the image that identifies image category or details. There can be multiple tags associated with an image" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Catalogs Retail Items Post Filter
pinterest:CatalogsRetailItemsPostFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailItemsPostFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemsPostFilter/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "RETAIL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemsPostFilter/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the retail item. If not provided, default to oldest retail catalog" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemsPostFilter/itemIds> ;
    sh:name "item ids" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1000 ;
  ] .

# Shape for Catalogs Hotel Items Post Filter
pinterest:CatalogsHotelItemsPostFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelItemsPostFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemsPostFilter/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "HOTEL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemsPostFilter/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the hotel item. If not provided, default to oldest hotel catalog" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemsPostFilter/hotelIds> ;
    sh:name "hotel ids" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1000 ;
  ] .

# Shape for Catalogs Creative Assets Items Post Filter
pinterest:CatalogsCreativeAssetsItemsPostFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsItemsPostFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemsPostFilter/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "CREATIVE_ASSETS" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemsPostFilter/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the creative assets item. If not provided, default to oldest creative assets catalog" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemsPostFilter/creativeAssetsIds> ;
    sh:name "creative assets ids" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1000 ;
  ] .

# Shape for Catalogs Items
pinterest:CatalogsItemsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItems ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItems/items> ;
    sh:name "items" ;
    sh:description "Array with catalogs items" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:class pinterest:CatalogsRetailItemResponse ]
      [ sh:class pinterest:CatalogsHotelItemResponse ]
      [ sh:class pinterest:CatalogsCreativeAssetsItemResponse ]
      [ sh:node pinterest:CatalogsRetailItemErrorResponseShape ; sh:class pinterest:CatalogsRetailItemErrorResponse ]
      [ sh:node pinterest:CatalogsHotelItemErrorResponseShape ; sh:class pinterest:CatalogsHotelItemErrorResponse ]
      [ sh:node pinterest:CatalogsCreativeAssetsItemErrorResponseShape ; sh:class pinterest:CatalogsCreativeAssetsItemErrorResponse ]
    ) ;
  ] .

# Shape for Catalogs Retail Item Response
pinterest:CatalogsRetailItemResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailItemResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemResponse/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:ItemAttributesShape ;
    sh:class pinterest:ItemAttributes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemResponse/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemResponse/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog retail item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemResponse/pins> ;
    sh:name "pins" ;
    sh:description "The pins mapped to the item" ;
    sh:node pinterest:PinShape ;
    sh:class pinterest:Pin ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 11 ;
  ] .

# Shape for Item Attributes
pinterest:ItemAttributesShape a sh:NodeShape ;
  sh:targetClass pinterest:ItemAttributes ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage0Link> ;
    sh:name "ad image0link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage0Tag> ;
    sh:name "ad image0tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage10Link> ;
    sh:name "ad image10link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage10Tag> ;
    sh:name "ad image10tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage11Link> ;
    sh:name "ad image11link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage11Tag> ;
    sh:name "ad image11tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage12Link> ;
    sh:name "ad image12link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage12Tag> ;
    sh:name "ad image12tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage13Link> ;
    sh:name "ad image13link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage13Tag> ;
    sh:name "ad image13tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage14Link> ;
    sh:name "ad image14link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage14Tag> ;
    sh:name "ad image14tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage15Link> ;
    sh:name "ad image15link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage15Tag> ;
    sh:name "ad image15tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage16Link> ;
    sh:name "ad image16link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage16Tag> ;
    sh:name "ad image16tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage17Link> ;
    sh:name "ad image17link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage17Tag> ;
    sh:name "ad image17tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage18Link> ;
    sh:name "ad image18link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage18Tag> ;
    sh:name "ad image18tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage19Link> ;
    sh:name "ad image19link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage19Tag> ;
    sh:name "ad image19tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage1Link> ;
    sh:name "ad image1link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage1Tag> ;
    sh:name "ad image1tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage2Link> ;
    sh:name "ad image2link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage2Tag> ;
    sh:name "ad image2tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage3Link> ;
    sh:name "ad image3link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage3Tag> ;
    sh:name "ad image3tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage4Link> ;
    sh:name "ad image4link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage4Tag> ;
    sh:name "ad image4tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage5Link> ;
    sh:name "ad image5link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage5Tag> ;
    sh:name "ad image5tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage6Link> ;
    sh:name "ad image6link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage6Tag> ;
    sh:name "ad image6tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage7Link> ;
    sh:name "ad image7link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage7Tag> ;
    sh:name "ad image7tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage8Link> ;
    sh:name "ad image8link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage8Tag> ;
    sh:name "ad image8tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage9Link> ;
    sh:name "ad image9link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad image link that supplements main image for shopping campaigns.</p>\n<p>Image format:</p>\n<ul>\n  <li>Pixel size at least 75 x 75</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder images in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adImage9Tag> ;
    sh:name "ad image9tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adLink> ;
    sh:name "ad link" ;
    sh:description "Allows advertisers to specify a separate URL that can be used to track traffic coming from Pinterest shopping ads. Must send full URL including tracking—do not send tracking parameters only. At this time we do not support impression tracking. Must begin with http:// or https://." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adVideo0Link> ;
    sh:name "ad video0link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad video link that supplements main video for shopping campaigns.</p>\n<p>Video format:</p>\n<ul>\n  <li>Pixel size between 75 x 75 and 9450 x 9450</li>\n  <li>File size smaller than 2 GB</li>\n  <li>Time span between 4 seconds and 15 minutes</li>\n  <li>Accepted formats: .MP4, .MOV, .M4V</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder videos in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adVideo0Tag> ;
    sh:name "ad video0tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_video_x_link, include the video tag with the corresponding ad_video_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adVideo1Link> ;
    sh:name "ad video1link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad video link that supplements main video for shopping campaigns.</p>\n<p>Video format:</p>\n<ul>\n  <li>Pixel size between 75 x 75 and 9450 x 9450</li>\n  <li>File size smaller than 2 GB</li>\n  <li>Time span between 4 seconds and 15 minutes</li>\n  <li>Accepted formats: .MP4, .MOV, .M4V</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder videos in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adVideo1Tag> ;
    sh:name "ad video1tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_video_x_link, include the video tag with the corresponding ad_video_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adVideo2Link> ;
    sh:name "ad video2link" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 2000 characters</p>\n<p>Ad video link that supplements main video for shopping campaigns.</p>\n<p>Video format:</p>\n<ul>\n  <li>Pixel size between 75 x 75 and 9450 x 9450</li>\n  <li>File size smaller than 2 GB</li>\n  <li>Time span between 4 seconds and 15 minutes</li>\n  <li>Accepted formats: .MP4, .MOV, .M4V</li>\n</ul>\n<p>Link guidelines:</p>\n<ul>\n  <li>Include extension in file name</li>\n  <li>Do not include template or placeholder videos in link</li>\n  <li>Make URL accessible to Pinterest user-agent</li>\n  <li>Must start with http:// or https://</li>\n</ul>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adVideo2Tag> ;
    sh:name "ad video2tag" ;
    sh:description "<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a>\n<p><= 511 characters</p>\n<p>If you provide an ad_video_x_link, include the video tag with the corresponding ad_video_x_tag attribute.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/adult> ;
    sh:name "adult" ;
    sh:description "Set this attribute to TRUE if you're submitting items that are considered “adult”. These will not be shown on Pinterest." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/ageGroup> ;
    sh:name "age group" ;
    sh:description "The age group to apply a demographic range to the product. Must be one of the following values (upper or lowercased): ‘newborn’, ‘infant’, ‘toddler’, ‘kids’, or ‘adult’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/androidDeepLink> ;
    sh:name "android deep link" ;
    sh:description "The deep link to the product on the Android app." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/availability> ;
    sh:name "availability" ;
    sh:description "The availability of the product. Must be one of the following values (upper or lowercased): ‘in stock’, ‘out of stock’, ‘preorder’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/averageReviewRating> ;
    sh:name "average review rating" ;
    sh:description "Average reviews for the item. Can be a number from 1-5." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/brand> ;
    sh:name "brand" ;
    sh:description "The brand of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/checkoutEnabled> ;
    sh:name "checkout enabled" ;
    sh:description "This attribute is not supported anymore." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/color> ;
    sh:name "color" ;
    sh:description "The primary color of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/condition> ;
    sh:name "condition" ;
    sh:description "The condition of the product. Must be one of the following values (upper or lowercased): ‘new’, ‘used’, or ‘refurbished’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/customLabel0> ;
    sh:name "custom label0" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/customLabel1> ;
    sh:name "custom label1" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/customLabel2> ;
    sh:name "custom label2" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/customLabel3> ;
    sh:name "custom label3" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/customLabel4> ;
    sh:name "custom label4" ;
    sh:description "<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p>\n<p>Custom grouping of products.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 511 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/customNumber0> ;
    sh:name "custom number0" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/customNumber1> ;
    sh:name "custom number1" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/customNumber2> ;
    sh:name "custom number2" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/customNumber3> ;
    sh:name "custom number3" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/customNumber4> ;
    sh:name "custom number4" ;
    sh:description "an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/description> ;
    sh:name "description" ;
    sh:description "<p><= 10000 characters</p>\n<p>The description of the product.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/freeShippingLabel> ;
    sh:name "free shipping label" ;
    sh:description "The item is free to ship." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/freeShippingLimit> ;
    sh:name "free shipping limit" ;
    sh:description "The minimum order purchase necessary for the customer to get free shipping. Only relevant if free shipping is offered." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/gender> ;
    sh:name "gender" ;
    sh:description "The gender associated with the product. Must be one of the following values (upper or lowercased): ‘male’, ‘female’, or ‘unisex’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/googleProductCategory> ;
    sh:name "google product category" ;
    sh:description "The categorization of the product based on the standardized Google Product Taxonomy. This is a set taxonomy. Both the text values and numeric codes are accepted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/gtin> ;
    sh:name "gtin" ;
    sh:description "The unique universal product identifier." ;
    sh:or (
      [ sh:datatype xsd:int ]
      [ sh:datatype xsd:string ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/id> ;
    sh:name "id" ;
    sh:description "<p><= 127 characters</p>\n<p>The user-created unique ID that represents the product. Only\nUnicode characters are accepted.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/installmentPrice> ;
    sh:name "installment price" ;
    sh:description "Installment price of the product. This data will only be shown to pinners in the enabled countries. Expected format: <payment_count>:<payment_amount> <currency>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/iosDeepLink> ;
    sh:name "ios deep link" ;
    sh:description "The deep link to the product on the iOS app." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/itemGroupId> ;
    sh:name "item group id" ;
    sh:description "<p><= 127 characters</p>\n<p>The parent ID of the product.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/lastUpdatedTime> ;
    sh:name "last updated time" ;
    sh:description "The millisecond timestamp when the item was lastly modified by the merchant." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/link> ;
    sh:name "link" ;
    sh:description "<p><= 511 characters</p>\n<p>The landing page for the product.</p>" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/material> ;
    sh:name "material" ;
    sh:description "The material used to make the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/minAdPrice> ;
    sh:name "min ad price" ;
    sh:description "The minimum advertised price of the product. It supports the following formats, \"19.99 USD\", \"19.99USD\" and \"19.99\". If the currency is not included, we default to US dollars." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/mobileLink> ;
    sh:name "mobile link" ;
    sh:description "The mobile-optimized version of your landing page. Must begin with http:// or https://." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/mpn> ;
    sh:name "mpn" ;
    sh:description "Manufacturer Part Number are alpha-numeric codes created by the manufacturer of a product to uniquely identify it among all products from the same manufacturer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/numberOfRatings> ;
    sh:name "number of ratings" ;
    sh:description "The number of ratings for the item." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/numberOfReviews> ;
    sh:name "number of reviews" ;
    sh:description "The number of reviews available for the item." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/pattern> ;
    sh:name "pattern" ;
    sh:description "The description of the pattern used for the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/price> ;
    sh:name "price" ;
    sh:description "The price of the product. It supports the following formats, \"24.99 USD\", \"24.99USD\" and \"24.99\". If the currency is not included, we default to US dollars." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/productType> ;
    sh:name "product type" ;
    sh:description "<p><= 1000 characters</p>\n<p>The categorization of your product based on your custom product\ntaxonomy. Subcategories must be sent separated by “ > “. The > must be\nwrapped by spaces. We do not recognize any other delimiters such as comma\nor pipe.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/promotionId> ;
    sh:name "promotion id" ;
    sh:description "A unique identifier referencing the promotion associated with this catalog item." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/salePrice> ;
    sh:name "sale price" ;
    sh:description "The discounted price of the product. The sale_price must be lower than the price. It supports the following formats, \"14.99 USD\", \"14.99USD\" and \"14.99\". If the currency is not included, we default to US dollars." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/salePriceEffectiveDate> ;
    sh:name "sale price effective date" ;
    sh:description "Sale price effective date. Expected format: <start_date>/<end_date> (ISO 8601 format)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/shipping> ;
    sh:name "shipping" ;
    sh:description "Shipping consists of one group of up to four elements, country, region, service (all optional) and price (required). All colons, even for blank values, are required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/shippingHeight> ;
    sh:name "shipping height" ;
    sh:description "The height of the package needed to ship the product. Ensure there is a space between the numeric string and the metric." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/shippingWeight> ;
    sh:name "shipping weight" ;
    sh:description "The weight of the product. Ensure there is a space between the numeric string and the metric." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/shippingWidth> ;
    sh:name "shipping width" ;
    sh:description "The width of the package needed to ship the product. Ensure there is a space between the numeric string and the metric." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/size> ;
    sh:name "size" ;
    sh:description "The size of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/sizeSystem> ;
    sh:name "size system" ;
    sh:description "Indicates the country’s sizing system in which you are submitting your product. Must be one of the following values (upper or lowercased): ‘US’, ‘UK’, ‘EU’, ‘DE’, ‘FR’, ‘JP’, ‘CN’, ‘IT’, ‘BR’, ‘MEX’, or ‘AU’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/sizeType> ;
    sh:name "size type" ;
    sh:description "Additional description for the size. Must be one of the following values (upper or lowercased): ‘regular’, ‘petite’, ‘plus’, ‘big_and_tall’, or ‘maternity’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/tax> ;
    sh:name "tax" ;
    sh:description "Tax consists of one group of up to four elements, country, region, rate (all required) and tax_ship (optional). All colons, even for blank values, are required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/title> ;
    sh:name "title" ;
    sh:description "<p><= 500 characters</p>\n<p>The name of the product.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/unitPricingBaseMeasure> ;
    sh:name "unit pricing base measure" ;
    sh:description "Unit pricing base measure of the product. This data will only be shown to pinners in the enabled countries. Expected format: <base_measure> <unit_type>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/unitPricingMeasure> ;
    sh:name "unit pricing measure" ;
    sh:description "Unit pricing total measure of the product. This data will only be shown to pinners in the enabled countries. Expected format: <total_units> <unit_type>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/variantNames> ;
    sh:name "variant names" ;
    sh:description "Options for this variant. People will see these options next to your Pin and can select the one they want. List them in the order you want them displayed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/variantValues> ;
    sh:name "variant values" ;
    sh:description "Option values for this variant. People will see these options next to your Pin and can select the one they want. List them in the order you want them displayed. The order of the variant values must be consistent with the order of the variant names." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/additionalImageLink> ;
    sh:name "additional image link" ;
    sh:description "<p><= 2000 characters</p>\n<p>The links to additional images for your product. Up to ten\nadditional images can be used to show a product from different angles\nor to show different stages. Must begin with http:// or https://.</p>" ;
    sh:datatype xsd:anyURI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/imageLink> ;
    sh:name "image link" ;
    sh:description "<p><= 2000 characters</p>\n<p>The link to the main product images. Images should be at least\n75x75 pixels to avoid errors. Use the additional_image_link field to add\nmore images of your product. The URL of your image_link must be accessible\nby the Pinterest user-agent, and send the accurate images. Please make\nsure there are no template or placeholder images at the link. Must start\nwith http:// or https://.</p>" ;
    sh:datatype xsd:anyURI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/videoLink> ;
    sh:name "video link" ;
    sh:description "<p><= 2,000 characters</p>\n<p>Hosted link to the product video.</p>\n<p>File types for linked videos must be .mp4, .mov or .m4v.</p>\n<p>File size cannot exceed 2GB.</p>" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:or (
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/imageLink> ; sh:maxCount 0 ] ]
    [ sh:property [ sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemAttributes/imageLink> ; sh:minCount 1 ] ]
  ) .

# Shape for Catalogs Hotel Item Response
pinterest:CatalogsHotelItemResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelItemResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemResponse/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:CatalogsHotelAttributesShape ;
    sh:class pinterest:CatalogsHotelAttributes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemResponse/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemResponse/hotelId> ;
    sh:name "hotel id" ;
    sh:description "The catalog hotel id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemResponse/pins> ;
    sh:name "pins" ;
    sh:description "The pins mapped to the item" ;
    sh:node pinterest:PinShape ;
    sh:class pinterest:Pin ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 11 ;
  ] .

# Shape for Catalogs Creative Assets Item Response
pinterest:CatalogsCreativeAssetsItemResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsItemResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemResponse/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:CatalogsCreativeAssetsAttributesShape ;
    sh:class pinterest:CatalogsCreativeAssetsAttributes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemResponse/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemResponse/creativeAssetsId> ;
    sh:name "creative assets id" ;
    sh:description "The catalog creative assets id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemResponse/pins> ;
    sh:name "pins" ;
    sh:description "The pins mapped to the item" ;
    sh:node pinterest:PinShape ;
    sh:class pinterest:Pin ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 11 ;
  ] .

# Shape for Catalogs Creative Assets Attributes
pinterest:CatalogsCreativeAssetsAttributesShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsAttributes ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/androidDeepLink> ;
    sh:name "android deep link" ;
    sh:description "Link to the creative assets page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/customLabel0> ;
    sh:name "custom label0" ;
    sh:description "Custom grouping of creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/customLabel1> ;
    sh:name "custom label1" ;
    sh:description "Custom grouping of creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/customLabel2> ;
    sh:name "custom label2" ;
    sh:description "Custom grouping of creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/customLabel3> ;
    sh:name "custom label3" ;
    sh:description "Custom grouping of creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/customLabel4> ;
    sh:name "custom label4" ;
    sh:description "Custom grouping of creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/description> ;
    sh:name "description" ;
    sh:description "Brief description of the creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/googleProductCategory> ;
    sh:name "google product category" ;
    sh:description "The categorization of the product based on the standardized Google Product Taxonomy. This is a set taxonomy. Both the text values and numeric codes are accepted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/iosDeepLink> ;
    sh:name "ios deep link" ;
    sh:description "IOS deep link to the creative assets page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/link> ;
    sh:name "link" ;
    sh:description "Link to the creative assets page." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/title> ;
    sh:name "title" ;
    sh:description "The name of the creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/visibility> ;
    sh:name "visibility" ;
    sh:description "Visibility of the creative assets. Must be one of the following values (upper or lowercase): ‘visible’, ‘hidden’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/imageLink> ;
    sh:name "image link" ;
    sh:description "The creative assets image." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAttributes/videoLink> ;
    sh:name "video link" ;
    sh:description "The creative assets video." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Retail Item Error Response
pinterest:CatalogsRetailItemErrorResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailItemErrorResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemErrorResponse/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemErrorResponse/errors> ;
    sh:name "errors" ;
    sh:description "Array with the errors for the item id requested" ;
    sh:node pinterest:ItemValidationEventShape ;
    sh:class pinterest:ItemValidationEvent ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemErrorResponse/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Item Validation Event
pinterest:ItemValidationEventShape a sh:NodeShape ;
  sh:targetClass pinterest:ItemValidationEvent ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemValidationEvent/attribute> ;
    sh:name "attribute" ;
    sh:description "The attribute that the item validation event references" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemValidationEvent/code> ;
    sh:name "code" ;
    sh:description "The event code that the item validation event references" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemValidationEvent/message> ;
    sh:name "message" ;
    sh:description "Title message describing the item validation event" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Item Error Response
pinterest:CatalogsHotelItemErrorResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelItemErrorResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemErrorResponse/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemErrorResponse/errors> ;
    sh:name "errors" ;
    sh:description "Array with the errors for the item id requested" ;
    sh:node pinterest:ItemValidationEventShape ;
    sh:class pinterest:ItemValidationEvent ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemErrorResponse/hotelId> ;
    sh:name "hotel id" ;
    sh:description "The catalog hotel id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Creative Assets Item Error Response
pinterest:CatalogsCreativeAssetsItemErrorResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsItemErrorResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemErrorResponse/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemErrorResponse/creativeAssetsId> ;
    sh:name "creative assets id" ;
    sh:description "The catalog creative assets id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemErrorResponse/errors> ;
    sh:name "errors" ;
    sh:description "Array with the errors for the item id requested" ;
    sh:node pinterest:ItemValidationEventShape ;
    sh:class pinterest:ItemValidationEvent ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Catalogs Updatable Creative Assets Attributes
pinterest:CatalogsUpdatableCreativeAssetsAttributesShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsUpdatableCreativeAssetsAttributes ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableCreativeAssetsAttributes/androidDeepLink> ;
    sh:name "android deep link" ;
    sh:description "Link to the creative assets page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableCreativeAssetsAttributes/customLabel0> ;
    sh:name "custom label0" ;
    sh:description "Custom grouping of creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableCreativeAssetsAttributes/customLabel1> ;
    sh:name "custom label1" ;
    sh:description "Custom grouping of creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableCreativeAssetsAttributes/customLabel2> ;
    sh:name "custom label2" ;
    sh:description "Custom grouping of creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableCreativeAssetsAttributes/customLabel3> ;
    sh:name "custom label3" ;
    sh:description "Custom grouping of creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableCreativeAssetsAttributes/customLabel4> ;
    sh:name "custom label4" ;
    sh:description "Custom grouping of creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableCreativeAssetsAttributes/description> ;
    sh:name "description" ;
    sh:description "Brief description of the creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableCreativeAssetsAttributes/googleProductCategory> ;
    sh:name "google product category" ;
    sh:description "The categorization of the product based on the standardized Google Product Taxonomy. This is a set taxonomy. Both the text values and numeric codes are accepted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableCreativeAssetsAttributes/iosDeepLink> ;
    sh:name "ios deep link" ;
    sh:description "IOS deep link to the creative assets page." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableCreativeAssetsAttributes/link> ;
    sh:name "link" ;
    sh:description "Link to the creative assets page." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableCreativeAssetsAttributes/title> ;
    sh:name "title" ;
    sh:description "The name of the creative assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdatableCreativeAssetsAttributes/visibility> ;
    sh:name "visibility" ;
    sh:description "Visibility of the creative assets. Must be one of the following values (upper or lowercase): ‘visible’, ‘hidden’." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Creative Assets Items Batch
pinterest:CatalogsCreativeAssetsItemsBatchShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsItemsBatch ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemsBatch/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "CREATIVE_ASSETS" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemsBatch/batchId> ;
    sh:name "batch id" ;
    sh:description "Id of the catalogs items batch" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemsBatch/completedTime> ;
    sh:name "completed time" ;
    sh:description "Date and time (UTC) of the batch completion: YYYY-MM-DD'T'hh:mm:ss" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemsBatch/createdTime> ;
    sh:name "created time" ;
    sh:description "Date and time (UTC) of the batch creation: YYYY-MM-DD'T'hh:mm:ss" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemsBatch/items> ;
    sh:name "items" ;
    sh:description "Array with the catalogs items processing records part of the catalogs items batch" ;
    sh:node pinterest:CreativeAssetsProcessingRecordShape ;
    sh:class pinterest:CreativeAssetsProcessingRecord ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsItemsBatch/status> ;
    sh:name "status" ;
    sh:description "The status of the operation performed by the batch" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PROCESSING" "COMPLETED" "FAILED" ) ;
  ] .

# Shape for Creative Assets Processing Record
pinterest:CreativeAssetsProcessingRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:CreativeAssetsProcessingRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreativeAssetsProcessingRecord/creativeAssetsId> ;
    sh:name "creative assets id" ;
    sh:description "The catalog creative assets id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreativeAssetsProcessingRecord/errors> ;
    sh:name "errors" ;
    sh:description "Array with the validation errors for the item processing record.\nA non empty errors list causes the item processing to fail." ;
    sh:node pinterest:ItemValidationEventShape ;
    sh:class pinterest:ItemValidationEvent ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreativeAssetsProcessingRecord/status> ;
    sh:name "status" ;
    sh:description "The status of the item processing record" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "SUCCESS" "FAILURE" "PROCESSING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreativeAssetsProcessingRecord/warnings> ;
    sh:name "warnings" ;
    sh:description "Array with the validation warnings for the item processing record" ;
    sh:node pinterest:ItemValidationEventShape ;
    sh:class pinterest:ItemValidationEvent ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Catalogs Hotel Items Batch
pinterest:CatalogsHotelItemsBatchShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelItemsBatch ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemsBatch/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "HOTEL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemsBatch/batchId> ;
    sh:name "batch id" ;
    sh:description "Id of the catalogs items batch" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemsBatch/completedTime> ;
    sh:name "completed time" ;
    sh:description "Date and time (UTC) of the batch completion: YYYY-MM-DD'T'hh:mm:ss" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemsBatch/createdTime> ;
    sh:name "created time" ;
    sh:description "Date and time (UTC) of the batch creation: YYYY-MM-DD'T'hh:mm:ss" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemsBatch/items> ;
    sh:name "items" ;
    sh:description "Array with the catalogs items processing records part of the catalogs items batch" ;
    sh:node pinterest:HotelProcessingRecordShape ;
    sh:class pinterest:HotelProcessingRecord ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelItemsBatch/status> ;
    sh:name "status" ;
    sh:description "The status of the operation performed by the batch" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PROCESSING" "COMPLETED" "FAILED" ) ;
  ] .

# Shape for Hotel Processing Record
pinterest:HotelProcessingRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:HotelProcessingRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.HotelProcessingRecord/errors> ;
    sh:name "errors" ;
    sh:description "Array with the validation errors for the item processing record.\nA non empty errors list causes the item processing to fail." ;
    sh:node pinterest:ItemValidationEventShape ;
    sh:class pinterest:ItemValidationEvent ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.HotelProcessingRecord/hotelId> ;
    sh:name "hotel id" ;
    sh:description "The catalog hotel id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.HotelProcessingRecord/status> ;
    sh:name "status" ;
    sh:description "The status of the item processing record" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "SUCCESS" "FAILURE" "PROCESSING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.HotelProcessingRecord/warnings> ;
    sh:name "warnings" ;
    sh:description "Array with the validation warnings for the item processing record" ;
    sh:node pinterest:ItemValidationEventShape ;
    sh:class pinterest:ItemValidationEvent ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Catalogs Retail Items Batch
pinterest:CatalogsRetailItemsBatchShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailItemsBatch ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemsBatch/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "RETAIL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemsBatch/batchId> ;
    sh:name "batch id" ;
    sh:description "Id of the catalogs items batch" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemsBatch/completedTime> ;
    sh:name "completed time" ;
    sh:description "Date and time (UTC) of the batch completion: YYYY-MM-DD'T'hh:mm:ss" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemsBatch/createdTime> ;
    sh:name "created time" ;
    sh:description "Date and time (UTC) of the batch creation: YYYY-MM-DD'T'hh:mm:ss. If null, batch creation was skipped due to a recent duplicate ingestion." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemsBatch/items> ;
    sh:name "items" ;
    sh:description "Array with the catalogs items processing records part of the catalogs items batch" ;
    sh:node pinterest:ItemProcessingRecordShape ;
    sh:class pinterest:ItemProcessingRecord ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailItemsBatch/status> ;
    sh:name "status" ;
    sh:description "The status of the operation performed by the batch" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PROCESSING" "COMPLETED" "FAILED" ) ;
  ] .

# Shape for Item Processing Record
pinterest:ItemProcessingRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:ItemProcessingRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemProcessingRecord/errors> ;
    sh:name "errors" ;
    sh:description "Array with the validation errors for the item processing record.\nA non empty errors list causes the item processing to fail." ;
    sh:node pinterest:ItemValidationEventShape ;
    sh:class pinterest:ItemValidationEvent ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemProcessingRecord/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemProcessingRecord/status> ;
    sh:name "status" ;
    sh:description "The status of the item processing record" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "SUCCESS" "FAILURE" "PROCESSING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ItemProcessingRecord/warnings> ;
    sh:name "warnings" ;
    sh:description "Array with the validation warnings for the item processing record" ;
    sh:node pinterest:ItemValidationEventShape ;
    sh:class pinterest:ItemValidationEvent ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Catalogs Items Request
pinterest:CatalogsItemsRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItemsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsRequest/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsRequest/filters> ;
    sh:name "filters" ;
    sh:or (
      [ sh:node pinterest:CatalogsCreativeAssetsItemsPostFilterShape ; sh:class pinterest:CatalogsCreativeAssetsItemsPostFilter ]
      [ sh:node pinterest:CatalogsHotelItemsPostFilterShape ; sh:class pinterest:CatalogsHotelItemsPostFilter ]
      [ sh:node pinterest:CatalogsItemsPostFiltersShape ; sh:class pinterest:CatalogsItemsPostFilters ]
      [ sh:node pinterest:CatalogsRetailItemsPostFilterShape ; sh:class pinterest:CatalogsRetailItemsPostFilter ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsRequest/language> ;
    sh:name "language" ;
    sh:description "We recommend using the CatalogsLocale values." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "af-ZA" "ar-SA" "bg-BG" "bn-IN" "cs-CZ" "da-DK" "de" "el-GR" "en-AU" "en-CA" "en-GB" "en-IN" "en-US" "es-419" "es-AR" "es-ES" "es-MX" "fi-FI" "fr" "fr-CA" "he-IL" "hi-IN" "hr-HR" "hu-HU" "id-ID" "it" "ja" "ko-KR" "ms-MY" "nb-NO" "nl" "pl-PL" "pt-BR" "pt-PT" "ro-RO" "ru-RU" "sk-SK" "sv-SE" "te-IN" "th-TH" "tl-PH" "tr" "uk-UA" "vi-VN" "zh-CN" "zh-TW" "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] .

# Shape for Catalogs Items Create Batch Request
pinterest:CatalogsItemsCreateBatchRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItemsCreateBatchRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsCreateBatchRequest/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsCreateBatchRequest/items> ;
    sh:name "items" ;
    sh:description "Array with catalogs items" ;
    sh:node pinterest:ItemCreateBatchRecordShape ;
    sh:class pinterest:ItemCreateBatchRecord ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1000 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsCreateBatchRequest/language> ;
    sh:name "language" ;
    sh:description "We recommend using the CatalogsLocale values." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "af-ZA" "ar-SA" "bg-BG" "bn-IN" "cs-CZ" "da-DK" "de" "el-GR" "en-AU" "en-CA" "en-GB" "en-IN" "en-US" "es-419" "es-AR" "es-ES" "es-MX" "fi-FI" "fr" "fr-CA" "he-IL" "hi-IN" "hr-HR" "hu-HU" "id-ID" "it" "ja" "ko-KR" "ms-MY" "nb-NO" "nl" "pl-PL" "pt-BR" "pt-PT" "ro-RO" "ru-RU" "sk-SK" "sv-SE" "te-IN" "th-TH" "tl-PH" "tr" "uk-UA" "vi-VN" "zh-CN" "zh-TW" "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsCreateBatchRequest/operation> ;
    sh:name "operation" ;
    sh:description "The operation performed by the batch. The DELETE_DISCONTINUED operation only updates availablity to \"Out of Stock\"." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "UPDATE" "UPSERT" "CREATE" "DELETE_DISCONTINUED" "DELETE" ) ;
  ] .

# Shape for Catalogs Items Delete Batch Request
pinterest:CatalogsItemsDeleteBatchRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItemsDeleteBatchRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsDeleteBatchRequest/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsDeleteBatchRequest/items> ;
    sh:name "items" ;
    sh:description "Array with catalogs items" ;
    sh:node pinterest:ItemDeleteBatchRecordShape ;
    sh:class pinterest:ItemDeleteBatchRecord ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsDeleteBatchRequest/language> ;
    sh:name "language" ;
    sh:description "We recommend using the CatalogsLocale values." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "af-ZA" "ar-SA" "bg-BG" "bn-IN" "cs-CZ" "da-DK" "de" "el-GR" "en-AU" "en-CA" "en-GB" "en-IN" "en-US" "es-419" "es-AR" "es-ES" "es-MX" "fi-FI" "fr" "fr-CA" "he-IL" "hi-IN" "hr-HR" "hu-HU" "id-ID" "it" "ja" "ko-KR" "ms-MY" "nb-NO" "nl" "pl-PL" "pt-BR" "pt-PT" "ro-RO" "ru-RU" "sk-SK" "sv-SE" "te-IN" "th-TH" "tl-PH" "tr" "uk-UA" "vi-VN" "zh-CN" "zh-TW" "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsDeleteBatchRequest/operation> ;
    sh:name "operation" ;
    sh:description "The operation performed by the batch. The DELETE_DISCONTINUED operation only updates availablity to \"Out of Stock\"." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "UPDATE" "UPSERT" "CREATE" "DELETE_DISCONTINUED" "DELETE" ) ;
  ] .

# Shape for Catalogs Items Delete Discontinued Batch Request
pinterest:CatalogsItemsDeleteDiscontinuedBatchRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItemsDeleteDiscontinuedBatchRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsDeleteDiscontinuedBatchRequest/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsDeleteDiscontinuedBatchRequest/items> ;
    sh:name "items" ;
    sh:description "Array with catalogs items" ;
    sh:node pinterest:ItemDeleteDiscontinuedBatchRecordShape ;
    sh:class pinterest:ItemDeleteDiscontinuedBatchRecord ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsDeleteDiscontinuedBatchRequest/language> ;
    sh:name "language" ;
    sh:description "We recommend using the CatalogsLocale values." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "af-ZA" "ar-SA" "bg-BG" "bn-IN" "cs-CZ" "da-DK" "de" "el-GR" "en-AU" "en-CA" "en-GB" "en-IN" "en-US" "es-419" "es-AR" "es-ES" "es-MX" "fi-FI" "fr" "fr-CA" "he-IL" "hi-IN" "hr-HR" "hu-HU" "id-ID" "it" "ja" "ko-KR" "ms-MY" "nb-NO" "nl" "pl-PL" "pt-BR" "pt-PT" "ro-RO" "ru-RU" "sk-SK" "sv-SE" "te-IN" "th-TH" "tl-PH" "tr" "uk-UA" "vi-VN" "zh-CN" "zh-TW" "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsDeleteDiscontinuedBatchRequest/operation> ;
    sh:name "operation" ;
    sh:description "The operation performed by the batch. The DELETE_DISCONTINUED operation only updates availablity to \"Out of Stock\"." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "UPDATE" "UPSERT" "CREATE" "DELETE_DISCONTINUED" "DELETE" ) ;
  ] .

# Shape for Catalogs Items Update Batch Request
pinterest:CatalogsItemsUpdateBatchRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItemsUpdateBatchRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsUpdateBatchRequest/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsUpdateBatchRequest/items> ;
    sh:name "items" ;
    sh:description "Array with catalogs items" ;
    sh:node pinterest:ItemUpdateBatchRecordShape ;
    sh:class pinterest:ItemUpdateBatchRecord ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1000 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsUpdateBatchRequest/language> ;
    sh:name "language" ;
    sh:description "We recommend using the CatalogsLocale values." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "af-ZA" "ar-SA" "bg-BG" "bn-IN" "cs-CZ" "da-DK" "de" "el-GR" "en-AU" "en-CA" "en-GB" "en-IN" "en-US" "es-419" "es-AR" "es-ES" "es-MX" "fi-FI" "fr" "fr-CA" "he-IL" "hi-IN" "hr-HR" "hu-HU" "id-ID" "it" "ja" "ko-KR" "ms-MY" "nb-NO" "nl" "pl-PL" "pt-BR" "pt-PT" "ro-RO" "ru-RU" "sk-SK" "sv-SE" "te-IN" "th-TH" "tl-PH" "tr" "uk-UA" "vi-VN" "zh-CN" "zh-TW" "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsUpdateBatchRequest/operation> ;
    sh:name "operation" ;
    sh:description "The operation performed by the batch. The DELETE_DISCONTINUED operation only updates availablity to \"Out of Stock\"." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "UPDATE" "UPSERT" "CREATE" "DELETE_DISCONTINUED" "DELETE" ) ;
  ] .

# Shape for Catalogs Items Upsert Batch Request
pinterest:CatalogsItemsUpsertBatchRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsItemsUpsertBatchRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsUpsertBatchRequest/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsUpsertBatchRequest/items> ;
    sh:name "items" ;
    sh:description "Array with catalogs items" ;
    sh:node pinterest:ItemUpsertBatchRecordShape ;
    sh:class pinterest:ItemUpsertBatchRecord ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1000 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsUpsertBatchRequest/language> ;
    sh:name "language" ;
    sh:description "We recommend using the CatalogsLocale values." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "af-ZA" "ar-SA" "bg-BG" "bn-IN" "cs-CZ" "da-DK" "de" "el-GR" "en-AU" "en-CA" "en-GB" "en-IN" "en-US" "es-419" "es-AR" "es-ES" "es-MX" "fi-FI" "fr" "fr-CA" "he-IL" "hi-IN" "hr-HR" "hu-HU" "id-ID" "it" "ja" "ko-KR" "ms-MY" "nb-NO" "nl" "pl-PL" "pt-BR" "pt-PT" "ro-RO" "ru-RU" "sk-SK" "sv-SE" "te-IN" "th-TH" "tl-PH" "tr" "uk-UA" "vi-VN" "zh-CN" "zh-TW" "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsItemsUpsertBatchRequest/operation> ;
    sh:name "operation" ;
    sh:description "The operation performed by the batch. The DELETE_DISCONTINUED operation only updates availablity to \"Out of Stock\"." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "UPDATE" "UPSERT" "CREATE" "DELETE_DISCONTINUED" "DELETE" ) ;
  ] .

# Shape for Catalogs Retail Batch Request
pinterest:CatalogsRetailBatchRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailBatchRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailBatchRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the retail item. If not provided, default to oldest retail catalog" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailBatchRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "RETAIL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailBatchRequest/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailBatchRequest/items> ;
    sh:name "items" ;
    sh:description "Array with catalogs item operations" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsCreateRetailItemShape ; sh:class pinterest:CatalogsCreateRetailItem ]
      [ sh:node pinterest:CatalogsUpdateRetailItemShape ; sh:class pinterest:CatalogsUpdateRetailItem ]
      [ sh:node pinterest:CatalogsUpsertRetailItemShape ; sh:class pinterest:CatalogsUpsertRetailItem ]
      [ sh:node pinterest:CatalogsDeleteRetailItemShape ; sh:class pinterest:CatalogsDeleteRetailItem ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1000 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailBatchRequest/language> ;
    sh:name "language" ;
    sh:description "We recommend using the CatalogsLocale values." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "af-ZA" "ar-SA" "bg-BG" "bn-IN" "cs-CZ" "da-DK" "de" "el-GR" "en-AU" "en-CA" "en-GB" "en-IN" "en-US" "es-419" "es-AR" "es-ES" "es-MX" "fi-FI" "fr" "fr-CA" "he-IL" "hi-IN" "hr-HR" "hu-HU" "id-ID" "it" "ja" "ko-KR" "ms-MY" "nb-NO" "nl" "pl-PL" "pt-BR" "pt-PT" "ro-RO" "ru-RU" "sk-SK" "sv-SE" "te-IN" "th-TH" "tl-PH" "tr" "uk-UA" "vi-VN" "zh-CN" "zh-TW" "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] .

# Shape for Catalogs Create Retail Item
pinterest:CatalogsCreateRetailItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreateRetailItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreateRetailItem/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:ItemAttributesRequestShape ;
    sh:class pinterest:ItemAttributesRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreateRetailItem/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreateRetailItem/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "CREATE" ;
  ] .

# Shape for Catalogs Update Retail Item
pinterest:CatalogsUpdateRetailItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsUpdateRetailItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdateRetailItem/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:UpdatableItemAttributesShape ;
    sh:class pinterest:UpdatableItemAttributes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdateRetailItem/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdateRetailItem/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "UPDATE" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdateRetailItem/updateMask> ;
    sh:name "update mask" ;
    sh:description "The list of product attributes to be updated. Attributes specified in the update mask without a value specified in the body will be deleted from the product item." ;
    sh:datatype xsd:string ;
    sh:in ( "ad_link" "adult" "age_group" "availability" "average_review_rating" "brand" "checkout_enabled" "color" "condition" "custom_label_0" "custom_label_1" "custom_label_2" "custom_label_3" "custom_label_4" "custom_number_0" "custom_number_1" "custom_number_2" "custom_number_3" "custom_number_4" "description" "free_shipping_label" "free_shipping_limit" "gender" "google_product_category" "gtin" "item_group_id" "last_updated_time" "link" "material" "min_ad_price" "mpn" "number_of_ratings" "number_of_reviews" "pattern" "price" "product_type" "sale_price" "shipping" "shipping_height" "shipping_weight" "shipping_width" "size" "size_system" "size_type" "tax" "title" "variant_names" "variant_values" "promotion_id" ) ;
  ] .

# Shape for Catalogs Upsert Retail Item
pinterest:CatalogsUpsertRetailItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsUpsertRetailItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpsertRetailItem/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:ItemAttributesRequestShape ;
    sh:class pinterest:ItemAttributesRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpsertRetailItem/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpsertRetailItem/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "UPSERT" ;
  ] .

# Shape for Catalogs Delete Retail Item
pinterest:CatalogsDeleteRetailItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsDeleteRetailItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsDeleteRetailItem/itemId> ;
    sh:name "item id" ;
    sh:description "The catalog item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsDeleteRetailItem/lastUpdatedTime> ;
    sh:name "last updated time" ;
    sh:description "The millisecond timestamp when the item was lastly modified by the merchant." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsDeleteRetailItem/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "DELETE" ;
  ] .

# Shape for Catalogs Hotel Batch Request
pinterest:CatalogsHotelBatchRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelBatchRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelBatchRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the hotel item. If not provided, default to oldest hotel catalog" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelBatchRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "HOTEL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelBatchRequest/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelBatchRequest/items> ;
    sh:name "items" ;
    sh:description "Array with catalogs item operations" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsCreateHotelItemShape ; sh:class pinterest:CatalogsCreateHotelItem ]
      [ sh:node pinterest:CatalogsUpsertHotelItemShape ; sh:class pinterest:CatalogsUpsertHotelItem ]
      [ sh:node pinterest:CatalogsUpdateHotelItemShape ; sh:class pinterest:CatalogsUpdateHotelItem ]
      [ sh:node pinterest:CatalogsDeleteHotelItemShape ; sh:class pinterest:CatalogsDeleteHotelItem ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1000 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelBatchRequest/language> ;
    sh:name "language" ;
    sh:description "We recommend using the CatalogsLocale values." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "af-ZA" "ar-SA" "bg-BG" "bn-IN" "cs-CZ" "da-DK" "de" "el-GR" "en-AU" "en-CA" "en-GB" "en-IN" "en-US" "es-419" "es-AR" "es-ES" "es-MX" "fi-FI" "fr" "fr-CA" "he-IL" "hi-IN" "hr-HR" "hu-HU" "id-ID" "it" "ja" "ko-KR" "ms-MY" "nb-NO" "nl" "pl-PL" "pt-BR" "pt-PT" "ro-RO" "ru-RU" "sk-SK" "sv-SE" "te-IN" "th-TH" "tl-PH" "tr" "uk-UA" "vi-VN" "zh-CN" "zh-TW" "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] .

# Shape for Catalogs Create Hotel Item
pinterest:CatalogsCreateHotelItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreateHotelItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreateHotelItem/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:CatalogsHotelAttributesShape ;
    sh:class pinterest:CatalogsHotelAttributes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreateHotelItem/hotelId> ;
    sh:name "hotel id" ;
    sh:description "The catalog hotel id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreateHotelItem/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "CREATE" ;
  ] .

# Shape for Catalogs Upsert Hotel Item
pinterest:CatalogsUpsertHotelItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsUpsertHotelItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpsertHotelItem/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:CatalogsHotelAttributesShape ;
    sh:class pinterest:CatalogsHotelAttributes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpsertHotelItem/hotelId> ;
    sh:name "hotel id" ;
    sh:description "The catalog hotel id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpsertHotelItem/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "UPSERT" ;
  ] .

# Shape for Catalogs Update Hotel Item
pinterest:CatalogsUpdateHotelItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsUpdateHotelItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdateHotelItem/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:CatalogsUpdatableHotelAttributesShape ;
    sh:class pinterest:CatalogsUpdatableHotelAttributes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdateHotelItem/hotelId> ;
    sh:name "hotel id" ;
    sh:description "The catalog hotel item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdateHotelItem/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "UPDATE" ;
  ] .

# Shape for Catalogs Delete Hotel Item
pinterest:CatalogsDeleteHotelItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsDeleteHotelItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsDeleteHotelItem/hotelId> ;
    sh:name "hotel id" ;
    sh:description "The catalog hotel id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsDeleteHotelItem/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "DELETE" ;
  ] .

# Shape for Catalogs Creative Assets Batch Request
pinterest:CatalogsCreativeAssetsBatchRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsBatchRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsBatchRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the creative assets item. If not provided, default to oldest creative assets catalog" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsBatchRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "CREATIVE_ASSETS" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsBatchRequest/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsBatchRequest/items> ;
    sh:name "items" ;
    sh:description "Array with creative assets item operations" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsCreateCreativeAssetsItemShape ; sh:class pinterest:CatalogsCreateCreativeAssetsItem ]
      [ sh:node pinterest:CatalogsUpsertCreativeAssetsItemShape ; sh:class pinterest:CatalogsUpsertCreativeAssetsItem ]
      [ sh:node pinterest:CatalogsUpdateCreativeAssetsItemShape ; sh:class pinterest:CatalogsUpdateCreativeAssetsItem ]
      [ sh:node pinterest:CatalogsDeleteCreativeAssetsItemShape ; sh:class pinterest:CatalogsDeleteCreativeAssetsItem ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1000 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsBatchRequest/language> ;
    sh:name "language" ;
    sh:description "We recommend using the CatalogsLocale values." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "af-ZA" "ar-SA" "bg-BG" "bn-IN" "cs-CZ" "da-DK" "de" "el-GR" "en-AU" "en-CA" "en-GB" "en-IN" "en-US" "es-419" "es-AR" "es-ES" "es-MX" "fi-FI" "fr" "fr-CA" "he-IL" "hi-IN" "hr-HR" "hu-HU" "id-ID" "it" "ja" "ko-KR" "ms-MY" "nb-NO" "nl" "pl-PL" "pt-BR" "pt-PT" "ro-RO" "ru-RU" "sk-SK" "sv-SE" "te-IN" "th-TH" "tl-PH" "tr" "uk-UA" "vi-VN" "zh-CN" "zh-TW" "AM" "AR" "AZ" "BG" "BN" "BS" "CA" "CS" "DA" "DV" "DZ" "DE" "EL" "EN" "ES" "ET" "FA" "FI" "FR" "HE" "HI" "HR" "HU" "HY" "ID" "IN" "IS" "IT" "IW" "JA" "KA" "KM" "KO" "LO" "LT" "LV" "MK" "MN" "MS" "MY" "NB" "NE" "NL" "NO" "PL" "PT" "RO" "RU" "SK" "SL" "SQ" "SR" "SV" "TL" "UK" "VI" "TE" "TH" "TR" "XX" "ZH" ) ;
  ] .

# Shape for Catalogs Create Creative Assets Item
pinterest:CatalogsCreateCreativeAssetsItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreateCreativeAssetsItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreateCreativeAssetsItem/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:CatalogsCreativeAssetsAttributesShape ;
    sh:class pinterest:CatalogsCreativeAssetsAttributes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreateCreativeAssetsItem/creativeAssetsId> ;
    sh:name "creative assets id" ;
    sh:description "The catalog creative assets id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreateCreativeAssetsItem/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "CREATE" ;
  ] .

# Shape for Catalogs Upsert Creative Assets Item
pinterest:CatalogsUpsertCreativeAssetsItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsUpsertCreativeAssetsItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpsertCreativeAssetsItem/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:CatalogsCreativeAssetsAttributesShape ;
    sh:class pinterest:CatalogsCreativeAssetsAttributes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpsertCreativeAssetsItem/creativeAssetsId> ;
    sh:name "creative assets id" ;
    sh:description "The catalog creative assets id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpsertCreativeAssetsItem/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "UPSERT" ;
  ] .

# Shape for Catalogs Update Creative Assets Item
pinterest:CatalogsUpdateCreativeAssetsItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsUpdateCreativeAssetsItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdateCreativeAssetsItem/attributes> ;
    sh:name "attributes" ;
    sh:node pinterest:CatalogsUpdatableCreativeAssetsAttributesShape ;
    sh:class pinterest:CatalogsUpdatableCreativeAssetsAttributes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdateCreativeAssetsItem/creativeAssetsId> ;
    sh:name "creative assets id" ;
    sh:description "The catalog creative assets item id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsUpdateCreativeAssetsItem/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "UPDATE" ;
  ] .

# Shape for Catalogs Delete Creative Assets Item
pinterest:CatalogsDeleteCreativeAssetsItemShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsDeleteCreativeAssetsItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsDeleteCreativeAssetsItem/creativeAssetsId> ;
    sh:name "creative assets id" ;
    sh:description "The catalog creative assets id in the merchant namespace" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsDeleteCreativeAssetsItem/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "DELETE" ;
  ] .

# Shape for Catalogs Product
pinterest:CatalogsProductShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProduct ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProduct/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] .

# Shape for Catalogs Product Group Product Counts Vertical
pinterest:CatalogsProductGroupProductCountsVerticalShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupProductCountsVertical ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupProductCountsVertical/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] .

# Shape for Catalogs List Products By Feed Based Filter
pinterest:CatalogsListProductsByFeedBasedFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsListProductsByFeedBasedFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsListProductsByFeedBasedFilter/feedId> ;
    sh:name "feed id" ;
    sh:description "Catalog Feed id pertaining to the catalog product group filter." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsListProductsByFeedBasedFilter/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for a catalog product group" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsProductGroupFiltersAnyOfShape ; sh:class pinterest:CatalogsProductGroupFiltersAnyOf ]
      [ sh:node pinterest:CatalogsProductGroupFiltersAllOfShape ; sh:class pinterest:CatalogsProductGroupFiltersAllOf ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Product Group Filters Any Of
pinterest:CatalogsProductGroupFiltersAnyOfShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupFiltersAnyOf ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupFiltersAnyOf/anyOf> ;
    sh:name "any of" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:MinPriceFilterShape ; sh:class pinterest:MinPriceFilter ]
      [ sh:node pinterest:MaxPriceFilterShape ; sh:class pinterest:MaxPriceFilter ]
      [ sh:node pinterest:CurrencyFilterShape ; sh:class pinterest:CurrencyFilter ]
      [ sh:node pinterest:ItemIdFilterShape ; sh:class pinterest:ItemIdFilter ]
      [ sh:node pinterest:AvailabilityFilterShape ; sh:class pinterest:AvailabilityFilter ]
      [ sh:node pinterest:BrandFilterShape ; sh:class pinterest:BrandFilter ]
      [ sh:node pinterest:ConditionFilterShape ; sh:class pinterest:ConditionFilter ]
      [ sh:node pinterest:CustomLabel0FilterShape ; sh:class pinterest:CustomLabel0Filter ]
      [ sh:node pinterest:CustomLabel1FilterShape ; sh:class pinterest:CustomLabel1Filter ]
      [ sh:node pinterest:CustomLabel2FilterShape ; sh:class pinterest:CustomLabel2Filter ]
      [ sh:node pinterest:CustomLabel3FilterShape ; sh:class pinterest:CustomLabel3Filter ]
      [ sh:node pinterest:CustomLabel4FilterShape ; sh:class pinterest:CustomLabel4Filter ]
      [ sh:node pinterest:ItemGroupIdFilterShape ; sh:class pinterest:ItemGroupIdFilter ]
      [ sh:node pinterest:GenderFilterShape ; sh:class pinterest:GenderFilter ]
      [ sh:node pinterest:MediaTypeFilterShape ; sh:class pinterest:MediaTypeFilter ]
      [ sh:node pinterest:ProductType4FilterShape ; sh:class pinterest:ProductType4Filter ]
      [ sh:node pinterest:ProductType3FilterShape ; sh:class pinterest:ProductType3Filter ]
      [ sh:node pinterest:ProductType2FilterShape ; sh:class pinterest:ProductType2Filter ]
      [ sh:node pinterest:ProductType1FilterShape ; sh:class pinterest:ProductType1Filter ]
      [ sh:node pinterest:ProductType0FilterShape ; sh:class pinterest:ProductType0Filter ]
      [ sh:node pinterest:GoogleProductCategory6FilterShape ; sh:class pinterest:GoogleProductCategory6Filter ]
      [ sh:node pinterest:GoogleProductCategory5FilterShape ; sh:class pinterest:GoogleProductCategory5Filter ]
      [ sh:node pinterest:GoogleProductCategory4FilterShape ; sh:class pinterest:GoogleProductCategory4Filter ]
      [ sh:node pinterest:GoogleProductCategory3FilterShape ; sh:class pinterest:GoogleProductCategory3Filter ]
      [ sh:node pinterest:GoogleProductCategory2FilterShape ; sh:class pinterest:GoogleProductCategory2Filter ]
      [ sh:node pinterest:GoogleProductCategory1FilterShape ; sh:class pinterest:GoogleProductCategory1Filter ]
      [ sh:node pinterest:GoogleProductCategory0FilterShape ; sh:class pinterest:GoogleProductCategory0Filter ]
      [ sh:node pinterest:ProductGroupReferenceFilterShape ; sh:class pinterest:ProductGroupReferenceFilter ]
      [ sh:node pinterest:CustomNumber0FilterShape ; sh:class pinterest:CustomNumber0Filter ]
      [ sh:node pinterest:CustomNumber1FilterShape ; sh:class pinterest:CustomNumber1Filter ]
      [ sh:node pinterest:CustomNumber2FilterShape ; sh:class pinterest:CustomNumber2Filter ]
      [ sh:node pinterest:CustomNumber3FilterShape ; sh:class pinterest:CustomNumber3Filter ]
      [ sh:node pinterest:CustomNumber4FilterShape ; sh:class pinterest:CustomNumber4Filter ]
      [ sh:node pinterest:TitleKeywordsFilterShape ; sh:class pinterest:TitleKeywordsFilter ]
    ) ;
  ] .

# Shape for Catalogs Product Group Filters All Of
pinterest:CatalogsProductGroupFiltersAllOfShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsProductGroupFiltersAllOf ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupFiltersAllOf/allOf> ;
    sh:name "all of" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:MinPriceFilterShape ; sh:class pinterest:MinPriceFilter ]
      [ sh:node pinterest:MaxPriceFilterShape ; sh:class pinterest:MaxPriceFilter ]
      [ sh:node pinterest:CurrencyFilterShape ; sh:class pinterest:CurrencyFilter ]
      [ sh:node pinterest:ItemIdFilterShape ; sh:class pinterest:ItemIdFilter ]
      [ sh:node pinterest:AvailabilityFilterShape ; sh:class pinterest:AvailabilityFilter ]
      [ sh:node pinterest:BrandFilterShape ; sh:class pinterest:BrandFilter ]
      [ sh:node pinterest:ConditionFilterShape ; sh:class pinterest:ConditionFilter ]
      [ sh:node pinterest:CustomLabel0FilterShape ; sh:class pinterest:CustomLabel0Filter ]
      [ sh:node pinterest:CustomLabel1FilterShape ; sh:class pinterest:CustomLabel1Filter ]
      [ sh:node pinterest:CustomLabel2FilterShape ; sh:class pinterest:CustomLabel2Filter ]
      [ sh:node pinterest:CustomLabel3FilterShape ; sh:class pinterest:CustomLabel3Filter ]
      [ sh:node pinterest:CustomLabel4FilterShape ; sh:class pinterest:CustomLabel4Filter ]
      [ sh:node pinterest:ItemGroupIdFilterShape ; sh:class pinterest:ItemGroupIdFilter ]
      [ sh:node pinterest:GenderFilterShape ; sh:class pinterest:GenderFilter ]
      [ sh:node pinterest:MediaTypeFilterShape ; sh:class pinterest:MediaTypeFilter ]
      [ sh:node pinterest:ProductType4FilterShape ; sh:class pinterest:ProductType4Filter ]
      [ sh:node pinterest:ProductType3FilterShape ; sh:class pinterest:ProductType3Filter ]
      [ sh:node pinterest:ProductType2FilterShape ; sh:class pinterest:ProductType2Filter ]
      [ sh:node pinterest:ProductType1FilterShape ; sh:class pinterest:ProductType1Filter ]
      [ sh:node pinterest:ProductType0FilterShape ; sh:class pinterest:ProductType0Filter ]
      [ sh:node pinterest:GoogleProductCategory6FilterShape ; sh:class pinterest:GoogleProductCategory6Filter ]
      [ sh:node pinterest:GoogleProductCategory5FilterShape ; sh:class pinterest:GoogleProductCategory5Filter ]
      [ sh:node pinterest:GoogleProductCategory4FilterShape ; sh:class pinterest:GoogleProductCategory4Filter ]
      [ sh:node pinterest:GoogleProductCategory3FilterShape ; sh:class pinterest:GoogleProductCategory3Filter ]
      [ sh:node pinterest:GoogleProductCategory2FilterShape ; sh:class pinterest:GoogleProductCategory2Filter ]
      [ sh:node pinterest:GoogleProductCategory1FilterShape ; sh:class pinterest:GoogleProductCategory1Filter ]
      [ sh:node pinterest:GoogleProductCategory0FilterShape ; sh:class pinterest:GoogleProductCategory0Filter ]
      [ sh:node pinterest:ProductGroupReferenceFilterShape ; sh:class pinterest:ProductGroupReferenceFilter ]
      [ sh:node pinterest:CustomNumber0FilterShape ; sh:class pinterest:CustomNumber0Filter ]
      [ sh:node pinterest:CustomNumber1FilterShape ; sh:class pinterest:CustomNumber1Filter ]
      [ sh:node pinterest:CustomNumber2FilterShape ; sh:class pinterest:CustomNumber2Filter ]
      [ sh:node pinterest:CustomNumber3FilterShape ; sh:class pinterest:CustomNumber3Filter ]
      [ sh:node pinterest:CustomNumber4FilterShape ; sh:class pinterest:CustomNumber4Filter ]
      [ sh:node pinterest:TitleKeywordsFilterShape ; sh:class pinterest:TitleKeywordsFilter ]
    ) ;
  ] .

# Shape for Catalogs Retail List Products By Catalog Based Filter Request
pinterest:CatalogsRetailListProductsByCatalogBasedFilterRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailListProductsByCatalogBasedFilterRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailListProductsByCatalogBasedFilterRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the retail product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailListProductsByCatalogBasedFilterRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Retail catalog based product group is available only for selected partners at the moment. If you are not eligible, please use feed based one." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "RETAIL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailListProductsByCatalogBasedFilterRequest/country> ;
    sh:name "country" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailListProductsByCatalogBasedFilterRequest/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for a catalog product group" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsProductGroupFiltersAnyOfShape ; sh:class pinterest:CatalogsProductGroupFiltersAnyOf ]
      [ sh:node pinterest:CatalogsProductGroupFiltersAllOfShape ; sh:class pinterest:CatalogsProductGroupFiltersAllOf ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailListProductsByCatalogBasedFilterRequest/locale> ;
    sh:name "locale" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "af-ZA" "ar-SA" "bg-BG" "bn-IN" "cs-CZ" "da-DK" "de" "el-GR" "en-AU" "en-CA" "en-GB" "en-IN" "en-US" "es-419" "es-AR" "es-ES" "es-MX" "fi-FI" "fr" "fr-CA" "he-IL" "hi-IN" "hr-HR" "hu-HU" "id-ID" "it" "ja" "ko-KR" "ms-MY" "nb-NO" "nl" "pl-PL" "pt-BR" "pt-PT" "ro-RO" "ru-RU" "sk-SK" "sv-SE" "te-IN" "th-TH" "tl-PH" "tr" "uk-UA" "vi-VN" "zh-CN" "zh-TW" ) ;
  ] .

# Shape for Catalogs Hotel List Products By Catalog Based Filter Request
pinterest:CatalogsHotelListProductsByCatalogBasedFilterRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelListProductsByCatalogBasedFilterRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelListProductsByCatalogBasedFilterRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the hotel product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelListProductsByCatalogBasedFilterRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "HOTEL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelListProductsByCatalogBasedFilterRequest/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for a hotel product group" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsHotelProductGroupFiltersAnyOfShape ; sh:class pinterest:CatalogsHotelProductGroupFiltersAnyOf ]
      [ sh:node pinterest:CatalogsHotelProductGroupFiltersAllOfShape ; sh:class pinterest:CatalogsHotelProductGroupFiltersAllOf ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Creative Assets List Products By Catalog Based Filter Request
pinterest:CatalogsCreativeAssetsListProductsByCatalogBasedFilterRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsListProductsByCatalogBasedFilterRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsListProductsByCatalogBasedFilterRequest/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the creative assets product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsListProductsByCatalogBasedFilterRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "CREATIVE_ASSETS" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsListProductsByCatalogBasedFilterRequest/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for a creative assets product group" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsCreativeAssetsProductGroupFiltersAnyOfShape ; sh:class pinterest:CatalogsCreativeAssetsProductGroupFiltersAnyOf ]
      [ sh:node pinterest:CatalogsCreativeAssetsProductGroupFiltersAllOfShape ; sh:class pinterest:CatalogsCreativeAssetsProductGroupFiltersAllOf ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Creative Assets Product Group
pinterest:CatalogsCreativeAssetsProductGroupShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsProductGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroup/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the creative assets product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroup/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "CREATIVE_ASSETS" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroup/createdAt> ;
    sh:name "created at" ;
    sh:description "Unix timestamp in seconds of when catalog product group was created." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroup/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroup/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for a creative assets product group" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsCreativeAssetsProductGroupFiltersAnyOfShape ; sh:class pinterest:CatalogsCreativeAssetsProductGroupFiltersAnyOf ]
      [ sh:node pinterest:CatalogsCreativeAssetsProductGroupFiltersAllOfShape ; sh:class pinterest:CatalogsCreativeAssetsProductGroupFiltersAllOf ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroup/id> ;
    sh:name "id" ;
    sh:description "ID of the creative assets product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroup/name> ;
    sh:name "name" ;
    sh:description "Name of creative assets product group" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroup/updatedAt> ;
    sh:name "updated at" ;
    sh:description "Unix timestamp in seconds of last time catalog product group was updated." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Product Group
pinterest:CatalogsHotelProductGroupShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelProductGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroup/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the hotel product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroup/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "HOTEL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroup/createdAt> ;
    sh:name "created at" ;
    sh:description "Unix timestamp in seconds of when catalog product group was created." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroup/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroup/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for a hotel product group" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsHotelProductGroupFiltersAnyOfShape ; sh:class pinterest:CatalogsHotelProductGroupFiltersAnyOf ]
      [ sh:node pinterest:CatalogsHotelProductGroupFiltersAllOfShape ; sh:class pinterest:CatalogsHotelProductGroupFiltersAllOf ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroup/id> ;
    sh:name "id" ;
    sh:description "ID of the hotel product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroup/name> ;
    sh:name "name" ;
    sh:description "Name of hotel product group" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroup/type> ;
    sh:name "type" ;
    sh:description "<p>Catalog hotel product group type</p>\n<p>MERCHANT_CREATED: Product groups created by merchants.\n<br>ALL_LISTINGS: Includes every hotel item in your catalog." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "MERCHANT_CREATED" "ALL_LISTINGS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroup/updatedAt> ;
    sh:name "updated at" ;
    sh:description "Unix timestamp in seconds of last time catalog product group was updated." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Retail Product Group
pinterest:CatalogsRetailProductGroupShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailProductGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Catalog id pertaining to the retail product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "RETAIL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/country> ;
    sh:name "country" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/createdAt> ;
    sh:name "created at" ;
    sh:description "Unix timestamp in seconds of when catalog product group was created." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/feedId> ;
    sh:name "feed id" ;
    sh:description "id of the catalogs feed belonging to this catalog product group" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/filters> ;
    sh:name "filters" ;
    sh:description "Object holding a group of filters for a catalog product group" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsProductGroupFiltersAnyOfShape ; sh:class pinterest:CatalogsProductGroupFiltersAnyOf ]
      [ sh:node pinterest:CatalogsProductGroupFiltersAllOfShape ; sh:class pinterest:CatalogsProductGroupFiltersAllOf ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/id> ;
    sh:name "id" ;
    sh:description "ID of the catalog product group." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/isFeatured> ;
    sh:name "is featured" ;
    sh:description "boolean indicator of whether the product group is being featured or not" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/locale> ;
    sh:name "locale" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/name> ;
    sh:name "name" ;
    sh:description "Name of catalog product group" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "INACTIVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/type> ;
    sh:name "type" ;
    sh:description "<p>Catalog product group type</p>\n<p>MERCHANT_CREATED: Product groups created by merchants.\n<br>ALL_PRODUCTS: Consists of every product in your latest successful feed upload.\n<br>BEST_DEALS: Consists of products with the deepest drop in price.\n<br>PINNER_FAVORITES: Consists of products that are resonating most with people on Pinterest, based on engagement.\n<br>TOP_SELLERS: Consists of products with the highest conversion rate, if you have the conversion tag installed.\n<br>BACK_IN_STOCK: Consists of products that were previously out of stock and are now in stock.\n<br>NEW_ARRIVALS: Consists of products that are new to your Catalog.\n<br>SHOPIFY_COLLECTION: Product groups created based on Shopify Product Collections.\n<br>I2PC: Product groups created based on predicted product category.</p>" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "MERCHANT_CREATED" "ALL_PRODUCTS" "BEST_DEALS" "PINNER_FAVORITES" "TOP_SELLERS" "BACK_IN_STOCK" "NEW_ARRIVALS" "SHOPIFY_COLLECTIONS" "I2PC" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroup/updatedAt> ;
    sh:name "updated at" ;
    sh:description "Unix timestamp in seconds of last time catalog product group was updated." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Product Group Product Counts
pinterest:CatalogsHotelProductGroupProductCountsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelProductGroupProductCounts ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupProductCounts/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "HOTEL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductGroupProductCounts/total> ;
    sh:name "total" ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
  ] .

# Shape for Catalogs Creative Assets Product Group Product Counts
pinterest:CatalogsCreativeAssetsProductGroupProductCountsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsProductGroupProductCounts ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupProductCounts/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "CREATIVE_ASSETS" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupProductCounts/total> ;
    sh:name "total" ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductGroupProductCounts/videos> ;
    sh:name "videos" ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
  ] .

# Shape for Catalogs Retail Product Group Product Counts
pinterest:CatalogsRetailProductGroupProductCountsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailProductGroupProductCounts ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupProductCounts/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "RETAIL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupProductCounts/inStock> ;
    sh:name "in stock" ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupProductCounts/outOfStock> ;
    sh:name "out of stock" ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupProductCounts/preorder> ;
    sh:name "preorder" ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupProductCounts/total> ;
    sh:name "total" ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductGroupProductCounts/videos> ;
    sh:name "videos" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
  ] .

# Shape for Catalogs Retail Product
pinterest:CatalogsRetailProductShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailProduct ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProduct/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "RETAIL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProduct/metadata> ;
    sh:name "metadata" ;
    sh:description "Retail product metadata entity" ;
    sh:node pinterest:CatalogsRetailProductMetadataShape ;
    sh:class pinterest:CatalogsRetailProductMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProduct/pin> ;
    sh:name "pin" ;
    sh:description "Pin model containing properties related to a Pinterest Pin." ;
    sh:node pinterest:PinShape ;
    sh:class pinterest:Pin ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Retail Product Metadata
pinterest:CatalogsRetailProductMetadataShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailProductMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductMetadata/availability> ;
    sh:name "availability" ;
    sh:description "Product availability." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "IN_STOCK" "OUT_OF_STOCK" "PREORDER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductMetadata/currency> ;
    sh:name "currency" ;
    sh:description "Currency Codes from ISO 4217." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SPL" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZAR" "ZMW" "ZWD" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductMetadata/itemGroupId> ;
    sh:name "item group id" ;
    sh:description "The parent ID of the product." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductMetadata/itemId> ;
    sh:name "item id" ;
    sh:description "The user-created unique ID that represents the product." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductMetadata/price> ;
    sh:name "price" ;
    sh:description "The price of the product." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailProductMetadata/salePrice> ;
    sh:name "sale price" ;
    sh:description "The discounted price of the product." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Product
pinterest:CatalogsHotelProductShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelProduct ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProduct/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "HOTEL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProduct/metadata> ;
    sh:name "metadata" ;
    sh:description "Hotel product metadata entity" ;
    sh:node pinterest:CatalogsHotelProductMetadataShape ;
    sh:class pinterest:CatalogsHotelProductMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProduct/pin> ;
    sh:name "pin" ;
    sh:description "Pin model containing properties related to a Pinterest Pin." ;
    sh:node pinterest:PinShape ;
    sh:class pinterest:Pin ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Product Metadata
pinterest:CatalogsHotelProductMetadataShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelProductMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelProductMetadata/hotelId> ;
    sh:name "hotel id" ;
    sh:description "The user-created unique ID that represents the hotel item." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Creative Assets Product Metadata
pinterest:CatalogsCreativeAssetsProductMetadataShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsProductMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductMetadata/creativeAssetsId> ;
    sh:name "creative assets id" ;
    sh:description "The user-created unique ID that represents the creative assets item." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProductMetadata/visibility> ;
    sh:name "visibility" ;
    sh:description "Creative assets visibility." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "VISIBLE" "HIDDEN" ) ;
  ] .

# Shape for Catalogs Creative Assets Product
pinterest:CatalogsCreativeAssetsProductShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsProduct ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProduct/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "CREATIVE_ASSETS" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProduct/metadata> ;
    sh:name "metadata" ;
    sh:description "Creative assets product metadata entity" ;
    sh:node pinterest:CatalogsCreativeAssetsProductMetadataShape ;
    sh:class pinterest:CatalogsCreativeAssetsProductMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsProduct/pin> ;
    sh:name "pin" ;
    sh:description "Pin model containing properties related to a Pinterest Pin." ;
    sh:node pinterest:PinShape ;
    sh:class pinterest:Pin ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Report Stats
pinterest:CatalogsReportStatsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsReportStats ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportStats/report_type> ;
    sh:name "report type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "FEED_INGESTION_ISSUES" "DISTRIBUTION_ISSUES" ) ;
  ] .

# Shape for Catalogs Report Parameters
pinterest:CatalogsReportParametersShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsReportParameters ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportParameters/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] .

# Shape for Catalogs Create Report Response
pinterest:CatalogsCreateReportResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreateReportResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreateReportResponse/token> ;
    sh:name "token" ;
    sh:description "Token to be used to get the report" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Report
pinterest:CatalogsReportShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsReport ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReport/reportStatus> ;
    sh:name "report status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "FINISHED" "IN_PROGRESS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReport/size> ;
    sh:name "size" ;
    sh:description "Size of the report in bytes" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReport/url> ;
    sh:name "url" ;
    sh:description "URL to download the report" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Report Feed Ingestion Stats
pinterest:CatalogsReportFeedIngestionStatsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsReportFeedIngestionStats ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportFeedIngestionStats/report_type> ;
    sh:name "report type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "FEED_INGESTION_ISSUES" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportFeedIngestionStats/catalogId> ;
    sh:name "catalog id" ;
    sh:description "ID of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportFeedIngestionStats/code> ;
    sh:name "code" ;
    sh:description "The event code that a diagnostics aggregated number references" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportFeedIngestionStats/codeLabel> ;
    sh:name "code label" ;
    sh:description "A human-friendly label for the event code (e.g, 'AVAILABILITY_INVALID')" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportFeedIngestionStats/message> ;
    sh:name "message" ;
    sh:description "Title message describing the diagnostic issue" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportFeedIngestionStats/occurrences> ;
    sh:name "occurrences" ;
    sh:description "Number of occurrences of the issue" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportFeedIngestionStats/severity> ;
    sh:name "severity" ;
    sh:description "An ERROR means that items have been dropped, while a WARN denotes that items have been ingested despite an issue" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "WARN" "ERROR" ) ;
  ] .

# Shape for Catalogs Report Distribution Stats
pinterest:CatalogsReportDistributionStatsShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsReportDistributionStats ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportDistributionStats/report_type> ;
    sh:name "report type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "DISTRIBUTION_ISSUES" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportDistributionStats/catalogId> ;
    sh:name "catalog id" ;
    sh:description "ID of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportDistributionStats/code> ;
    sh:name "code" ;
    sh:description "The event code that a diagnostics aggregated number references" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportDistributionStats/codeLabel> ;
    sh:name "code label" ;
    sh:description "A human-friendly label for the event code (e.g, 'SPAM')" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportDistributionStats/ineligibleForAds> ;
    sh:name "ineligible for ads" ;
    sh:description "Indicates if issue makes items ineligible for ads distribution" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportDistributionStats/ineligibleForOrganic> ;
    sh:name "ineligible for organic" ;
    sh:description "Indicates if issue makes items ineligible for organic distribution" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportDistributionStats/message> ;
    sh:name "message" ;
    sh:description "Title message describing the diagnostic issue" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportDistributionStats/occurrences> ;
    sh:name "occurrences" ;
    sh:description "Number of occurrences of the issue" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Report Feed Ingestion Filter
pinterest:CatalogsReportFeedIngestionFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsReportFeedIngestionFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportFeedIngestionFilter/feedId> ;
    sh:name "feed id" ;
    sh:description "ID of the feed entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportFeedIngestionFilter/processingResultId> ;
    sh:name "processing result id" ;
    sh:description "Unique identifier of a feed processing result. It can be acquired from the \"id\" field of the \"items\" array within the response of the [List processing results for a given feed](/docs/api/v5/#operation/feed_processing_results/list). If not provided, default to most recent completed processing result." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportFeedIngestionFilter/reportType> ;
    sh:name "report type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "FEED_INGESTION_ISSUES" ;
  ] .

# Shape for Catalogs Report Distribution Issue Filter
pinterest:CatalogsReportDistributionIssueFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsReportDistributionIssueFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportDistributionIssueFilter/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Unique identifier of a catalog. If not given, oldest catalog will be used" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportDistributionIssueFilter/reportType> ;
    sh:name "report type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "DISTRIBUTION_ISSUES" ;
  ] .

# Shape for Catalogs Report All Items Filter
pinterest:CatalogsReportAllItemsFilterShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsReportAllItemsFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportAllItemsFilter/catalogId> ;
    sh:name "catalog id" ;
    sh:description "Unique identifier of a catalog. If not given, oldest catalog will be used" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsReportAllItemsFilter/reportType> ;
    sh:name "report type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "ALL_ITEMS" ;
  ] .

# Shape for Catalogs Hotel Report Parameters
pinterest:CatalogsHotelReportParametersShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelReportParameters ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelReportParameters/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "HOTEL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelReportParameters/report> ;
    sh:name "report" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsReportFeedIngestionFilterShape ; sh:class pinterest:CatalogsReportFeedIngestionFilter ]
      [ sh:node pinterest:CatalogsReportDistributionIssueFilterShape ; sh:class pinterest:CatalogsReportDistributionIssueFilter ]
      [ sh:node pinterest:CatalogsReportAllItemsFilterShape ; sh:class pinterest:CatalogsReportAllItemsFilter ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Report Stats Parameters
pinterest:CatalogsHotelReportStatsParametersShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelReportStatsParameters ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelReportStatsParameters/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "HOTEL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelReportStatsParameters/report> ;
    sh:name "report" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsReportFeedIngestionFilterShape ; sh:class pinterest:CatalogsReportFeedIngestionFilter ]
      [ sh:node pinterest:CatalogsReportDistributionIssueFilterShape ; sh:class pinterest:CatalogsReportDistributionIssueFilter ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Retail Report Parameters
pinterest:CatalogsRetailReportParametersShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailReportParameters ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailReportParameters/catalog_type> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "RETAIL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailReportParameters/report> ;
    sh:name "report" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsReportFeedIngestionFilterShape ; sh:class pinterest:CatalogsReportFeedIngestionFilter ]
      [ sh:node pinterest:CatalogsReportDistributionIssueFilterShape ; sh:class pinterest:CatalogsReportDistributionIssueFilter ]
      [ sh:node pinterest:CatalogsReportAllItemsFilterShape ; sh:class pinterest:CatalogsReportAllItemsFilter ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Retail Report Stats Parameters
pinterest:CatalogsRetailReportStatsParametersShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailReportStatsParameters ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailReportStatsParameters/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "RETAIL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailReportStatsParameters/report> ;
    sh:name "report" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:CatalogsReportFeedIngestionFilterShape ; sh:class pinterest:CatalogsReportFeedIngestionFilter ]
      [ sh:node pinterest:CatalogsReportDistributionIssueFilterShape ; sh:class pinterest:CatalogsReportDistributionIssueFilter ]
    ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalog
pinterest:CatalogShape a sh:NodeShape ;
  sh:targetClass pinterest:Catalog ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Catalog/createdAt> ;
    sh:name "created at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Catalog/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Catalog/updatedAt> ;
    sh:name "updated at" ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Catalog/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Catalog/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a catalog entity." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Create Request
pinterest:CatalogsCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreateRequest/catalogType> ;
    sh:name "catalog type" ;
    sh:description "Type of the catalog entity." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "RETAIL" "HOTEL" "CREATIVE_ASSETS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreateRequest/name> ;
    sh:name "name" ;
    sh:description "A human-friendly name associated to a given catalog." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Retail Available Filter Values
pinterest:CatalogsRetailAvailableFilterValuesShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsRetailAvailableFilterValues ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailAvailableFilterValues/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "RETAIL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailAvailableFilterValues/filterValues> ;
    sh:name "filter values" ;
    sh:description "A map of filter attributes to their available values." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsRetailAvailableFilterValues/filterValues/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsRetailAvailableFilterValues/filterValues/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Hotel Available Filter Values
pinterest:CatalogsHotelAvailableFilterValuesShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsHotelAvailableFilterValues ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAvailableFilterValues/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "HOTEL" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAvailableFilterValues/filterValues> ;
    sh:name "filter values" ;
    sh:description "A map of filter attributes to their available values." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsHotelAvailableFilterValues/filterValues/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsHotelAvailableFilterValues/filterValues/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Catalogs Creative Assets Available Filter Values
pinterest:CatalogsCreativeAssetsAvailableFilterValuesShape a sh:NodeShape ;
  sh:targetClass pinterest:CatalogsCreativeAssetsAvailableFilterValues ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/catalogType> ;
    sh:name "catalog type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "CREATIVE_ASSETS" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/filterValues> ;
    sh:name "filter values" ;
    sh:description "A map of filter attributes to their available values." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/filterValues/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/filterValues/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Event Quality Score
pinterest:EventQualityScoreShape a sh:NodeShape ;
  sh:targetClass pinterest:EventQualityScore ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventQualityScore/ingestionSource> ;
    sh:name "ingestion source" ;
    sh:description "List of ingestion sources for a conversion event." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "TAG" "MMP" "FILE_UPLOAD" "CONVERSIONS_API" "NATIVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventQualityScore/lookbackPeriod> ;
    sh:name "lookback period" ;
    sh:description "Days in lookback window in the GET Conversion EQS response." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "1d" "14d" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventQualityScore/overallStatus> ;
    sh:name "overall status" ;
    sh:description "Overall status of event quality score." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "NEEDS_IMPROVEMENT" "FAIR" "GOOD" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventQualityScore/qualityComponents> ;
    sh:name "quality components" ;
    sh:description "Set of quality components, with each component containing a event coverage and details." ;
    sh:node pinterest:QualityComponentsShape ;
    sh:class pinterest:QualityComponents ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.EventQualityScore/sourcePlatform> ;
    sh:name "source platform" ;
    sh:description "List of source platforms for a conversion event." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "WEB" "MOBILE" "MOBILE_ANDROID" "MOBILE_IOS" "OFFLINE" "PINTEREST_WEB" "PINTEREST_ANDROID" "PINTEREST_IOS" "POINT_OF_SALE" ) ;
  ] .

# Shape for Quality Components
pinterest:QualityComponentsShape a sh:NodeShape ;
  sh:targetClass pinterest:QualityComponents ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/advertiserExternalId> ;
    sh:name "advertiser external id" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/clickIdEpik> ;
    sh:name "click id epik" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/externalEventId> ;
    sh:name "external event id" ;
    sh:description "Dedup components." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/hashedEmail> ;
    sh:name "hashed email" ;
    sh:description "User matching identifiers." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/hashedMaid> ;
    sh:name "hashed maid" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/ipAddress> ;
    sh:name "ip address" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/orderId> ;
    sh:name "order id" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/orderValue> ;
    sh:name "order value" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/productId> ;
    sh:name "product id" ;
    sh:description "Product/event metadata." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/sourceUrl> ;
    sh:name "source url" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/userAgent> ;
    sh:name "user agent" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Quality Component Details
pinterest:QualityComponentDetailsShape a sh:NodeShape ;
  sh:targetClass pinterest:QualityComponentDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponentDetails/coverage> ;
    sh:name "coverage" ;
    sh:description "Coverage percentage for this event type." ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponentDetails/issues> ;
    sh:name "issues" ;
    sh:description "List of issues detected for this event type, if any." ;
    sh:node pinterest:QualityComponentIssueShape ;
    sh:class pinterest:QualityComponentIssue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponentDetails/overlap> ;
    sh:name "overlap" ;
    sh:description "Overlap percentage for this event type. Only populated for external_event_id" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Quality Component Issue
pinterest:QualityComponentIssueShape a sh:NodeShape ;
  sh:targetClass pinterest:QualityComponentIssue ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponentIssue/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the issue check." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponentIssue/name> ;
    sh:name "name" ;
    sh:description "Human-readable name of the issue." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponentIssue/reason> ;
    sh:name "reason" ;
    sh:description "Detailed reason for the issue." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Api Response
pinterest:ConversionApiResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionApiResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionApiResponse/events> ;
    sh:name "events" ;
    sh:description "Specific messages for each event received. The order will match the order in which the events were received in the request." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionApiResponse/events/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionApiResponse/events/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionApiResponse/numEventsProcessed> ;
    sh:name "num events processed" ;
    sh:description "Number of events that were successfully processed from the events." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionApiResponse/numEventsReceived> ;
    sh:name "num events received" ;
    sh:description "Total number of events received in the request." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Events
pinterest:ConversionEventsShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionEvents ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEvents/data> ;
    sh:name "data" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionEvents/data/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionEvents/data/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1000 ;
  ] .

# Shape for Conversion Event App Info
pinterest:ConversionEventAppInfoShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionEventAppInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventAppInfo/appId> ;
    sh:name "app id" ;
    sh:description "App ID in Google Play Store, AppStore or other stores." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 200 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventAppInfo/appName> ;
    sh:name "app name" ;
    sh:description "Name of the app. Primarily used for Mobile Apps." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 200 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventAppInfo/appPackageName> ;
    sh:name "app package name" ;
    sh:description "App package name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 200 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventAppInfo/appStore> ;
    sh:name "app store" ;
    sh:description "The name of the app distributor or store from which the app was installed.\nSome options: Samsung Galaxy Store, Google Play Store, Amazon Store, Apple App Store, F-Droid, Aptoide, Obtanium, Huawei AppGallery, Xiaomi Mi GetApps" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventAppInfo/appVersion> ;
    sh:name "app version" ;
    sh:description "App version. Primarily used for mobile apps" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventAppInfo/installTime> ;
    sh:name "install time" ;
    sh:description "App install time. Unix timestamp in seconds" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventAppInfo/userAgent> ;
    sh:name "user agent" ;
    sh:description "User Agent request header. Primarily used for Web events" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 16384 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventAppInfo/windowHeight> ;
    sh:name "window height" ;
    sh:description "Inner height of the window or viewport." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "30720"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventAppInfo/windowWidth> ;
    sh:name "window width" ;
    sh:description "Inner width of the window or viewport." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "30720"^^xsd:int ;
  ] .

# Shape for Conversion Event Device Info
pinterest:ConversionEventDeviceInfoShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionEventDeviceInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/batteryLevel> ;
    sh:name "battery level" ;
    sh:description "Battery charge level percentage" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "100"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/brand> ;
    sh:name "brand" ;
    sh:description "Device brand" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/carrier> ;
    sh:name "carrier" ;
    sh:description "User device's mobile carrier." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/cpuCores> ;
    sh:name "cpu cores" ;
    sh:description "Number of CPU cores" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "1152"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/externalStorageFreeSpace> ;
    sh:name "external storage free space" ;
    sh:description "External storage size in GB" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "1048576"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/externalStorageSize> ;
    sh:name "external storage size" ;
    sh:description "External storage size in GB" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "1048576"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/formFactor> ;
    sh:name "form factor" ;
    sh:description "Device form factor" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "desktop" "laptop" "cellphone" "tablet" "smartwatch" "tv" "vr" "console" "other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/kernelVersion> ;
    sh:name "kernel version" ;
    sh:description "Kernel version. Examples:\nLinux: 6.15. Obtain by running: uname -r\nMacOS: 24.3.0. Obtain by running: sysctl kern.version\nAndroid: 6.6. Obtain from OS.uname().release" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/languages> ;
    sh:name "languages" ;
    sh:description "List of user installed languages. ISO 639-1 format" ;
    sh:datatype xsd:string ;
    sh:maxCount 100 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/locale> ;
    sh:name "locale" ;
    sh:description "Device locale BCP-47 format" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 35 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/model> ;
    sh:name "model" ;
    sh:description "Device model name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/networkType> ;
    sh:name "network type" ;
    sh:description "Network type: 4G, 5G, ethernet, wifi\nIn Android: NetworkCapabilities.getNetworkCapabilities()" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "wifi" "cellular_2g" "cellular_3g" "cellular_4g" "cellular_5g" "cellular_6g" "ethernet" "unknown" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/osFamily> ;
    sh:name "os family" ;
    sh:description "OS Family" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ios" "android" "macos" "windows" "linux" "bsd" "other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/osName> ;
    sh:name "os name" ;
    sh:description "Short name of the OS.\nThis value if specific to os family. Examples:\nWindows: 10, 11; Android: 16; iOS: 18; MacOS: 15; Linux: Debian, Ubuntu, Arch" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/osReleaseName> ;
    sh:name "os release name" ;
    sh:description "Marketing name for the release version\niOS: Dawn\nAndroid: Baklava\nMacOS: Sequoia\nUbuntu Linux: Plucky Puffin" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/osVersion> ;
    sh:name "os version" ;
    sh:description "Full name of the version. Examples:\niOS: 18.3\nAndroid: 16.1\nMacOS: 15.5\nWindows: 24H2\nUbuntu Linux: 25.04" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/screenDensity> ;
    sh:name "screen density" ;
    sh:description "Screen density, PPI" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "100000"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/screenHeight> ;
    sh:name "screen height" ;
    sh:description "Screen height in pixels" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "30720"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/screenWidth> ;
    sh:name "screen width" ;
    sh:description "Screen width in pixels" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "30720"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/storageFreeSpace> ;
    sh:name "storage free space" ;
    sh:description "Internal storage size in GB" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "1048576"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/storageSize> ;
    sh:name "storage size" ;
    sh:description "Internal storage size in GB" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
    sh:maxInclusive "1048576"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/timezone> ;
    sh:name "timezone" ;
    sh:description "Device timezone" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 40 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/timezoneAbbr> ;
    sh:name "timezone abbr" ;
    sh:description "Timezone abbreviation" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 5 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventDeviceInfo/type> ;
    sh:name "type" ;
    sh:description "Device type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] .

# Shape for Conversion Events User Data Properties
pinterest:ConversionEventsUserDataShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionEventsUserData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/clickId> ;
    sh:name "click id" ;
    sh:description "The unique identifier stored in _epik cookie on your domain or &epik= query parameter in the URL. We highly recommend this on checkout events at least. It may improve reporting performance such as ROAS/CPA." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/clientIpAddress> ;
    sh:name "client ip address" ;
    sh:description "The user's IP address, which can be either in IPv4 or IPv6 format. Used for matching. We highly recommend this for all events. It may improve reporting performance such as ROAS/CPA." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/clientUserAgent> ;
    sh:name "client user agent" ;
    sh:description "The user agent string of the user's web browser. We highly recommend this for all events. It may improve reporting performance such as ROAS/CPA." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/country> ;
    sh:name "country" ;
    sh:description "Sha256 hashes of two-character ISO-3166 country code indicating the user's country, in lowercase. The string should be in the UTF-8 format." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/ct> ;
    sh:name "ct" ;
    sh:description "Sha256 hashes of user's city, in lowercase, and without spaces or punctuation. User residency city (mostly billing). The string should be in the UTF-8 format." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/db> ;
    sh:name "db" ;
    sh:description "Sha256 hashes of user's date of birthday, given as year, month, and day. The string should be in the UTF-8 format." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/em> ;
    sh:name "em" ;
    sh:description "Sha256 hashes of lowercase version of user's email addresses. Used for matching. We highly recommend this on checkout events at least. It may improve reporting performance such as ROAS/CPA. The string should be in the UTF-8 format." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/externalId> ;
    sh:name "external id" ;
    sh:description "Sha256 hashes of the unique id from the advertiser that identifies a user in their space, e.g. user id, loyalty id, etc. We highly recommend this on all events. It may improve reporting performance such as ROAS/CPA. The string should be in the UTF-8 format." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/fn> ;
    sh:name "fn" ;
    sh:description "Sha256 hashes of user's first name, in lowercase. We highly recommend this on checkout events at least. It may improve reporting performance such as ROAS/CPA. The string should be in the UTF-8 format." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/ge> ;
    sh:name "ge" ;
    sh:description "Sha256 hashes of user's gender, in lowercase. Either \"f\" or \"m\" or \"n\" for non-binary gender. The string should be in the UTF-8 format." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/hashedMaids> ;
    sh:name "hashed maids" ;
    sh:description "Sha256 hashes of user's \"Google Advertising IDs\" (GAIDs) or \"Apple's Identifier for Advertisers\" (IDFAs). Used for matching. We highly recommend this on checkout events at least. It may improve reporting performance such as ROAS/CPA. The string should be in the UTF-8 format." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/ln> ;
    sh:name "ln" ;
    sh:description "Sha256 hashes of user's last name, in lowercase. We highly recommend this on checkout events at least. It may improve reporting performance such as ROAS/CPA. The string should be in the UTF-8 format." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/partnerId> ;
    sh:name "partner id" ;
    sh:description "A unique identifier of visitors' information defined by third party partners. e.g RampID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/ph> ;
    sh:name "ph" ;
    sh:description "Sha256 hashes of user's phone numbers, only digits with country code, area code, and number. Remove any symbols, letters, spaces and leading zeros. We highly recommend this on checkout events at least. It may improve reporting performance such as ROAS/CPA. The string should be in the UTF-8 format." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/st> ;
    sh:name "st" ;
    sh:description "Sha256 hashes of user's state, given as a two-letter code in lowercase. User residency state (mostly billing). The string should be in the UTF-8 format." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventsUserDataProperties/zp> ;
    sh:name "zp" ;
    sh:description "Sha256 hashes of user's zipcode, only digits. User residency zipcode (mostly billing). The string should be in the UTF-8 format." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Conversion Event Response
pinterest:ConversionEventResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionEventResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventResponse/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Id of the ad account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventResponse/conversionEvent> ;
    sh:name "conversion event" ;
    sh:description "conversion tag type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PAGE_LOAD" "UNKNOWN" "INITIALIZED" "PAGE_VISIT" "SIGNUP" "CHECKOUT" "CUSTOM" "VIEW_CATEGORY" "SEARCH" "ADD_TO_CART" "WATCH_VIDEO" "LEAD" "APP_INSTALL" "WEB_SESSION" "EXTERNAL_MEASUREMENT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventResponse/conversionTagId> ;
    sh:name "conversion tag id" ;
    sh:description "Id of the tag." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEventResponse/createdTime> ;
    sh:name "created time" ;
    sh:description "Creation date in epoch format." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Conversion Tag Create
pinterest:ConversionTagCreateShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionTagCreate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCreate/aemDbEnabled> ;
    sh:name "aem db enabled" ;
    sh:description "Whether Automatic Enhanced Match birthdate is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCreate/aemEnabled> ;
    sh:name "aem enabled" ;
    sh:description "Whether Automatic Enhanced Match email is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCreate/aemExternalIdEnabled> ;
    sh:name "aem external id enabled" ;
    sh:description "Whether Automatic Enhanced Match location is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCreate/aemFnlnEnabled> ;
    sh:name "aem fnln enabled" ;
    sh:description "Whether Automatic Enhanced Match name is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCreate/aemGeEnabled> ;
    sh:name "aem ge enabled" ;
    sh:description "Whether Automatic Enhanced Match gender is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCreate/aemLocEnabled> ;
    sh:name "aem loc enabled" ;
    sh:description "Whether Automatic Enhanced Match location is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCreate/aemPhEnabled> ;
    sh:name "aem ph enabled" ;
    sh:description "Whether Automatic Enhanced Match phone is enabled. See [Enhanced match](https://help.pinterest.com/en/business/article/enhanced-match) for more information." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCreate/mdFrequency> ;
    sh:name "md frequency" ;
    sh:description "Metadata ingestion frequency." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionTagCreate/name> ;
    sh:name "name" ;
    sh:description "Conversion tag name." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer List Upload Create Request
pinterest:CustomerListUploadCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomerListUploadCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadCreateRequest/operation> ;
    sh:name "operation" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "ADD" "REMOVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadCreateRequest/totalParts> ;
    sh:name "total parts" ;
    sh:description "Number of parts to upload the file in." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:minInclusive "1"^^xsd:int ;
    sh:maxInclusive "10"^^xsd:int ;
  ] .

# Shape for Customer List Upload
pinterest:CustomerListUploadShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomerListUpload ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpload/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Advertiser ID." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpload/creationTime> ;
    sh:name "creation time" ;
    sh:description "Customer List Upload creation_time. Epoch (seconds)." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpload/customerListId> ;
    sh:name "customer list id" ;
    sh:description "ID of the customer list associated with this upload." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpload/errorCounts> ;
    sh:name "error counts" ;
    sh:description "Error counts by error code" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/errorCounts/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/errorCounts/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpload/id> ;
    sh:name "id" ;
    sh:description "Customer List Upload ID." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpload/operation> ;
    sh:name "operation" ;
    sh:description "User list operation type (add or remove)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "ADD" "REMOVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpload/recordCounts> ;
    sh:name "record counts" ;
    sh:description "Record processing counts" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/recordCounts/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/recordCounts/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpload/state> ;
    sh:name "state" ;
    sh:description "Workload processing state" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "NOT_STARTED" "RUNNING" "PAUSED" "SUCCEEDED" "FAILED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpload/updatedTime> ;
    sh:name "updated time" ;
    sh:description "Customer List Upload updated_time. Epoch (seconds)." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer List Upload Create Response
pinterest:CustomerListUploadCreateResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomerListUploadCreateResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadCreateResponse/customerListUpload> ;
    sh:name "customer list upload" ;
    sh:node pinterest:CustomerListUploadShape ;
    sh:class pinterest:CustomerListUpload ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadCreateResponse/s3MultipartUploadData> ;
    sh:name "s3multipart upload data" ;
    sh:node pinterest:S3MultipartUploadDataShape ;
    sh:class pinterest:S3MultipartUploadData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for S3Multipart Upload Data
pinterest:S3MultipartUploadDataShape a sh:NodeShape ;
  sh:targetClass pinterest:S3MultipartUploadData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.S3MultipartUploadData/fileParts> ;
    sh:name "file parts" ;
    sh:description "Array of file parts with pre-signed URLs." ;
    sh:node pinterest:S3FilePartShape ;
    sh:class pinterest:S3FilePart ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for S3File Part
pinterest:S3FilePartShape a sh:NodeShape ;
  sh:targetClass pinterest:S3FilePart ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.S3FilePart/partNumber> ;
    sh:name "part number" ;
    sh:description "Part number for upload." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.S3FilePart/presignedUrl> ;
    sh:name "presigned url" ;
    sh:description "Pre-signed URL." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer List Upload Response
pinterest:CustomerListUploadResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomerListUploadResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadResponse/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Advertiser ID." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadResponse/creationTime> ;
    sh:name "creation time" ;
    sh:description "Customer List Upload creation_time. Epoch (seconds)." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadResponse/customerListId> ;
    sh:name "customer list id" ;
    sh:description "ID of the customer list associated with this upload." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadResponse/errorCounts> ;
    sh:name "error counts" ;
    sh:description "Error counts by error code" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/errorCounts/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/errorCounts/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadResponse/id> ;
    sh:name "id" ;
    sh:description "Customer List Upload ID." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadResponse/operation> ;
    sh:name "operation" ;
    sh:description "User list operation type (add or remove)" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "ADD" "REMOVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadResponse/recordCounts> ;
    sh:name "record counts" ;
    sh:description "Record processing counts" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/recordCounts/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/recordCounts/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadResponse/state> ;
    sh:name "state" ;
    sh:description "Workload processing state" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "NOT_STARTED" "RUNNING" "PAUSED" "SUCCEEDED" "FAILED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadResponse/updatedTime> ;
    sh:name "updated time" ;
    sh:description "Customer List Upload updated_time. Epoch (seconds)." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer List
pinterest:CustomerListShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomerList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerList/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "Associated ad account ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerList/createdTime> ;
    sh:name "created time" ;
    sh:description "Creation time. Unix timestamp in seconds." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerList/exceptions> ;
    sh:name "exceptions" ;
    sh:description "Customer list errors" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerList/exceptions/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerList/exceptions/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerList/id> ;
    sh:name "id" ;
    sh:description "Customer list ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerList/name> ;
    sh:name "name" ;
    sh:description "Customer list name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerList/numBatches> ;
    sh:name "num batches" ;
    sh:description "Total number of list updates.  List creation counts as one batch. Each <a href=\"/docs/redoc/#operation/ads_v3_customer_list_add_handler_PUT\">Append</a> or <a href=\"/docs/redoc/#operation/ads_v3_customer_list_remove_handler_PUT\">Remove API</a> call counts as another. List creation via the Ads Manager UI could result in more than one batch since the UI breaks up large lists." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerList/numRemovedUserRecords> ;
    sh:name "num removed user records" ;
    sh:description "Number of removed user records. In a <a href=\"/docs/redoc/#operation/ads_v3_customer_list_remove_handler_PUT\">Remove API</a> call, this counter increases even if the user is not found in the list." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerList/numUploadedUserRecords> ;
    sh:name "num uploaded user records" ;
    sh:description "Number of uploaded user records. In an <a href=\"/docs/redoc/#operation/ads_v3_customer_list_add_handler_PUT\">Append API</a> call, this counter increases even if the uploaded user is already in the list." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerList/status> ;
    sh:name "status" ;
    sh:description "Customer list status. TOO_SMALL - the list has less than 100 Pinterest users." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PROCESSING" "READY" "TOO_SMALL" "UPLOADING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerList/type> ;
    sh:name "type" ;
    sh:description "Always \"customerlist\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerList/updatedTime> ;
    sh:name "updated time" ;
    sh:description "Last update time. Unix timestamp in seconds." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer List Request
pinterest:CustomerListRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomerListRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListRequest/listType> ;
    sh:name "list type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "EMAIL" "IDFA" "MAID" "LR_ID" "DLX_ID" "HASHED_PINNER_ID" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListRequest/name> ;
    sh:name "name" ;
    sh:description "Customer list name." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListRequest/records> ;
    sh:name "records" ;
    sh:description "Records list. Can be any combination of emails, MAIDs, or IDFAs. Emails must be lowercase and can be plain text or hashed using SHA1, SHA256, or MD5. MAIDs and IDFAs must be hashed with SHA1, SHA256, or MD5." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer List Update Request
pinterest:CustomerListUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:CustomerListUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpdateRequest/operationType> ;
    sh:name "operation type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "ADD" "REMOVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpdateRequest/records> ;
    sh:name "records" ;
    sh:description "Records list. Can be any combination of emails, MAIDs, or IDFAs. Emails must be lowercase and can be plain text or hashed using SHA1, SHA256, or MD5. MAIDs and IDFAs must be hashed with SHA1, SHA256, or MD5." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Integration Log
pinterest:IntegrationLogShape a sh:NodeShape ;
  sh:targetClass pinterest:IntegrationLog ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/advertiserId> ;
    sh:name "advertiser id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 128 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/appVersionNumber> ;
    sh:name "app version number" ;
    sh:description "Version number of the integration application." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 20 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/clientTimestamp> ;
    sh:name "client timestamp" ;
    sh:description "Timestamp in milliseconds of when the log was executed at the client." ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/error> ;
    sh:name "error" ;
    sh:description "System error details included in the log sent by the client." ;
    sh:node pinterest:IntegrationLogClientErrorShape ;
    sh:class pinterest:IntegrationLogClientError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/eventType> ;
    sh:name "event type" ;
    sh:description "Log event type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "APP" "API" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/externalBusinessId> ;
    sh:name "external business id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 2048 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/feedProfileId> ;
    sh:name "feed profile id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 128 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/logLevel> ;
    sh:name "log level" ;
    sh:description "Log level type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "INFO" "WARN" "ERROR" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/merchantId> ;
    sh:name "merchant id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 128 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/message> ;
    sh:name "message" ;
    sh:description "Explanation of the event that occured." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 8192 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/platformVersionNumber> ;
    sh:name "platform version number" ;
    sh:description "Version number of the platform the integration application is running on." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 20 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/request> ;
    sh:name "request" ;
    sh:description "HTTP request details included in the log sent by the client." ;
    sh:node pinterest:IntegrationLogClientRequestShape ;
    sh:class pinterest:IntegrationLogClientRequest ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLog/tagId> ;
    sh:name "tag id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 128 ;
  ] .

# Shape for Integration Log Client Error
pinterest:IntegrationLogClientErrorShape a sh:NodeShape ;
  sh:targetClass pinterest:IntegrationLogClientError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientError/cause> ;
    sh:name "cause" ;
    sh:description "Original cause of the error." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 512 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientError/columnNumber> ;
    sh:name "column number" ;
    sh:description "Column number in the line of the file that raised the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientError/fileName> ;
    sh:name "file name" ;
    sh:description "Filename where the error happened." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 256 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientError/lineNumber> ;
    sh:name "line number" ;
    sh:description "Line number where the error happened." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientError/message> ;
    sh:name "message" ;
    sh:description "Human-readable description of the error." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 8192 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientError/messageDetail> ;
    sh:name "message detail" ;
    sh:description "More detail about the message." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 1024 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientError/name> ;
    sh:name "name" ;
    sh:description "Filename where the error happened." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 256 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientError/number> ;
    sh:name "number" ;
    sh:description "Integer that specifies the error code." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientError/stackTrace> ;
    sh:name "stack trace" ;
    sh:description "Stack trace of where the error happened." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Integration Log Client Request
pinterest:IntegrationLogClientRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:IntegrationLogClientRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientRequest/host> ;
    sh:name "host" ;
    sh:description "HTTP request host from host header." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientRequest/method> ;
    sh:name "method" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "GET" "HEAD" "POST" "PUT" "DELETE" "CONNECT" "OPTIONS" "TRACE" "PATCH" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientRequest/path> ;
    sh:name "path" ;
    sh:description "HTTP request path." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientRequest/requestHeaders> ;
    sh:name "request headers" ;
    sh:description "HTTP request headers as key-value pairs." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/requestHeaders/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/requestHeaders/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientRequest/responseHeaders> ;
    sh:name "response headers" ;
    sh:description "HTTP response headers as key-value pairs." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/responseHeaders/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/responseHeaders/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientRequest/responseStatusCode> ;
    sh:name "response status code" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Integration Logs Request
pinterest:IntegrationLogsRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:IntegrationLogsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogsRequest/logs> ;
    sh:name "logs" ;
    sh:node pinterest:IntegrationLogShape ;
    sh:class pinterest:IntegrationLog ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 250 ;
  ] .

# Shape for Integration Logs Success Response
pinterest:IntegrationLogsSuccessResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:IntegrationLogsSuccessResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogsSuccessResponse/message> ;
    sh:name "message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Integration Metadata
pinterest:IntegrationMetadataShape a sh:NodeShape ;
  sh:targetClass pinterest:IntegrationMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/additionalId1> ;
    sh:name "additional id1" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/connectedAdvertiserId> ;
    sh:name "connected advertiser id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/connectedLbaId> ;
    sh:name "connected lba id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/connectedMerchantId> ;
    sh:name "connected merchant id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/connectedTagId> ;
    sh:name "connected tag id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/connectedUserId> ;
    sh:name "connected user id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/createdTimestamp> ;
    sh:name "created timestamp" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/externalBusinessId> ;
    sh:name "external business id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/partnerAccessTokenExpiry> ;
    sh:name "partner access token expiry" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/partnerMetadata> ;
    sh:name "partner metadata" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/partnerRefreshTokenExpiry> ;
    sh:name "partner refresh token expiry" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/scopes> ;
    sh:name "scopes" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationMetadata/updatedTimestamp> ;
    sh:name "updated timestamp" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Integration Request
pinterest:IntegrationRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:IntegrationRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/additionalId1> ;
    sh:name "additional id1" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/connectedAdvertiserId> ;
    sh:name "connected advertiser id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/connectedLbaId> ;
    sh:name "connected lba id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/connectedMerchantId> ;
    sh:name "connected merchant id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/connectedTagId> ;
    sh:name "connected tag id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/externalBusinessId> ;
    sh:name "external business id" ;
    sh:description "External business ID for the integration." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/partnerAccessToken> ;
    sh:name "partner access token" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/partnerAccessTokenExpiry> ;
    sh:name "partner access token expiry" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/partnerMetadata> ;
    sh:name "partner metadata" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/partnerPrimaryEmail> ;
    sh:name "partner primary email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/partnerRefreshToken> ;
    sh:name "partner refresh token" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/partnerRefreshTokenExpiry> ;
    sh:name "partner refresh token expiry" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequest/scopes> ;
    sh:name "scopes" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Integration Request Patch
pinterest:IntegrationRequestPatchShape a sh:NodeShape ;
  sh:targetClass pinterest:IntegrationRequestPatch ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequestPatch/additionalId1> ;
    sh:name "additional id1" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequestPatch/connectedAdvertiserId> ;
    sh:name "connected advertiser id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequestPatch/connectedLbaId> ;
    sh:name "connected lba id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequestPatch/connectedMerchantId> ;
    sh:name "connected merchant id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequestPatch/connectedTagId> ;
    sh:name "connected tag id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequestPatch/partnerAccessToken> ;
    sh:name "partner access token" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequestPatch/partnerAccessTokenExpiry> ;
    sh:name "partner access token expiry" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequestPatch/partnerMetadata> ;
    sh:name "partner metadata" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequestPatch/partnerPrimaryEmail> ;
    sh:name "partner primary email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequestPatch/partnerRefreshToken> ;
    sh:name "partner refresh token" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequestPatch/partnerRefreshTokenExpiry> ;
    sh:name "partner refresh token expiry" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRequestPatch/scopes> ;
    sh:name "scopes" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Integration Record
pinterest:IntegrationRecordShape a sh:NodeShape ;
  sh:targetClass pinterest:IntegrationRecord ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/additionalId1> ;
    sh:name "additional id1" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/connectedAdvertiserId> ;
    sh:name "connected advertiser id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/connectedLbaId> ;
    sh:name "connected lba id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/connectedMerchantId> ;
    sh:name "connected merchant id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/connectedTagId> ;
    sh:name "connected tag id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/connectedUserId> ;
    sh:name "connected user id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/createdTime> ;
    sh:name "created time" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/externalBusinessId> ;
    sh:name "external business id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/partnerAccessToken> ;
    sh:name "partner access token" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/partnerAccessTokenExpiry> ;
    sh:name "partner access token expiry" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/partnerMetadata> ;
    sh:name "partner metadata" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/partnerPrimaryEmail> ;
    sh:name "partner primary email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/partnerRefreshToken> ;
    sh:name "partner refresh token" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/partnerRefreshTokenExpiry> ;
    sh:name "partner refresh token expiry" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/scopes> ;
    sh:name "scopes" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationRecord/updatedTime> ;
    sh:name "updated time" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword
pinterest:KeywordShape a sh:NodeShape ;
  sh:targetClass pinterest:Keyword ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Keyword/bid> ;
    sh:name "bid" ;
    sh:description "</p><strong>Note:</strong> bid field has been deprecated. Input will not be set and field will return null. Keyword custom bid in microcurrency - null if inherited from parent ad group." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Keyword/matchType> ;
    sh:name "match type" ;
    sh:description "Keyword match type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "BROAD" "PHRASE" "EXACT" "EXACT_NEGATIVE" "PHRASE_NEGATIVE" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Keyword/value> ;
    sh:name "value" ;
    sh:description "Keyword value (120 chars max)." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Keyword/archived> ;
    sh:name "archived" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Keyword/id> ;
    sh:name "id" ;
    sh:description "Keyword ID ." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Keyword/parentId> ;
    sh:name "parent id" ;
    sh:description "Keyword parent entity ID (advertiser, campaign, ad group)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Keyword/parentType> ;
    sh:name "parent type" ;
    sh:description "Parent entity type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Keyword/type> ;
    sh:name "type" ;
    sh:description "Always keyword" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword Error
pinterest:KeywordErrorShape a sh:NodeShape ;
  sh:targetClass pinterest:KeywordError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordError/data> ;
    sh:name "data" ;
    sh:node pinterest:KeywordShape ;
    sh:class pinterest:Keyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordError/errorMessages> ;
    sh:name "error messages" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Keyword Metrics
pinterest:KeywordMetricsShape a sh:NodeShape ;
  sh:targetClass pinterest:KeywordMetrics ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordMetrics/keywordQueryVolume> ;
    sh:name "keyword query volume" ;
    sh:description "Keyword's search frequency. This value is based on keyword frequency in pepsi client response" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword Metrics Response
pinterest:KeywordMetricsResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:KeywordMetricsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordMetricsResponse/keyword> ;
    sh:name "keyword" ;
    sh:description "Keyword name, e.g., \"keyword\":\"fashion outfits\"" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordMetricsResponse/metrics> ;
    sh:name "metrics" ;
    sh:description "Keyword metrics JSON" ;
    sh:node pinterest:KeywordMetricsShape ;
    sh:class pinterest:KeywordMetrics ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Keyword Update Body
pinterest:KeywordUpdateBodyShape a sh:NodeShape ;
  sh:targetClass pinterest:KeywordUpdateBody ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordUpdateBody/keywords> ;
    sh:name "keywords" ;
    sh:description "Keywords to update. Object array. Each object has 2 possible fields:<br>1. \"id\": (required) keyword ID<br>2. \"archived\": boolean. Should keyword be archived?<br>For example: [{\"id\":\"2886610576653\", \"archived\": false}, {\"id\":\"2886610576654\",  \"archived\": true}, ...]" ;
    sh:node pinterest:KeywordUpdateShape ;
    sh:class pinterest:KeywordUpdate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Keywords Metrics Array Response
pinterest:KeywordsMetricsArrayResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:KeywordsMetricsArrayResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordsMetricsArrayResponse/data> ;
    sh:name "data" ;
    sh:node pinterest:KeywordMetricsResponseShape ;
    sh:class pinterest:KeywordMetricsResponse ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Keywords Response
pinterest:KeywordsResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:KeywordsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordsResponse/errors> ;
    sh:name "errors" ;
    sh:node pinterest:KeywordErrorShape ;
    sh:class pinterest:KeywordError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.KeywordsResponse/keywords> ;
    sh:name "keywords" ;
    sh:node pinterest:KeywordShape ;
    sh:class pinterest:Keyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Trending Keywords Response
pinterest:TrendingKeywordsResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:TrendingKeywordsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingKeywordsResponse/trends> ;
    sh:name "trends" ;
    sh:description "The top trending keywords for the specified trend type in the requested region.<br />\nResults are ordered, with the first element in the array representing the #1 top trend." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingKeywordsResponse/trends/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingKeywordsResponse/trends/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Label
pinterest:LabelShape a sh:NodeShape ;
  sh:targetClass pinterest:Label ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Label/id> ;
    sh:name "id" ;
    sh:description "Label ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Label/labelType> ;
    sh:name "label type" ;
    sh:description "Category for the labeled items. You can apply one BRAND label to a campaign. You can apply 30 CUSTOM labels to a campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "BRAND" "CUSTOM" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Label/parentId> ;
    sh:name "parent id" ;
    sh:description "Label parent entity ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Label/parentType> ;
    sh:name "parent type" ;
    sh:description "Label parent entity type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CAMPAIGN" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Label/status> ;
    sh:name "status" ;
    sh:description "The new status you want to give the label, either `ACTIVE` (in use) or no longer in use (`ARCHIVED`)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "ARCHIVED" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Label/value> ;
    sh:name "value" ;
    sh:description "Label name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] .

# Shape for Label Error
pinterest:LabelErrorShape a sh:NodeShape ;
  sh:targetClass pinterest:LabelError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LabelError/data> ;
    sh:name "data" ;
    sh:node pinterest:LabelShape ;
    sh:class pinterest:Label ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LabelError/errorMessages> ;
    sh:name "error messages" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Labels Response
pinterest:LabelsResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:LabelsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LabelsResponse/errors> ;
    sh:name "errors" ;
    sh:description "Labels that were not successfully applied." ;
    sh:node pinterest:LabelErrorShape ;
    sh:class pinterest:LabelError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LabelsResponse/labels> ;
    sh:name "labels" ;
    sh:node pinterest:LabelShape ;
    sh:class pinterest:Label ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Label Update Request
pinterest:LabelUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:LabelUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LabelUpdateRequest/labels> ;
    sh:name "labels" ;
    sh:description "Labels that you are applying to the campaign." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelUpdateRequest/labels/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelUpdateRequest/labels/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Lead Subscription
pinterest:LeadSubscriptionShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadSubscription ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscription/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "The Ad Account ID that this lead form belongs to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscription/apiVersion> ;
    sh:name "api version" ;
    sh:description "API version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscription/createdTime> ;
    sh:name "created time" ;
    sh:description "Subscription creation time. Unix timestamp in milliseconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscription/cryptographicAlgorithm> ;
    sh:name "cryptographic algorithm" ;
    sh:description "Lead data encryption algorithm." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscription/cryptographicKey> ;
    sh:name "cryptographic key" ;
    sh:description "Base64 encoded key for client to decrypt lead data." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscription/id> ;
    sh:name "id" ;
    sh:description "Subscription ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscription/leadFormId> ;
    sh:name "lead form id" ;
    sh:description "Lead form ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscription/userAccountId> ;
    sh:name "user account id" ;
    sh:description "User account used to subscribe lead data." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscription/webhookUrl> ;
    sh:name "webhook url" ;
    sh:description "Standard HTTPS webhook URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Lead Subscription Post Params Create
pinterest:LeadSubscriptionPostParamsCreateShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadSubscriptionPostParamsCreate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscriptionPostParamsCreate/leadFormId> ;
    sh:name "lead form id" ;
    sh:description "Lead form ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscriptionPostParamsCreate/webhookUrl> ;
    sh:name "webhook url" ;
    sh:description "Standard HTTPS webhook URL." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscriptionPostParamsCreate/partnerAccessToken> ;
    sh:name "partner access token" ;
    sh:description "Partner access token. Only for clients that requires authentication. We recommend to avoid this param." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscriptionPostParamsCreate/partnerMetadata> ;
    sh:name "partner metadata" ;
    sh:description "Partner metadata. Only for clients that requires special handling. We recommend to avoid this param." ;
    sh:node pinterest:LeadSubscriptionPostParamsCreatePartnerMetadataAllOf1Shape ;
    sh:class pinterest:LeadSubscriptionPostParamsCreatePartnerMetadataAllOf1 ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscriptionPostParamsCreate/partnerRefreshToken> ;
    sh:name "partner refresh token" ;
    sh:description "Partner refresh token. Only for clients that requires authentication. We recommend to avoid this param." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Lead Subscription Post Params Create Partner Metadata All Of1
pinterest:LeadSubscriptionPostParamsCreatePartnerMetadataAllOf1Shape a sh:NodeShape ;
  sh:targetClass pinterest:LeadSubscriptionPostParamsCreatePartnerMetadataAllOf1 ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadSubscriptionPostParamsCreatePartnerMetadataAllOf1/subscriberKey> ;
    sh:name "subscriber key" ;
    sh:description "Text field value that uniquely identifies a subscriber." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Lead Form Common
pinterest:LeadFormCommonShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadFormCommon ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormCommon/completionMessage> ;
    sh:name "completion message" ;
    sh:description "A message for people who complete the form to let them know what happens next." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormCommon/disclosureLanguage> ;
    sh:name "disclosure language" ;
    sh:description "Additional disclosure language to be included in the lead form." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormCommon/hasAcceptedTerms> ;
    sh:name "has accepted terms" ;
    sh:description "Whether the advertiser has accepted Pinterest's terms of service for creating a lead ad.\n\nBy sending us TRUE for this parameter, you agree that (i) you will use any personal information received in\ncompliance with the privacy policy you share with Pinterest, and (ii) you will comply with Pinterest's <a href=\"https://policy.pinterest.com/en/lead-ad-terms\">Lead Ad Terms</a>. As a reminder, all advertising on Pinterest is subject to the <a href=\"https://business.pinterest.com/en/pinterest-advertising-services-agreement/\">Pinterest Advertising Services Agreement</a> or an equivalent agreement as set forth on an IO" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormCommon/name> ;
    sh:name "name" ;
    sh:description "Internal name of the lead form." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormCommon/policyLinks> ;
    sh:name "policy links" ;
    sh:description "List of additional policy links to be displayed on the lead form." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormCommon/policyLinks/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormCommon/policyLinks/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 3 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormCommon/privacyPolicyLink> ;
    sh:name "privacy policy link" ;
    sh:description "A link to the advertiser's privacy policy. This will be included in the lead form's disclosure language." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormCommon/questions> ;
    sh:name "questions" ;
    sh:description "List of questions to be displayed on the lead form." ;
    sh:node pinterest:LeadFormQuestionShape ;
    sh:class pinterest:LeadFormQuestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 10 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormCommon/status> ;
    sh:name "status" ;
    sh:description "Status of the lead form" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DRAFT" "ACTIVE" ) ;
  ] .

# Shape for Lead Form Question
pinterest:LeadFormQuestionShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadFormQuestion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormQuestion/customQuestionFieldType> ;
    sh:name "custom question field type" ;
    sh:description "Lead form question field type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TEXT_FIELD" "TEXT_AREA" "RADIO_LIST" "CHECKBOX" "null" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormQuestion/customQuestionLabel> ;
    sh:name "custom question label" ;
    sh:description "Question label for a custom question." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormQuestion/customQuestionOptions> ;
    sh:name "custom question options" ;
    sh:description "Question options for a custom question." ;
    sh:datatype xsd:string ;
    sh:maxCount 5 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormQuestion/questionType> ;
    sh:name "question type" ;
    sh:description "Lead form question type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CUSTOM" "FULL_NAME" "FIRST_NAME" "LAST_NAME" "EMAIL" "PHONE_NUMBER" "ZIP_CODE" "GENDER" "CITY" "COUNTRY" "STATE_PROVINCE" "ADDRESS" "DATE_OF_BIRTH" "AGE" ) ;
  ] .

# Shape for Lead Form Test Request
pinterest:LeadFormTestRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadFormTestRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormTestRequest/answers> ;
    sh:name "answers" ;
    sh:description "Test lead answers. Should follow the creation order." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Lead Form Test Response
pinterest:LeadFormTestResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadFormTestResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormTestResponse/subscriptionId> ;
    sh:name "subscription id" ;
    sh:description "Subscription ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Lead Form Response
pinterest:LeadFormShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadForm ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/completionMessage> ;
    sh:name "completion message" ;
    sh:description "A message for people who complete the form to let them know what happens next." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/disclosureLanguage> ;
    sh:name "disclosure language" ;
    sh:description "Additional disclosure language to be included in the lead form." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/hasAcceptedTerms> ;
    sh:name "has accepted terms" ;
    sh:description "Whether the advertiser has accepted Pinterest's terms of service for creating a lead ad.\n\nBy sending us TRUE for this parameter, you agree that (i) you will use any personal information received in\ncompliance with the privacy policy you share with Pinterest, and (ii) you will comply with Pinterest's <a href=\"https://policy.pinterest.com/en/lead-ad-terms\">Lead Ad Terms</a>. As a reminder, all advertising on Pinterest is subject to the <a href=\"https://business.pinterest.com/en/pinterest-advertising-services-agreement/\">Pinterest Advertising Services Agreement</a> or an equivalent agreement as set forth on an IO" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/name> ;
    sh:name "name" ;
    sh:description "Internal name of the lead form." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/policyLinks> ;
    sh:name "policy links" ;
    sh:description "List of additional policy links to be displayed on the lead form." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormResponse/policyLinks/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormResponse/policyLinks/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 3 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/privacyPolicyLink> ;
    sh:name "privacy policy link" ;
    sh:description "A link to the advertiser's privacy policy. This will be included in the lead form's disclosure language." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/questions> ;
    sh:name "questions" ;
    sh:description "List of questions to be displayed on the lead form." ;
    sh:node pinterest:LeadFormQuestionShape ;
    sh:class pinterest:LeadFormQuestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 10 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/status> ;
    sh:name "status" ;
    sh:description "Status of the lead form" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DRAFT" "ACTIVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "The Ad Account ID that this lead form belongs to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/createdTime> ;
    sh:name "created time" ;
    sh:description "Lead form creation time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/id> ;
    sh:name "id" ;
    sh:description "The ID of this lead form" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/updatedTime> ;
    sh:name "updated time" ;
    sh:description "Last update time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Lead Form Array Response
pinterest:LeadFormArrayResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadFormArrayResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormArrayResponse/items> ;
    sh:name "items" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormArrayResponse/items/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormArrayResponse/items/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Lead Form Create Request
pinterest:LeadFormCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadFormCreateRequest .

# Shape for Lead Form Update Request
pinterest:LeadFormUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadFormUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormUpdateRequest/completionMessage> ;
    sh:name "completion message" ;
    sh:description "A message for people who complete the form to let them know what happens next." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormUpdateRequest/disclosureLanguage> ;
    sh:name "disclosure language" ;
    sh:description "Additional disclosure language to be included in the lead form." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormUpdateRequest/hasAcceptedTerms> ;
    sh:name "has accepted terms" ;
    sh:description "Whether the advertiser has accepted Pinterest's terms of service for creating a lead ad.\n\nBy sending us TRUE for this parameter, you agree that (i) you will use any personal information received in\ncompliance with the privacy policy you share with Pinterest, and (ii) you will comply with Pinterest's <a href=\"https://policy.pinterest.com/en/lead-ad-terms\">Lead Ad Terms</a>. As a reminder, all advertising on Pinterest is subject to the <a href=\"https://business.pinterest.com/en/pinterest-advertising-services-agreement/\">Pinterest Advertising Services Agreement</a> or an equivalent agreement as set forth on an IO" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormUpdateRequest/name> ;
    sh:name "name" ;
    sh:description "Internal name of the lead form." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormUpdateRequest/policyLinks> ;
    sh:name "policy links" ;
    sh:description "List of additional policy links to be displayed on the lead form." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormUpdateRequest/policyLinks/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormUpdateRequest/policyLinks/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 3 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormUpdateRequest/privacyPolicyLink> ;
    sh:name "privacy policy link" ;
    sh:description "A link to the advertiser's privacy policy. This will be included in the lead form's disclosure language." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormUpdateRequest/questions> ;
    sh:name "questions" ;
    sh:description "List of questions to be displayed on the lead form." ;
    sh:node pinterest:LeadFormQuestionShape ;
    sh:class pinterest:LeadFormQuestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 10 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormUpdateRequest/status> ;
    sh:name "status" ;
    sh:description "Status of the lead form" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DRAFT" "ACTIVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormUpdateRequest/id> ;
    sh:name "id" ;
    sh:description "The ID of this lead form to be updated" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Leads Export Create Request
pinterest:LeadsExportCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadsExportCreateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadsExportCreateRequest/adId> ;
    sh:name "ad id" ;
    sh:description "ID for the ad collecting leads" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadsExportCreateRequest/endDate> ;
    sh:name "end date" ;
    sh:description "Export leads collected on and before end date (UTC). Format: YYYY-MM-DD" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadsExportCreateRequest/startDate> ;
    sh:name "start date" ;
    sh:description "Export leads collected on and after start date (UTC). Format: YYYY-MM-DD" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^(\\d{4})-(\\d{2})-(\\d{2})$" ;
  ] .

# Shape for Leads Export Create Response
pinterest:LeadsExportCreateResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadsExportCreateResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadsExportCreateResponse/leadsExportId> ;
    sh:name "leads export id" ;
    sh:description "ID for the leads export job" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] .

# Shape for Leads Export Response Data
pinterest:LeadsExportResponseDataShape a sh:NodeShape ;
  sh:targetClass pinterest:LeadsExportResponseData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadsExportResponseData/downloadUrl> ;
    sh:name "download url" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadsExportResponseData/exportStatus> ;
    sh:name "export status" ;
    sh:description "Status of a leads export job" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "IN_PROGRESS" "FINISHED" "FAILED" ) ;
  ] .

# Shape for Media Upload
pinterest:MediaUploadShape a sh:NodeShape ;
  sh:targetClass pinterest:MediaUpload ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUpload/mediaId> ;
    sh:name "media id" ;
    sh:description "Unique identifier for this media upload. Used to track status\nand for attaching during Pin creation." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUpload/mediaType> ;
    sh:name "media type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "video" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUpload/uploadParameters> ;
    sh:name "upload parameters" ;
    sh:description "The list of parameter key/value pairs you will need to send with your POST request to upload your media file." ;
    sh:node pinterest:MediaUploadParametersShape ;
    sh:class pinterest:MediaUploadParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUpload/uploadUrl> ;
    sh:name "upload url" ;
    sh:description "The URL where you will POST your media file." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] .

# Shape for Media Upload Parameters
pinterest:MediaUploadParametersShape a sh:NodeShape ;
  sh:targetClass pinterest:MediaUploadParameters ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUploadParameters/Content-Type> ;
    sh:name "content-type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUploadParameters/key> ;
    sh:name "key" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUploadParameters/policy> ;
    sh:name "policy" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUploadParameters/x-amz-algorithm> ;
    sh:name "x-amz-algorithm" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUploadParameters/x-amz-credential> ;
    sh:name "x-amz-credential" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUploadParameters/x-amz-date> ;
    sh:name "x-amz-date" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUploadParameters/x-amz-security-token> ;
    sh:name "x-amz-security-token" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUploadParameters/x-amz-signature> ;
    sh:name "x-amz-signature" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Media
pinterest:MediaShape a sh:NodeShape ;
  sh:targetClass pinterest:Media ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Media/mediaId> ;
    sh:name "media id" ;
    sh:description "Unique identifier for this media upload. Used to track status\nand for attaching during Pin creation." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Media/mediaType> ;
    sh:name "media type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "video" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Media/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "registered" "processing" "succeeded" "failed" ) ;
  ] .

# Shape for Media Upload Create
pinterest:MediaUploadCreateShape a sh:NodeShape ;
  sh:targetClass pinterest:MediaUploadCreate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MediaUploadCreate/mediaType> ;
    sh:name "media type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "video" ;
  ] .

# Shape for Conversion MSOTEvents
pinterest:ConversionMSOTEventsShape a sh:NodeShape ;
  sh:targetClass pinterest:ConversionMSOTEvents ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/actionTimestamps> ;
    sh:name "action timestamps" ;
    sh:description "Timestamp(s) when the ad action(s) happened. Unix timestamp in seconds." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ID of the ad group that was attributed to the conversion event." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/attributionModel> ;
    sh:name "attribution model" ;
    sh:description "The attribution model used to attribute the conversion event." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "first_touch" "last_touch" "multi_touch" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/attributionScope> ;
    sh:name "attribution scope" ;
    sh:description "Ad event type." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "view" "engagement" "click" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/attributionScore> ;
    sh:name "attribution score" ;
    sh:description "Credit given to the attributed ad actions. Allowed values are > 0 and <= 1." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:double ;
    sh:maxInclusive "1"^^xsd:double ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The ID of the campaign that was attributed to the conversion event." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/currency> ;
    sh:name "currency" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNK" "USD" "GBP" "CAD" "EUR" "AUD" "NZD" "SEK" "ILS" "CHF" "HKD" "JPY" "SGD" "KRW" "NOK" "DKK" "PLN" "RON" "HUF" "CZK" "BRL" "MXN" "ARS" "CLP" "COP" "INR" "TRY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/eventId> ;
    sh:name "event id" ;
    sh:description "A unique id string that identifies this event. If you are already sending us events through Conversions API, then this id should match the event_id sent through Conversions API." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:maxLength 256 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/eventName> ;
    sh:name "event name" ;
    sh:description "Type of user event." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "add_to_cart" "checkout" "lead" "signup" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/eventTimestamp> ;
    sh:name "event timestamp" ;
    sh:description "The time when the event occurred. Unix timestamp in seconds." ;
    sh:datatype xsd:long ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/totalEventTouchpoints> ;
    sh:name "total event touchpoints" ;
    sh:description "Total number of ad events including other non-Pinterest ad platforms." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "1"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/totalEvents> ;
    sh:name "total events" ;
    sh:description "Total number of conversion events that are reported in one API call.\n<p>If you are sending one API request for one attributed conversion event then this value should be 1.</p>\n<p>If you are sending multiple attributed conversion events in one API request then this value should be the total number of attributed conversion events in the request.</p>" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "1"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionMSOTEvents/value> ;
    sh:name "value" ;
    sh:description "Order value of the conversion event. Required if <code>event_name</code> is 'add_to_cart' or 'checkout'." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Pin Analytics Metrics Response
pinterest:PinAnalyticsShape a sh:NodeShape ;
  sh:targetClass pinterest:PinAnalytics ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinAnalyticsMetricsResponse/dailyMetrics> ;
    sh:name "daily metrics" ;
    sh:description "Array with the requested daily metric records" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/dailyMetrics/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/dailyMetrics/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics> ;
    sh:name "lifetime metrics" ;
    sh:description "The lifetime metric name and value." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics> ;
    sh:name "summary metrics" ;
    sh:description "The metric name and value over the requested period for each requested metric" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Carousel Slot
pinterest:CarouselSlotShape a sh:NodeShape ;
  sh:targetClass pinterest:CarouselSlot ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CarouselSlot/description> ;
    sh:name "description" ;
    sh:description "Carousel Pin slot description." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CarouselSlot/link> ;
    sh:name "link" ;
    sh:description "Carousel Pin slot link." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CarouselSlot/title> ;
    sh:name "title" ;
    sh:description "Carousel Pin slot title." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Pin Create
pinterest:PinCreateShape a sh:NodeShape ;
  sh:targetClass pinterest:PinCreate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinCreate/altText> ;
    sh:name "alt text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 500 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinCreate/boardId> ;
    sh:name "board id" ;
    sh:description "The board to which this Pin belongs." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinCreate/boardSectionId> ;
    sh:name "board section id" ;
    sh:description "The board section to which this Pin belongs." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinCreate/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 800 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinCreate/dominantColor> ;
    sh:name "dominant color" ;
    sh:description "Dominant pin color. Hex number, e.g. `#6E7874`." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinCreate/link> ;
    sh:name "link" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 2048 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinCreate/mediaSource> ;
    sh:name "media source" ;
    sh:description "Pin media source that can be an image, video, or a mix of both passed in as a request." ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:PinMediaSourceImageBase64Shape ; sh:class pinterest:PinMediaSourceImageBase64 ]
      [ sh:node pinterest:PinMediaSourceImageURLShape ; sh:class pinterest:PinMediaSourceImageURL ]
      [ sh:node pinterest:PinMediaSourceVideoIDShape ; sh:class pinterest:PinMediaSourceVideoID ]
      [ sh:node pinterest:PinMediaSourceImagesBase64Shape ; sh:class pinterest:PinMediaSourceImagesBase64 ]
      [ sh:node pinterest:PinMediaSourceImagesURLShape ; sh:class pinterest:PinMediaSourceImagesURL ]
      [ sh:node pinterest:PinMediaSourcePinURLShape ; sh:class pinterest:PinMediaSourcePinURL ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinCreate/parentPinId> ;
    sh:name "parent pin id" ;
    sh:description "The source pin id if this pin was saved from another pin. [Learn more](https://help.pinterest.com/article/save-pins-on-pinterest)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinCreate/sponsorId> ;
    sh:name "sponsor id" ;
    sh:description "The sponsor account id to request paid partnership from.  Currently the field is only available to a list of users in a closed beta." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinCreate/title> ;
    sh:name "title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] .

# Shape for Pin Media Source Image Base64
pinterest:PinMediaSourceImageBase64Shape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaSourceImageBase64 ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImageBase64/contentType> ;
    sh:name "content type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "image/jpeg" "image/png" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImageBase64/data> ;
    sh:name "data" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^[a-zA-Z0-9+/=]+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImageBase64/isStandard> ;
    sh:name "is standard" ;
    sh:description "Set the parameter to false to create the new simplified Pin instead of the standard pin. Currently the field is only available to a list of beta users." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImageBase64/sourceType> ;
    sh:name "source type" ;
    sh:description "The source type of the media." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "image_base64" ;
  ] .

# Shape for Pin Media Source Image Url
pinterest:PinMediaSourceImageURLShape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaSourceImageURL ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImageURL/isStandard> ;
    sh:name "is standard" ;
    sh:description "Set the parameter to false to create the new simplified Pin instead of the standard pin. Currently the field is only available to a list of beta users." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImageURL/sourceType> ;
    sh:name "source type" ;
    sh:description "The source type of the media." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "image_url" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImageURL/url> ;
    sh:name "url" ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Pin Media Source Video Id
pinterest:PinMediaSourceVideoIDShape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaSourceVideoID ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceVideoID/coverImageContentType> ;
    sh:name "cover image content type" ;
    sh:description "Content type for cover image Base64." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "image/jpeg" "image/png" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceVideoID/coverImageData> ;
    sh:name "cover image data" ;
    sh:description "Cover image Base64." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceVideoID/coverImageKeyFrameTime> ;
    sh:name "cover image key frame time" ;
    sh:description "Keyframe timestamp for cover image (seconds). If entered time exceeds video duration, the last frame is used." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceVideoID/coverImageUrl> ;
    sh:name "cover image url" ;
    sh:description "Cover image URL." ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceVideoID/isStandard> ;
    sh:name "is standard" ;
    sh:description "Set the parameter to false to create the new simplified Pin instead of the standard pin. Currently the field is only available to a list of beta users." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceVideoID/mediaId> ;
    sh:name "media id" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceVideoID/sourceType> ;
    sh:name "source type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "video_id" ;
  ] .

# Shape for Pin Media Source Images Base64
pinterest:PinMediaSourceImagesBase64Shape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaSourceImagesBase64 ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesBase64/index> ;
    sh:name "index" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesBase64/items> ;
    sh:name "items" ;
    sh:description "Array with image objects." ;
    sh:node pinterest:PinMediaSourceImagesBase64ItemShape ;
    sh:class pinterest:PinMediaSourceImagesBase64Item ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 2 ;
    sh:maxCount 5 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesBase64/sourceType> ;
    sh:name "source type" ;
    sh:description "The source type of the media." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "multiple_image_base64" ;
  ] .

# Shape for Pin Media Source Images Base64Item
pinterest:PinMediaSourceImagesBase64ItemShape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaSourceImagesBase64Item ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesBase64Item/contentType> ;
    sh:name "content type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "image/jpeg" "image/png" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesBase64Item/data> ;
    sh:name "data" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^[a-zA-Z0-9+/=]+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesBase64Item/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesBase64Item/link> ;
    sh:name "link" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesBase64Item/title> ;
    sh:name "title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Pin Media Source Images Url
pinterest:PinMediaSourceImagesURLShape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaSourceImagesURL ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesURL/index> ;
    sh:name "index" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
    sh:minInclusive "0"^^xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesURL/items> ;
    sh:name "items" ;
    sh:description "Array with image objects." ;
    sh:node pinterest:PinMediaSourceImagesURLItemShape ;
    sh:class pinterest:PinMediaSourceImagesURLItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 2 ;
    sh:maxCount 5 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesURL/sourceType> ;
    sh:name "source type" ;
    sh:description "The source type of the media." ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "multiple_image_urls" ;
  ] .

# Shape for Pin Media Source Images URLItem
pinterest:PinMediaSourceImagesURLItemShape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaSourceImagesURLItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesURLItem/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesURLItem/link> ;
    sh:name "link" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesURLItem/title> ;
    sh:name "title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourceImagesURLItem/url> ;
    sh:name "url" ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Pin Media Source Pin Url
pinterest:PinMediaSourcePinURLShape a sh:NodeShape ;
  sh:targetClass pinterest:PinMediaSourcePinURL ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourcePinURL/isAffiliateLink> ;
    sh:name "is affiliate link" ;
    sh:description "This is an affiliate link or sponsored product. The FTC requires disclosure for paid partnerships and affiliate products." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinMediaSourcePinURL/sourceType> ;
    sh:name "source type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:hasValue "pin_url" ;
  ] .

# Shape for Pin Update
pinterest:PinUpdateShape a sh:NodeShape ;
  sh:targetClass pinterest:PinUpdate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinUpdate/altText> ;
    sh:name "alt text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 500 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinUpdate/boardId> ;
    sh:name "board id" ;
    sh:description "The board to which this Pin belongs." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinUpdate/boardSectionId> ;
    sh:name "board section id" ;
    sh:description "The board section to which this Pin belongs." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinUpdate/carouselSlots> ;
    sh:name "carousel slots" ;
    sh:description "Carousel Pin slots data." ;
    sh:node pinterest:CarouselSlotShape ;
    sh:class pinterest:CarouselSlot ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinUpdate/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 800 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinUpdate/link> ;
    sh:name "link" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 2048 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinUpdate/title> ;
    sh:name "title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 100 ;
  ] .

# Shape for Product Category Details
pinterest:ProductCategoryDetailsShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductCategoryDetails ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoryDetails/demographics> ;
    sh:name "demographics" ;
    sh:description "Age and gender distribution who engaged with this product category in the past 3 months" ;
    sh:node pinterest:ProductCategoriesDemographicShape ;
    sh:class pinterest:ProductCategoriesDemographic ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoryDetails/hasPrediction> ;
    sh:name "has prediction" ;
    sh:description "\n\n    Indicates whether the keyword has a prediction available for the next 90 days.\n    This field is only applicable when include_prediction query parameter is set to true.\n    By default, the value is false and no prediction data is included in the response." ;
    sh:datatype xsd:boolean ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoryDetails/metricsHighlights> ;
    sh:name "metrics highlights" ;
    sh:description "Key performance metrics highlights for this product category" ;
    sh:node pinterest:ProductCategoriesMetricsHighlightsShape ;
    sh:class pinterest:ProductCategoriesMetricsHighlights ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoryDetails/predictedTimeSeries> ;
    sh:name "predicted time series" ;
    sh:description "\n\n    A sequence of weekly observations of the predicted relative search volume for this keyword over the next 3 months.\n    These values are normalized to a [0-100] range, and can be used to visualize the forecasted user interest in this keyword.\n    Similar to the historical time_series, normalization is applied independently to the predicted time series of each keyword, but the normalize_against_group query parameter can be used in cases where you wish to compare relative predicted volume between keywords.\n    **Note**: The cut-off date between historical and predicted time series depends on Pinterest data availability. Usually the data needs a few days to be calculated, so the predicted time series may contain some past dates compared to today.\n    **Note**: The date of each observation is in ISO-8601 format and represents the end of the week. For example, a value of 2024-01-07 would include predicted searches for the week ending on 2024-01-07." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoryDetails/productCategory> ;
    sh:name "product category" ;
    sh:description "List of product category details" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "ACCENT_TABLES" "ACCESSORIES" "ANKLETS" "APRONS" "AREA_RUGS" "ARMOIRES_AND_WARDROBES" "ART_AND_CRAFT_PAINTS" "ART_BRUSHES" "ARTIFICIAL_FLORA" "ARTWORK" "AUDIO" "AUDIO_ACCESSORIES" "BACKPACKS" "BAG_AND_LUGGAGE_ACCESSORIES" "BAGS_AND_LUGGAGE" "BAKEWARE" "BANDANAS" "BAR_CARTS" "BARWARE" "BASKETS" "BATH_AND_BODY" "BATH_AND_SHOWER" "BATH_MATS_AND_RUGS" "BATH_TOWELS_AND_WASHCLOTHS" "BATHROOM_ACCESSORIES" "BATHROOM_ACCESSORY_SETS" "BATHROOM_VANITIES" "BEACH_TOWELS" "BEADS_AND_JEWELRY_MAKING_SUPPLIES" "BEAUTY_SUPPLEMENTS" "BED_SHEETS" "BEDDING" "BEDROOM_VANITIES" "BEDS_AND_ACCESSORIES" "BEDS_AND_BED_FRAMES" "BELT_BAGS" "BELTS_AND_SUSPENDERS" "BENCHES" "BEVERAGES" "BIRD_SUPPLIES" "BLANKETS" "BLOUSES" "BLUSHES_AND_BRONZERS" "BODY_CARE" "BODY_JEWELRY" "BODY_MAKEUP" "BODY_MOISTURIZERS" "BODY_WASHES" "BOOKCASES_AND_STANDING_SHELVES" "BOOKENDS" "BOOKS" "BOOTS" "BRACELETS" "BRIDESMAID_DRESSES" "BROOCHES_AND_LAPEL_PINS" "BROW_MAKEUP" "BUFFETS_AND_SIDEBOARDS" "BUTTON_DOWN_SHIRTS" "CABINET_HARDWARE" "CABINETS_AND_STORAGE_FURNITURE" "CAKE_DECORATING_SUPPLIES" "CAMPING_AND_HIKING" "CANDLE_HOLDERS" "CANDLES" "CARDSTOCK_PAPERS" "CASUAL_PANTS" "CAT_SUPPLIES" "CHAIRS" "CHANDELIERS" "CHARMS_AND_PENDANTS" "CHINA_CABINETS_AND_HUTCHES" "CLOGS_AND_MULES" "CLOTH_NAPKINS" "CLOTHING" "CLOTHING_AND_CLOSET_STORAGE" "CLOTHING_SETS" "COASTERS" "COATS_AND_JACKETS" "COFFEE_AND_TEA_CUPS" "COFFEE_MAKERS_AND_ESPRESSO_MACHINES" "COLORING_BOOKS" "COMMUNICATIONS" "COMPUTER_ACCESSORIES" "COOKIE_CUTTERS" "COOKWARE" "COOKWARE_AND_BAKEWARE" "COSMETIC_AND_TOILETRY_BAGS" "COSTUMES_AND_ACCESSORIES" "CRAFT_ADHESIVES_AND_MAGNETS" "CRAFT_CUTTING_TOOLS" "CRAFT_MOLDS" "CRIBS_AND_TODDLER_BEDS" "CURTAIN_AND_DRAPE_RODS" "CURTAINS_AND_DRAPES" "CUTTING_BOARDS" "CYCLING" "DECORATIVE_BOWLS" "DECORATIVE_JARS" "DECORATIVE_TAPESTRIES" "DECORATIVE_TRAYS" "DEODORANTS_AND_ANTIPERSPIRANTS" "DESK_AND_SHELF_CLOCKS" "DESKS" "DIAPER_BAGS" "DINNERWARE" "DISHWASHERS" "DOG_SUPPLIES" "DOOR_MATS" "DRAWING_AND_PAINTING" "DRESS_PANTS" "DRESSERS" "DRESSES" "DRILLS_AND_SCREWDRIVERS" "DRINKWARE" "DUFFEL_BAGS" "DUVET_COVERS" "DVDS_AND_VIDEOS" "EARRINGS" "ELECTRONICS_ACCESSORIES" "ENGAGEMENT_AND_WEDDING_RINGS" "ENTERTAINMENT_CENTERS_AND_TV_STANDS" "ERASERS" "EYE_MAKEUP" "EYE_SHADOW" "EYELINERS" "FABRIC" "FACE_COVERINGS" "FACE_LOTIONS_AND_CREAMS" "FACE_MAKEUP" "FACIAL_CLEANSERS" "FACIAL_MOISTURIZERS" "FALSE_EYELASHES" "FIGURINES" "FIREPLACE_AND_WOOD_STOVE_ACCESSORIES" "FIREPLACES" "FISHING" "FLAGS_AND_WINDSOCKS" "FLATS" "FLATWARE" "FLOOR_LAMPS" "FLOWER_GIRL_DRESSES" "FOOD_AND_BEVERAGE_CARRIERS" "FOOD_COOKERS_AND_STEAMERS" "FOOD_ITEMS" "FOOD_MIXERS_AND_BLENDERS" "FOOD_STORAGE_CONTAINERS" "FOOD_STORAGE_SUPPLIES" "FOUNDATIONS_AND_CONCEALERS" "FOUNTAINS_AND_PONDS" "FRAGRANCE" "FURNITURE" "FURNITURE_SETS" "GAMES" "GARDENING" "GARDENING_TOOLS" "GLOVES_AND_MITTENS" "GLUES_AND_TAPES" "GROOM_AND_GROOMSMEN_SUITS" "HAIR" "HAIR_ACCESSORIES" "HAIR_CARE" "HAIR_COLOR" "HAIR_COMBS" "HAIR_PINS_CLAWS_AND_CLIPS" "HAIR_REMOVAL" "HAIR_TOOLS" "HAIR_TREATMENT" "HAIR_WREATHS" "HAND_AND_FOOT_CARE" "HAND_SOAPS_AND_SANITIZERS" "HANDBAGS" "HANDKERCHIEFS" "HARDWARE_SUPPLIES" "HATS" "HEADBOARDS_AND_FOOTBOARDS" "HEADWEAR" "HIGHLIGHTERS" "HOBBIES_AND_CREATIVE_ARTS" "HOME_ACCESSORIES" "HOME_DECOR_DECALS" "HOME_FRAGRANCE_ACCESSORIES" "HOME_FRAGRANCES" "HOME_IMPROVEMENT_TOOLS_AND_SUPPLIES" "HOSIERY" "HOUSEHOLD_APPLIANCES" "HOUSEHOLD_SUPPLIES" "INCENSE" "INDOOR_GAMES" "JEANS" "JEWELRY_AND_WATCH_ACCESSORIES" "JEWELRY_AND_WATCHES" "JEWELRY_SETS" "JUMPSUITS_AND_ROMPERS" "KEYCHAINS" "KITCHEN_AND_DINING" "KITCHEN_AND_DINING_ROOM_TABLES" "KITCHEN_APPLIANCES" "KITCHEN_KNIVES" "KITCHEN_LINENS" "KITCHEN_MATS" "KITCHEN_ORGANIZERS" "KITCHEN_TOOLS_AND_UTENSILS" "KITCHEN_TOWELS" "KNITTING_AND_CROCHET" "KNITTING_AND_CROCHET_TOOLS" "LAMP_SHADES" "LAMPS" "LANYARDS" "LAUNDRY_HAMPERS_AND_SUPPLIES" "LAWN_AND_GARDEN" "LAWN_AND_GARDEN_DECOR" "LAWN_ORNAMENTS_AND_GARDEN_SCULPTURES" "LEGGINGS" "LEOTARDS_AND_UNITARDS" "LIGHTING" "LIGHTING_ACCESSORIES" "LIGHTING_FIXTURES" "LIP_BALMS" "LIP_CARE" "LIP_MAKEUP" "LIPSTICKS_AND_LIP_GLOSSES" "MAGAZINES_AND_NEWSPAPERS" "MAGNETS" "MAKEUP" "MAKEUP_TOOLS" "MASCARAS" "MATTRESSES" "MEASURES_AND_RULERS" "MEASURING_TOOLS_AND_SENSORS" "MESSENGER_BAGS" "MIRRORS" "MUSIC_AND_SOUND_RECORDINGS" "NAIL_ART" "NAIL_ART_KIT_AND_TOOLS" "NAIL_CARE" "NAIL_POLISHES" "NAILS" "NECKLACES" "NECKTIES" "NIGHT_LIGHTS_AND_AMBIENT_LIGHTING" "NIGHTSTANDS" "NOVELTY_SIGNS" "ONE_PIECES" "ONESIES" "OTTOMANS" "OUTDOOR_FURNITURE" "OUTDOOR_FURNITURE_SETS" "OUTDOOR_GAMES" "OUTDOOR_GRILLS" "OUTDOOR_LIVING" "OUTDOOR_PLAY_EQUIPMENT" "OUTDOOR_RECREATION" "OUTDOOR_RUGS" "OUTDOOR_SEATING" "OUTDOOR_STRUCTURES" "OUTDOOR_TABLES" "OUTERWEAR" "OVENS_AND_COOKTOPS" "OVERALLS" "OXFORDS_AND_LOAFERS" "PAINT_AND_PAINT_TOOLS" "PANTS" "PAPER_CRAFTS" "PARASOLS_AND_RAIN_UMBRELLAS" "PARTY_AND_CELEBRATION" "PENDANT_LIGHTS" "PENS_AND_PENCILS" "PERFUMES_AND_COLOGNES" "PET_CARRIERS_AND_CRATES" "PET_COLLARS_AND_HARNESSES" "PET_SUPPLIES" "PHOTO_ALBUMS_AND_STORAGE" "PICTURE_FRAMES" "PILLOWCASES_AND_SHAMS" "PINBACK_BUTTONS" "PLACEMATS" "PLANTS" "PONYTAIL_HOLDERS" "POOL_AND_SPA_ACCESSORIES" "POSTERS_PRINTS_AND_VISUAL_ARTWORK" "POTS_AND_PLANTERS" "POTTERY_AND_SCULPTING" "PRIMERS_AND_MAKEUP_SETTERS" "PUMPS" "PUZZLES" "QUILTS_AND_COMFORTERS" "RAZORS_AND_SHAVING_TOOLS" "RINGS" "RUGS" "RUNNER_RUGS" "SANDALS" "SASHES" "SAWS" "SCARVES_AND_SHAWLS" "SCULPTURES_AND_STATUES" "SEASONAL_AND_HOLIDAY_DECORATIONS" "SEATING" "SERUMS_AND_ESSENCES" "SERVEWARE" "SEWING_MACHINES" "SEWING_PATTERNS" "SHAMPOO_AND_CONDITIONER" "SHOE_ACCESSORIES" "SHOES" "SHOPPING_TOTES" "SHORTS" "SHOWER_CURTAINS" "SKINCARE" "SKINCARE_MASKS_AND_PEELS" "SKIRTS" "SLEEPWEAR_AND_LOUNGEWEAR" "SLIPCOVERS_AND_CUSHIONS" "SLIPPERS" "SNEAKERS_AND_ATHLETIC_SHOES" "SOCKS_AND_TIGHTS" "SOFAS" "SPORTS_UNIFORMS" "STEMWARE" "STOCKINGS" "STORAGE_AND_ORGANIZATION" "STORAGE_CABINETS_AND_LOCKERS" "STORAGE_HOOKS_AND_RACKS" "SUITCASES" "SUITS" "SUITS_AND_SUIT_SEPARATES" "GLASSES_AND_SUNGLASSES" "SUNSCREEN" "SWEATERS_AND_CARDIGANS" "SWEATSHIRTS_AND_HOODIES" "SWIMWEAR" "T_SHIRTS" "TABLE_LAMPS" "TABLE_RUNNERS" "TABLECLOTHS" "TABLES" "TABLEWARE" "TANK_TOPS" "TANNING_OILS_AND_LOTIONS" "TEETH_WHITENING" "TEETH_WHITENING_TOOLS" "TELEPHONY" "TEXTILE_AND_SEWING" "THREAD_AND_YARN" "THROW_PILLOWS" "TIARAS" "TOILET_PAPER_HOLDERS" "TONERS_AND_ASTRINGENTS" "TOOL_STORAGE_AND_ORGANIZATION" "TOOLS" "TOPS" "TOWEL_RACKS_AND_HOLDERS" "TOYS" "TRADITIONAL_AND_CEREMONIAL_CLOTHING" "TUMBLERS_AND_WATER_BOTTLES" "UNIFORMS" "VASES" "VEHICLE_PARTS_AND_ACCESSORIES" "VEILS" "WALL_CLOCKS" "WALL_LIGHT_FIXTURES" "WALL_PAINTS" "WALL_SHELVES_AND_LEDGES" "WALLETS_AND_CARD_CASES" "WALLPAPERS" "WATCHES" "WATERING_AND_IRRIGATION" "WEDDING_CEREMONY_DECOR" "WEDDING_CLOTHING" "WEDDING_DECOR" "WEDDING_DRESS" "WEDDING_GIFTS" "WEDDING_STATIONERY" "WEDDING_TABLE_DECOR" "WIGS_AND_HAIR_EXTENSIONS" "WINDOW_BLINDS_AND_SHADES" "WINDOW_TREATMENT_ACCESSORIES" "WINDOW_TREATMENTS" "WINE_RACKS" "WOOD_BOARDS_AND_PLANKS" "WOODWORKING_MATERIALS" "WOODWORKING_PLANS" "WORK_BENCHES" "WREATHS_AND_GARLANDS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoryDetails/relatedSearches> ;
    sh:name "related searches" ;
    sh:description "Related search terms for this product category" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoryDetails/timeSeries> ;
    sh:name "time series" ;
    sh:description "Time series data showing trend values over time, indexed between 0 and 100" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Categories Demographic
pinterest:ProductCategoriesDemographicShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductCategoriesDemographic ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoriesDemographic/age> ;
    sh:name "age" ;
    sh:description "Age demographic distribution" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoriesDemographic/gender> ;
    sh:name "gender" ;
    sh:description "Gender demographic distribution" ;
    sh:node pinterest:GenderDemographicsShape ;
    sh:class pinterest:GenderDemographics ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Gender Demographics
pinterest:GenderDemographicsShape a sh:NodeShape ;
  sh:targetClass pinterest:GenderDemographics ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GenderDemographics/female> ;
    sh:name "female" ;
    sh:description "Percentage of female users" ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GenderDemographics/male> ;
    sh:name "male" ;
    sh:description "Percentage of male users" ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GenderDemographics/unspecified> ;
    sh:name "unspecified" ;
    sh:description "Percentage of users with unspecified gender" ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Categories Metrics Highlights
pinterest:ProductCategoriesMetricsHighlightsShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductCategoriesMetricsHighlights ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoriesMetricsHighlights/engagement> ;
    sh:name "engagement" ;
    sh:description "Engagement metric value" ;
    sh:node pinterest:InnerProductCategoriesMetricsHighlightsShape ;
    sh:class pinterest:InnerProductCategoriesMetricsHighlights ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoriesMetricsHighlights/outboundClicks> ;
    sh:name "outbound clicks" ;
    sh:description "Number of outbound clicks" ;
    sh:node pinterest:InnerProductCategoriesMetricsHighlightsShape ;
    sh:class pinterest:InnerProductCategoriesMetricsHighlights ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoriesMetricsHighlights/pinSaves> ;
    sh:name "pin saves" ;
    sh:description "Number of pin saves" ;
    sh:node pinterest:InnerProductCategoriesMetricsHighlightsShape ;
    sh:class pinterest:InnerProductCategoriesMetricsHighlights ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Inner Product Categories Metrics Highlights
pinterest:InnerProductCategoriesMetricsHighlightsShape a sh:NodeShape ;
  sh:targetClass pinterest:InnerProductCategoriesMetricsHighlights ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InnerProductCategoriesMetricsHighlights/pctChangeMom> ;
    sh:name "pct change mom" ;
    sh:description "Month-over-month percentage change" ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Trending Product Category
pinterest:TrendingProductCategoryShape a sh:NodeShape ;
  sh:targetClass pinterest:TrendingProductCategory ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingProductCategory/engagementType> ;
    sh:name "engagement type" ;
    sh:description "Engagement type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "ENGAGEMENT" "OUTBOUND_CLICK" "SAVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingProductCategory/pctChangeMom> ;
    sh:name "pct change mom" ;
    sh:description "Month-over-month change percentage" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingProductCategory/percentRelativeVolume> ;
    sh:name "percent relative volume" ;
    sh:description "Relative volume percentage" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingProductCategory/productCategory> ;
    sh:name "product category" ;
    sh:description "Product Category Name" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingProductCategory/verticals> ;
    sh:name "verticals" ;
    sh:description "Vertical name associated with the product category" ;
    sh:datatype xsd:string ;
    sh:in ( "FASHION" "HOME_DECOR" "BEAUTY" ) ;
  ] .

# Shape for Featured Trend
pinterest:FeaturedTrendShape a sh:NodeShape ;
  sh:targetClass pinterest:FeaturedTrend ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.FeaturedTrend/interest> ;
    sh:name "interest" ;
    sh:description "The main interest category" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "ALL" "ANIMALS" "ARCHITECTURE" "ART" "BEAUTY" "DIY_AND_CRAFTS" "EDUCATION" "EVENT_PLANNING" "FASHION" "FOOD_AND_DRINKS" "GARDENING" "HEALTH" "HOME_DECOR" "PARENTING" "TRAVEL" "WEDDING" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.FeaturedTrend/market> ;
    sh:name "market" ;
    sh:description "Market code (e.g., 'US', 'UK', etc.)" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "US" "GB+IE" "CA" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.FeaturedTrend/trends> ;
    sh:name "trends" ;
    sh:description "List of trending topics within this interest category" ;
    sh:node pinterest:TrendingTopicShape ;
    sh:class pinterest:TrendingTopic ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Trending Topic
pinterest:TrendingTopicShape a sh:NodeShape ;
  sh:targetClass pinterest:TrendingTopic ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingTopic/description> ;
    sh:name "description" ;
    sh:description "Description of the trending topic" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingTopic/percentGrowthMom> ;
    sh:name "percent growth mom" ;
    sh:description "Month-over-month growth percentage" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingTopic/pins> ;
    sh:name "pins" ;
    sh:description "Array of pin images related to this trend (up to 6)" ;
    sh:node pinterest:TrendingPinShape ;
    sh:class pinterest:TrendingPin ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 6 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingTopic/relatedInterests> ;
    sh:name "related interests" ;
    sh:description "List of related interest categories" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingTopic/relatedSearches> ;
    sh:name "related searches" ;
    sh:description "List of related search terms" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingTopic/timeSeries> ;
    sh:name "time series" ;
    sh:description "Time series data showing trend values over time, with dates as keys and values as numeric" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingTopic/title> ;
    sh:name "title" ;
    sh:description "Title of the trending topic" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Trending Pin
pinterest:TrendingPinShape a sh:NodeShape ;
  sh:targetClass pinterest:TrendingPin ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingPin/height> ;
    sh:name "height" ;
    sh:description "Height of the pin image in pixels" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingPin/id> ;
    sh:name "id" ;
    sh:description "Unique identifier for the pin" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingPin/src> ;
    sh:name "src" ;
    sh:description "URL of the pin image" ;
    sh:datatype xsd:anyURI ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingPin/width> ;
    sh:name "width" ;
    sh:description "Width of the pin image in pixels" ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
  ] .

# Shape for Product Group Promotion Response
pinterest:ProductGroupPromotionResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductGroupPromotionResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotionResponse/items> ;
    sh:name "items" ;
    sh:node pinterest:ProductGroupPromotionResponseItemShape ;
    sh:class pinterest:ProductGroupPromotionResponseItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Product Group Promotion Response Item
pinterest:ProductGroupPromotionResponseItemShape a sh:NodeShape ;
  sh:targetClass pinterest:ProductGroupPromotionResponseItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotionResponseItem/data> ;
    sh:name "data" ;
    sh:node pinterest:ProductGroupPromotionShape ;
    sh:class pinterest:ProductGroupPromotion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductGroupPromotionResponseItem/exceptions> ;
    sh:name "exceptions" ;
    sh:node pinterest:ExceptionShape ;
    sh:class pinterest:Exception ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Promotion Array Element
pinterest:PromotionArrayElementShape a sh:NodeShape ;
  sh:targetClass pinterest:PromotionArrayElement ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionArrayElement/data> ;
    sh:name "data" ;
    sh:node pinterest:PromotionShape ;
    sh:class pinterest:Promotion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionArrayElement/exception> ;
    sh:name "exception" ;
    sh:node pinterest:ExceptionShape ;
    sh:class pinterest:Exception ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Promotion Response
pinterest:PromotionShape a sh:NodeShape ;
  sh:targetClass pinterest:Promotion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/discountStatus> ;
    sh:name "discount status" ;
    sh:description "Discount status based on the current time and start and end time of discount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "OTHER" "ACTIVE" "PAUSED" "SCHEDULED" "EXPIRED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/endTime> ;
    sh:name "end time" ;
    sh:description "Promotion end time. Unix timestamp in seconds. Independent of campaign end time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/externalId> ;
    sh:name "external id" ;
    sh:description "Platform-specific ID for this promotion. Will be null for promotions first created within Pinterest." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 64 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/platformType> ;
    sh:name "platform type" ;
    sh:description "The source integration platform used when creating the promotion. Currently supported values are 'DEFAULT' and 'SHOPIFY'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/promotionCode> ;
    sh:name "promotion code" ;
    sh:description "Code that can be used to redeem a promotion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/promotionCustomId> ;
    sh:name "promotion custom id" ;
    sh:description "An optional field for user defined promotion ID for this promotion. Will copy from Pinterest system generated ID if user did not provide one." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 50 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/promotionTitle> ;
    sh:name "promotion title" ;
    sh:description "Internal name for the promotion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/promotionType> ;
    sh:name "promotion type" ;
    sh:description "Determines the displayed promotion text along with what parameters (if any) are needed to complete the template. This list is not finalized, and will be updated as new types are supported." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "VARIABLE" "SITEWIDE" "CHECKOUT" "SAVE_X_ON_Y" "BUY_X_GET_Y" "SPEND_X_SAVE_Y" "FREE_SHIPPING" "FREE_SHIPPING_MINIMUM" "FREE_SHIPPING_WITH_DISCOUNT" "SITEWIDE_IN_STORES" "EXTRA_PERCENT_OFF" "GIFT_WITH_PURCHASE" "GIFT_WITH_PURCHASE_MINIMUM" "FIXED" "PERCENT_OFF_CLEARANCE" "X_OFF_Y" "GIFT_WITH_FIRST_PURCHASE" "BUY_X_GET_ONE_FREE" "CASH_BACK" "POINTS_ON_ALL_PURCHASES" "BONUS" "POINTS_WITH_PURCHASE" "CUSTOM" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/startTime> ;
    sh:name "start time" ;
    sh:description "Promotion start time. Unix timestamp in seconds. Independent of campaign start time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/templateValues> ;
    sh:name "template values" ;
    sh:description "List of values to be inserted in the promotion type-specific template." ;
    sh:node pinterest:PromotionTemplateValueShape ;
    sh:class pinterest:PromotionTemplateValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 2 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "The Ad Account ID that this promotion belongs to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/id> ;
    sh:name "id" ;
    sh:description "Promotion ID" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionResponse/status> ;
    sh:name "status" ;
    sh:description "Entity status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] .

# Shape for Promotion Template Value
pinterest:PromotionTemplateValueShape a sh:NodeShape ;
  sh:targetClass pinterest:PromotionTemplateValue ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionTemplateValue/amount> ;
    sh:name "amount" ;
    sh:description "Numeric value." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionTemplateValue/currencyCode> ;
    sh:name "currency code" ;
    sh:description "Currency Codes from ISO 4217" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UNK" "USD" "GBP" "CAD" "EUR" "AUD" "NZD" "SEK" "ILS" "CHF" "HKD" "JPY" "SGD" "KRW" "NOK" "DKK" "PLN" "RON" "HUF" "CZK" "BRL" "MXN" "ARS" "CLP" "COP" "INR" "TRY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionTemplateValue/customText> ;
    sh:name "custom text" ;
    sh:description "Custom text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionTemplateValue/percent> ;
    sh:name "percent" ;
    sh:description "Percent value." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Promotion Common
pinterest:PromotionCommonShape a sh:NodeShape ;
  sh:targetClass pinterest:PromotionCommon ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionCommon/discountStatus> ;
    sh:name "discount status" ;
    sh:description "Discount status based on the current time and start and end time of discount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "OTHER" "ACTIVE" "PAUSED" "SCHEDULED" "EXPIRED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionCommon/endTime> ;
    sh:name "end time" ;
    sh:description "Promotion end time. Unix timestamp in seconds. Independent of campaign end time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionCommon/externalId> ;
    sh:name "external id" ;
    sh:description "Platform-specific ID for this promotion. Will be null for promotions first created within Pinterest." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 64 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionCommon/platformType> ;
    sh:name "platform type" ;
    sh:description "The source integration platform used when creating the promotion. Currently supported values are 'DEFAULT' and 'SHOPIFY'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionCommon/promotionCode> ;
    sh:name "promotion code" ;
    sh:description "Code that can be used to redeem a promotion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionCommon/promotionCustomId> ;
    sh:name "promotion custom id" ;
    sh:description "An optional field for user defined promotion ID for this promotion. Will copy from Pinterest system generated ID if user did not provide one." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 50 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionCommon/promotionTitle> ;
    sh:name "promotion title" ;
    sh:description "Internal name for the promotion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionCommon/promotionType> ;
    sh:name "promotion type" ;
    sh:description "Determines the displayed promotion text along with what parameters (if any) are needed to complete the template. This list is not finalized, and will be updated as new types are supported." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "VARIABLE" "SITEWIDE" "CHECKOUT" "SAVE_X_ON_Y" "BUY_X_GET_Y" "SPEND_X_SAVE_Y" "FREE_SHIPPING" "FREE_SHIPPING_MINIMUM" "FREE_SHIPPING_WITH_DISCOUNT" "SITEWIDE_IN_STORES" "EXTRA_PERCENT_OFF" "GIFT_WITH_PURCHASE" "GIFT_WITH_PURCHASE_MINIMUM" "FIXED" "PERCENT_OFF_CLEARANCE" "X_OFF_Y" "GIFT_WITH_FIRST_PURCHASE" "BUY_X_GET_ONE_FREE" "CASH_BACK" "POINTS_ON_ALL_PURCHASES" "BONUS" "POINTS_WITH_PURCHASE" "CUSTOM" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionCommon/startTime> ;
    sh:name "start time" ;
    sh:description "Promotion start time. Unix timestamp in seconds. Independent of campaign start time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionCommon/templateValues> ;
    sh:name "template values" ;
    sh:description "List of values to be inserted in the promotion type-specific template." ;
    sh:node pinterest:PromotionTemplateValueShape ;
    sh:class pinterest:PromotionTemplateValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 2 ;
  ] .

# Shape for Promotion Create Request
pinterest:PromotionCreateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:PromotionCreateRequest .

# Shape for Promotion Update Request
pinterest:PromotionUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:PromotionUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionUpdateRequest/discountStatus> ;
    sh:name "discount status" ;
    sh:description "Discount status based on the current time and start and end time of discount" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "OTHER" "ACTIVE" "PAUSED" "SCHEDULED" "EXPIRED" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionUpdateRequest/endTime> ;
    sh:name "end time" ;
    sh:description "Promotion end time. Unix timestamp in seconds. Independent of campaign end time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionUpdateRequest/externalId> ;
    sh:name "external id" ;
    sh:description "Platform-specific ID for this promotion. Will be null for promotions first created within Pinterest." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 64 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionUpdateRequest/platformType> ;
    sh:name "platform type" ;
    sh:description "The source integration platform used when creating the promotion. Currently supported values are 'DEFAULT' and 'SHOPIFY'." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionUpdateRequest/promotionCode> ;
    sh:name "promotion code" ;
    sh:description "Code that can be used to redeem a promotion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionUpdateRequest/promotionCustomId> ;
    sh:name "promotion custom id" ;
    sh:description "An optional field for user defined promotion ID for this promotion. Will copy from Pinterest system generated ID if user did not provide one." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 50 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionUpdateRequest/promotionTitle> ;
    sh:name "promotion title" ;
    sh:description "Internal name for the promotion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionUpdateRequest/promotionType> ;
    sh:name "promotion type" ;
    sh:description "Determines the displayed promotion text along with what parameters (if any) are needed to complete the template. This list is not finalized, and will be updated as new types are supported." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "VARIABLE" "SITEWIDE" "CHECKOUT" "SAVE_X_ON_Y" "BUY_X_GET_Y" "SPEND_X_SAVE_Y" "FREE_SHIPPING" "FREE_SHIPPING_MINIMUM" "FREE_SHIPPING_WITH_DISCOUNT" "SITEWIDE_IN_STORES" "EXTRA_PERCENT_OFF" "GIFT_WITH_PURCHASE" "GIFT_WITH_PURCHASE_MINIMUM" "FIXED" "PERCENT_OFF_CLEARANCE" "X_OFF_Y" "GIFT_WITH_FIRST_PURCHASE" "BUY_X_GET_ONE_FREE" "CASH_BACK" "POINTS_ON_ALL_PURCHASES" "BONUS" "POINTS_WITH_PURCHASE" "CUSTOM" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionUpdateRequest/startTime> ;
    sh:name "start time" ;
    sh:description "Promotion start time. Unix timestamp in seconds. Independent of campaign start time." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionUpdateRequest/templateValues> ;
    sh:name "template values" ;
    sh:description "List of values to be inserted in the promotion type-specific template." ;
    sh:node pinterest:PromotionTemplateValueShape ;
    sh:class pinterest:PromotionTemplateValue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 2 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionUpdateRequest/id> ;
    sh:name "id" ;
    sh:description "Promotion ID" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionUpdateRequest/status> ;
    sh:name "status" ;
    sh:description "Entity status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ACTIVE" "PAUSED" "ARCHIVED" "DRAFT" "DELETED_DRAFT" ) ;
  ] .

# Shape for Promotions Response
pinterest:PromotionsResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:PromotionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PromotionsResponse/promotions> ;
    sh:name "promotions" ;
    sh:node pinterest:PromotionArrayElementShape ;
    sh:class pinterest:PromotionArrayElement ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Accounts Country Response
pinterest:AdAccountsCountryResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:AdAccountsCountryResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccountsCountryResponse/items> ;
    sh:name "items" ;
    sh:node pinterest:AdAccountCountryShape ;
    sh:class pinterest:AdAccountCountry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Accounts Country Response Data
pinterest:AdAccountCountryShape a sh:NodeShape ;
  sh:targetClass pinterest:AdAccountCountry ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccountsCountryResponseData/code> ;
    sh:name "code" ;
    sh:description "Country ID from ISO 3166-1 alpha-2." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccountsCountryResponseData/currency> ;
    sh:name "currency" ;
    sh:description "Country currency." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccountsCountryResponseData/index> ;
    sh:name "index" ;
    sh:description "Country index" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdAccountsCountryResponseData/name> ;
    sh:name "name" ;
    sh:description "Country name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Book Closed Response
pinterest:BookClosedShape a sh:NodeShape ;
  sh:targetClass pinterest:BookClosed ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BookClosedResponse/conversionMetricsReady> ;
    sh:name "conversion metrics ready" ;
    sh:description "Are conversion metrics ready?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BookClosedResponse/nonConversionMetricsReady> ;
    sh:name "non conversion metrics ready" ;
    sh:description "Are non-conversion metrics ready?" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Delivery Metrics Response
pinterest:DeliveryMetricsResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:DeliveryMetricsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeliveryMetricsResponse/items> ;
    sh:name "items" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeliveryMetricsResponse/items/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeliveryMetricsResponse/items/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Single Interest Targeting Option Response
pinterest:InterestTargetingOptionShape a sh:NodeShape ;
  sh:targetClass pinterest:InterestTargetingOption ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SingleInterestTargetingOptionResponse/childInterests> ;
    sh:name "child interests" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SingleInterestTargetingOptionResponse/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "\\d+" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SingleInterestTargetingOptionResponse/level> ;
    sh:name "level" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SingleInterestTargetingOptionResponse/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Summary Pin
pinterest:SummaryPinShape a sh:NodeShape ;
  sh:targetClass pinterest:SummaryPin ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SummaryPin/altText> ;
    sh:name "alt text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:maxLength 500 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SummaryPin/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SummaryPin/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SummaryPin/link> ;
    sh:name "link" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
    sh:maxLength 2048 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SummaryPin/media> ;
    sh:name "media" ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:or (
      [ sh:node pinterest:PinMediaWithImageShape ; sh:class pinterest:PinMediaWithImage ]
      [ sh:node pinterest:PinMediaWithVideoShape ; sh:class pinterest:PinMediaWithVideo ]
      [ sh:node pinterest:PinMediaWithImagesShape ; sh:class pinterest:PinMediaWithImages ]
      [ sh:node pinterest:PinMediaWithVideosShape ; sh:class pinterest:PinMediaWithVideos ]
      [ sh:node pinterest:PinMediaWithImageAndVideoShape ; sh:class pinterest:PinMediaWithImageAndVideo ]
    ) ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.SummaryPin/title> ;
    sh:name "title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Targeting Template Audience Sizing
pinterest:TargetingTemplateAudienceSizingShape a sh:NodeShape ;
  sh:targetClass pinterest:TargetingTemplateAudienceSizing ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateAudienceSizing/reachEstimate> ;
    sh:name "reach estimate" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TargetingTemplateAudienceSizing/reachEstimate/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TargetingTemplateAudienceSizing/reachEstimate/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Targeting Template Keyword
pinterest:TargetingTemplateKeywordShape a sh:NodeShape ;
  sh:targetClass pinterest:TargetingTemplateKeyword ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateKeyword/matchType> ;
    sh:name "match type" ;
    sh:description "Keyword match type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "BROAD" "PHRASE" "EXACT" "EXACT_NEGATIVE" "PHRASE_NEGATIVE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateKeyword/value> ;
    sh:name "value" ;
    sh:description "The keyword targeting (120 chars max)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Targeting Template Create
pinterest:TargetingTemplateCreateShape a sh:NodeShape ;
  sh:targetClass pinterest:TargetingTemplateCreate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateCreate/autoTargetingEnabled> ;
    sh:name "auto targeting enabled" ;
    sh:description "Enable auto-targeting for ad group. Also known as <a href=\"https://help.pinterest.com/en/business/article/expanded-targeting\" target=\"_blank\">\"expanded targeting\"</a>." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateCreate/keywords> ;
    sh:name "keywords" ;
    sh:node pinterest:TargetingTemplateKeywordShape ;
    sh:class pinterest:TargetingTemplateKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateCreate/name> ;
    sh:name "name" ;
    sh:description "targeting template name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateCreate/placementGroup> ;
    sh:name "placement group" ;
    sh:description "Campaign placement group type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ALL" "SEARCH" "BROWSE" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateCreate/targetingAttributes> ;
    sh:name "targeting attributes" ;
    sh:description "Ad group targeting specification defining the ad group target audience. For example, `{\"APPTYPE\":[\"iphone\"], \"GENDER\":[\"male\"], \"LOCALE\":[\"en-US\"], \"LOCATION\":[\"501\"], \"MINIMUM_AGE\":\"18\", \"MAXIMUM_AGE\":\"65+\"}`" ;
    sh:node pinterest:TargetingSpecShape ;
    sh:class pinterest:TargetingSpec ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateCreate/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:description "Third-party tracking URLs. Up to three tracking URLs - with a max length of 2,000 - are supported for each event type. Tracking URLs set at the ad group or ad level can override those set at the campaign level. For more information, see <a href=\"https://help.pinterest.com/en/business/article/third-party-and-dynamic-tracking\" target=\"_blank\">Third-party and dynamic tracking</a>." ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Targeting Template Response Data
pinterest:TargetingTemplateResponseDataShape a sh:NodeShape ;
  sh:targetClass pinterest:TargetingTemplateResponseData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateResponseData/autoTargetingEnabled> ;
    sh:name "auto targeting enabled" ;
    sh:description "Enable auto-targeting for ad group. Also known as <a href=\"https://help.pinterest.com/en/business/article/expanded-targeting\" target=\"_blank\">\"expanded targeting\"</a>." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateResponseData/keywords> ;
    sh:name "keywords" ;
    sh:node pinterest:TargetingTemplateKeywordShape ;
    sh:class pinterest:TargetingTemplateKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateResponseData/name> ;
    sh:name "name" ;
    sh:description "targeting template name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateResponseData/placementGroup> ;
    sh:name "placement group" ;
    sh:description "Campaign placement group type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ALL" "SEARCH" "BROWSE" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateResponseData/targetingAttributes> ;
    sh:name "targeting attributes" ;
    sh:description "Ad group targeting specification defining the ad group target audience. For example, `{\"APPTYPE\":[\"iphone\"], \"GENDER\":[\"male\"], \"LOCALE\":[\"en-US\"], \"LOCATION\":[\"501\"], \"MINIMUM_AGE\":\"18\", \"MAXIMUM_AGE\":\"65+\"}`" ;
    sh:node pinterest:TargetingSpecShape ;
    sh:class pinterest:TargetingSpec ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateResponseData/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:description "Third-party tracking URLs. Up to three tracking URLs - with a max length of 2,000 - are supported for each event type. Tracking URLs set at the ad group or ad level can override those set at the campaign level. For more information, see <a href=\"https://help.pinterest.com/en/business/article/third-party-and-dynamic-tracking\" target=\"_blank\">Third-party and dynamic tracking</a>." ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateResponseData/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "The ID of the advertiser that this targeting template belongs to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateResponseData/createdTime> ;
    sh:name "created time" ;
    sh:description "Targeting template created time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateResponseData/id> ;
    sh:name "id" ;
    sh:description "Targeting template ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateResponseData/sizing> ;
    sh:name "sizing" ;
    sh:description "Gets an audience size estimate for a set of given targeting spec data. <p>Returns:</p> An object containing an audience size estimate that has a reach estimate (number of unique users) against the given targeting template. This by default provides a monthly estimate. " ;
    sh:node pinterest:TargetingTemplateAudienceSizingShape ;
    sh:class pinterest:TargetingTemplateAudienceSizing ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateResponseData/status> ;
    sh:name "status" ;
    sh:description "Indicate targeting template is active or Deleted" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateResponseData/updatedTime> ;
    sh:name "updated time" ;
    sh:description "Targeting template updated time.Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Targeting Template Get Response Data
pinterest:TargetingTemplateGetResponseDataShape a sh:NodeShape ;
  sh:targetClass pinterest:TargetingTemplateGetResponseData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/autoTargetingEnabled> ;
    sh:name "auto targeting enabled" ;
    sh:description "Enable auto-targeting for ad group. Also known as <a href=\"https://help.pinterest.com/en/business/article/expanded-targeting\" target=\"_blank\">\"expanded targeting\"</a>." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/keywords> ;
    sh:name "keywords" ;
    sh:node pinterest:TargetingTemplateKeywordShape ;
    sh:class pinterest:TargetingTemplateKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/name> ;
    sh:name "name" ;
    sh:description "targeting template name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/placementGroup> ;
    sh:name "placement group" ;
    sh:description "Campaign placement group type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ALL" "SEARCH" "BROWSE" "OTHER" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/targetingAttributes> ;
    sh:name "targeting attributes" ;
    sh:description "Ad group targeting specification defining the ad group target audience. For example, `{\"APPTYPE\":[\"iphone\"], \"GENDER\":[\"male\"], \"LOCALE\":[\"en-US\"], \"LOCATION\":[\"501\"], \"MINIMUM_AGE\":\"18\", \"MAXIMUM_AGE\":\"65+\"}`" ;
    sh:node pinterest:TargetingSpecShape ;
    sh:class pinterest:TargetingSpec ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/trackingUrls> ;
    sh:name "tracking urls" ;
    sh:description "Third-party tracking URLs. Up to three tracking URLs - with a max length of 2,000 - are supported for each event type. Tracking URLs set at the ad group or ad level can override those set at the campaign level. For more information, see <a href=\"https://help.pinterest.com/en/business/article/third-party-and-dynamic-tracking\" target=\"_blank\">Third-party and dynamic tracking</a>." ;
    sh:node pinterest:TrackingUrlsShape ;
    sh:class pinterest:TrackingUrls ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "The ID of the advertiser that this targeting template belongs to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/createdTime> ;
    sh:name "created time" ;
    sh:description "Targeting template created time. Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/id> ;
    sh:name "id" ;
    sh:description "Targeting template ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/sizing> ;
    sh:name "sizing" ;
    sh:description "Gets an audience size estimate for a set of given targeting spec data. <p>Returns:</p> An object containing an audience size estimate that has a reach estimate (number of unique users) against the given targeting template. This by default provides a monthly estimate. " ;
    sh:node pinterest:TargetingTemplateAudienceSizingShape ;
    sh:class pinterest:TargetingTemplateAudienceSizing ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/status> ;
    sh:name "status" ;
    sh:description "Indicate targeting template is active or Deleted" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/updatedTime> ;
    sh:name "updated time" ;
    sh:description "Targeting template updated time.Unix timestamp in seconds." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateGetResponseData/valid> ;
    sh:name "valid" ;
    sh:description "Inform if the targeting template is valid (ex. would be false if has revoked audience)" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Targeting Template Update Request
pinterest:TargetingTemplateUpdateRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:TargetingTemplateUpdateRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateUpdateRequest/id> ;
    sh:name "id" ;
    sh:description "Targeting template ID" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateUpdateRequest/operationType> ;
    sh:name "operation type" ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:in ( "REMOVE" "UPDATE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateUpdateRequest/targetingAttributes> ;
    sh:name "targeting attributes" ;
    sh:description "Ad group targeting specification defining the ad group target audience. For example, `{\"APPTYPE\":[\"iphone\"], \"GENDER\":[\"male\"], \"LOCALE\":[\"en-US\"], \"LOCATION\":[\"501\"], \"MINIMUM_AGE\":\"18\", \"MAXIMUM_AGE\":\"65+\"}`" ;
    sh:node pinterest:TargetingSpecShape ;
    sh:class pinterest:TargetingSpec ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Related Terms
pinterest:RelatedTermsShape a sh:NodeShape ;
  sh:targetClass pinterest:RelatedTerms ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.RelatedTerms/id> ;
    sh:name "id" ;
    sh:description "First input term. For example, if you pass \"?terms=clothes,workout\", then id will be \"clothes\"" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.RelatedTerms/relatedTermCount> ;
    sh:name "related term count" ;
    sh:description "Total number of related terms returned" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.RelatedTerms/relatedTermsList> ;
    sh:name "related terms list" ;
    sh:description "The id of the advertiser." ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RelatedTerms/relatedTermsList/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RelatedTerms/relatedTermsList/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Terms Of Service
pinterest:TermsOfServiceShape a sh:NodeShape ;
  sh:targetClass pinterest:TermsOfService ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TermsOfService/adAccountId> ;
    sh:name "ad account id" ;
    sh:description "The ID of the ad account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TermsOfService/hasAccepted> ;
    sh:name "has accepted" ;
    sh:description "Whether the ad account has accepted terms of service." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TermsOfService/html> ;
    sh:name "html" ;
    sh:description "The terms of service content" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TermsOfService/id> ;
    sh:name "id" ;
    sh:description "The ID of the terms of service" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Analytics Metrics Response
pinterest:AnalyticsMetricsResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:AnalyticsMetricsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AnalyticsMetricsResponse/dailyMetrics> ;
    sh:name "daily metrics" ;
    sh:description "Array with the requested daily metric records" ;
    sh:node pinterest:AnalyticsDailyMetricsShape ;
    sh:class pinterest:AnalyticsDailyMetrics ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AnalyticsMetricsResponse/summaryMetrics> ;
    sh:name "summary metrics" ;
    sh:description "The metric name and value over the requested period for each requested metric" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Analytics Daily Metrics
pinterest:AnalyticsDailyMetricsShape a sh:NodeShape ;
  sh:targetClass pinterest:AnalyticsDailyMetrics ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AnalyticsDailyMetrics/dataStatus> ;
    sh:name "data status" ;
    sh:description "Metrics availablity, e.g., \"READY\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PROCESSING" "READY" "ESTIMATE" "BEFORE_BUSINESS_CREATED" "BEFORE_DATA_RETENTION_PERIOD" "BEFORE_PIN_DATA_RETENTION_PERIOD" "BEFORE_METRIC_START_DATE" "BEFORE_CORE_METRIC_START_DATE" "BEFORE_PIN_FORMAT_METRIC_START_DATE" "BEFORE_AUDIENCE_METRIC_START_DATE" "BEFORE_AUDIENCE_MONTHLY_METRIC_START_DATE" "BEFORE_VIDEO_METRIC_START_DATE" "BEFORE_CONVERSION_METRIC_START_DATE" "PURCHASERS_METRIC_SMALLER_THAN_THRESHOLD" "IN_BAD_TAG_DATE" "BEFORE_PUBLISHED_METRIC_START_DATE" "BEFORE_ASSIST_METRIC_START_DATE" "BEFORE_PIN_CREATED" "BEFORE_ACCOUNT_CLAIMED" "BEFORE_DEMOGRAPHIC_FILTERS_START_DATE" "AUDIENCE_SEGMENT_SMALLER_THAN_THRESHOLD" "AUDIENCE_TOTAL_SMALLER_THAN_THRESHOLD" "BEFORE_PRODUCT_GROUP_FILTER_START_DATE" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AnalyticsDailyMetrics/date> ;
    sh:name "date" ;
    sh:description "Metrics date (UTC): YYYY-MM-DD." ;
    sh:datatype xsd:date ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AnalyticsDailyMetrics/metrics> ;
    sh:name "metrics" ;
    sh:description "The metric name and daily value for each requested metric" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Account
pinterest:AccountShape a sh:NodeShape ;
  sh:targetClass pinterest:Account ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Account/about> ;
    sh:name "about" ;
    sh:description "Profile about description." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Account/accountType> ;
    sh:name "account type" ;
    sh:description "Type of account" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PINNER" "BUSINESS" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Account/boardCount> ;
    sh:name "board count" ;
    sh:description "User account board count.<br/>**Note**: Board count on user account level may differ from counts found elsewhere due to attribution of collaborative Boards." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Account/businessName> ;
    sh:name "business name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Account/followerCount> ;
    sh:name "follower count" ;
    sh:description "User account follower count." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Account/followingCount> ;
    sh:name "following count" ;
    sh:description "User account following count." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Account/id> ;
    sh:name "id" ;
    sh:description "User account ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Account/monthlyViews> ;
    sh:name "monthly views" ;
    sh:description "User account monthly views." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Account/pinCount> ;
    sh:name "pin count" ;
    sh:description "User account pin count. This includes both created and saved pins." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Account/profileImage> ;
    sh:name "profile image" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Account/username> ;
    sh:name "username" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Account/websiteUrl> ;
    sh:name "website url" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] .

# Shape for Follow User Request
pinterest:FollowUserRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:FollowUserRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.FollowUserRequest/autoFollow> ;
    sh:name "auto follow" ;
    sh:description "Whether this request comes as result of auto-follow after clicking on a link. Follow links can be used by partners on their site or in emails. Only selected partners can be followed this way. We verify that partner can be auto-followed." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Interest
pinterest:InterestShape a sh:NodeShape ;
  sh:targetClass pinterest:Interest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Interest/canonicalUrl> ;
    sh:name "canonical url" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Interest/id> ;
    sh:name "id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:pattern "^\\d+$" ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Interest/key> ;
    sh:name "key" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Interest/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Linked Business
pinterest:LinkedBusinessShape a sh:NodeShape ;
  sh:targetClass pinterest:LinkedBusiness ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LinkedBusiness/imageLargeUrl> ;
    sh:name "image large url" ;
    sh:description "image_large_url" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LinkedBusiness/imageMediumUrl> ;
    sh:name "image medium url" ;
    sh:description "image_medium_url" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LinkedBusiness/imageSmallUrl> ;
    sh:name "image small url" ;
    sh:description "image_small_url" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LinkedBusiness/imageXlargeUrl> ;
    sh:name "image xlarge url" ;
    sh:description "image_xlarge_url" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LinkedBusiness/username> ;
    sh:name "username" ;
    sh:description "Username" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Top Pins Analytics Response
pinterest:TopPinsAnalyticsResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:TopPinsAnalyticsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TopPinsAnalyticsResponse/dateAvailability> ;
    sh:name "date availability" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/dateAvailability/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/dateAvailability/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TopPinsAnalyticsResponse/pins> ;
    sh:name "pins" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/pins/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/pins/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TopPinsAnalyticsResponse/sortBy> ;
    sh:name "sort by" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ENGAGEMENT" "SAVE" "IMPRESSION" "OUTBOUND_CLICK" "PIN_CLICK" ) ;
  ] .

# Shape for Top Video Pins Analytics Response
pinterest:TopVideoPinsAnalyticsResponseShape a sh:NodeShape ;
  sh:targetClass pinterest:TopVideoPinsAnalyticsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TopVideoPinsAnalyticsResponse/dateAvailability> ;
    sh:name "date availability" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/dateAvailability/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/dateAvailability/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TopVideoPinsAnalyticsResponse/pins> ;
    sh:name "pins" ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/pins/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/pins/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TopVideoPinsAnalyticsResponse/sortBy> ;
    sh:name "sort by" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "SAVE" "IMPRESSION" "OUTBOUND_CLICK" "VIDEO_MRC_VIEW" "VIDEO_AVG_WATCH_TIME" "VIDEO_V50_WATCH_TIME" "QUARTILE_95_PERCENT_VIEW" "VIDEO_10S_VIEW" "VIDEO_START" ) ;
  ] .

# Shape for User Summary
pinterest:UserSummaryShape a sh:NodeShape ;
  sh:targetClass pinterest:UserSummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserSummary/type> ;
    sh:name "type" ;
    sh:description "Always \"user\"" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserSummary/username> ;
    sh:name "username" ;
    sh:description "Username" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for User Website Summary
pinterest:UserWebsiteSummaryShape a sh:NodeShape ;
  sh:targetClass pinterest:UserWebsiteSummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserWebsiteSummary/status> ;
    sh:name "status" ;
    sh:description "Status of the verification process" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserWebsiteSummary/verifiedAt> ;
    sh:name "verified at" ;
    sh:description "UTC timestamp when the verification happened - sometimes missing" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserWebsiteSummary/website> ;
    sh:name "website" ;
    sh:description "Website with path or domain only" ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
  ] .

# Shape for User Website Verification Code
pinterest:UserWebsiteVerificationCodeShape a sh:NodeShape ;
  sh:targetClass pinterest:UserWebsiteVerificationCode ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserWebsiteVerificationCode/dnsTxtRecord> ;
    sh:name "dns txt record" ;
    sh:description "DNS TXT record to check against for the website to be claimed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserWebsiteVerificationCode/fileContent> ;
    sh:name "file content" ;
    sh:description "A full html file to upload to the website in order for it to be claimed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserWebsiteVerificationCode/filename> ;
    sh:name "filename" ;
    sh:description "File expected to find on the website being claimed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserWebsiteVerificationCode/metatag> ;
    sh:name "metatag" ;
    sh:description "Metatag the verification process searchs for the website to be claimed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserWebsiteVerificationCode/verificationCode> ;
    sh:name "verification code" ;
    sh:description "Code to check against the user claiming the website" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for User Website Verify Request
pinterest:UserWebsiteVerifyRequestShape a sh:NodeShape ;
  sh:targetClass pinterest:UserWebsiteVerifyRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserWebsiteVerifyRequest/verificationMethod> ;
    sh:name "verification method" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "FILENAME" "METATAG" "DNSTXT" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UserWebsiteVerifyRequest/website> ;
    sh:name "website" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Generated Record container shape for Pinterest.AdGroupAudienceSizingRequest.keywords
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdGroupAudienceSizingRequest/keywords/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdGroupAudienceSizingRequest/keywords/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdGroupAudienceSizingRequest/keywords> ] ;
    sh:class pinterest:AdGroupAudienceSizingRequest ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdGroupAudienceSizingRequest/keywords/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdGroupAudienceSizingRequest/keywords/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdGroupAudienceSizingRequest/keywords/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/pinterest/record/Pinterest.AdGroupAudienceSizingRequest/keywords/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdGroupAudienceSizingRequest/keywords/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdGroupAudienceSizingRequest/keywords/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.AdsAnalyticsCreateAsyncRequest.customConversionEventMetrics
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdsAnalyticsCreateAsyncRequest/customConversionEventMetrics/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdsAnalyticsCreateAsyncRequest/customConversionEventMetrics/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AdsAnalyticsCreateAsyncRequest/customConversionEventMetrics> ] ;
    sh:class pinterest:AdsAnalyticsCreateAsyncRequest ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdsAnalyticsCreateAsyncRequest/customConversionEventMetrics/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdsAnalyticsCreateAsyncRequest/customConversionEventMetrics/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdsAnalyticsCreateAsyncRequest/customConversionEventMetrics/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/pinterest/record/Pinterest.AdsAnalyticsCreateAsyncRequest/customConversionEventMetrics/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdsAnalyticsCreateAsyncRequest/customConversionEventMetrics/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AdsAnalyticsCreateAsyncRequest/customConversionEventMetrics/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.AnalyticsDailyMetrics.metrics
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AnalyticsDailyMetrics/metrics> ] ;
    sh:class pinterest:AnalyticsDailyMetrics ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/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/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.AnalyticsDailyMetrics.metrics
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsDailyMetrics/metrics/value> ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.AnalyticsMetricsResponse.summaryMetrics
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AnalyticsMetricsResponse/summaryMetrics> ] ;
    sh:class pinterest:AnalyticsMetricsResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/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/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.AnalyticsMetricsResponse.summaryMetrics
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AnalyticsMetricsResponse/summaryMetrics/value> ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.AudienceCategory.subcategories
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceCategory/subcategories/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceCategory/subcategories/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceCategory/subcategories> ] ;
    sh:class pinterest:AudienceCategory ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceCategory/subcategories/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceCategory/subcategories/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceCategory/subcategories/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/pinterest/record/Pinterest.AudienceCategory/subcategories/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceCategory/subcategories/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceCategory/subcategories/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.AudienceRule.eventSource
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/eventSource/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/eventSource/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/eventSource> ] ;
    sh:class pinterest:AudienceRule ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/eventSource/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/eventSource/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/eventSource/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/pinterest/record/Pinterest.AudienceRule/eventSource/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/eventSource/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/eventSource/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.AudienceRule.ingestionSource
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/ingestionSource/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/ingestionSource/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AudienceRule/ingestionSource> ] ;
    sh:class pinterest:AudienceRule ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/ingestionSource/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/ingestionSource/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/ingestionSource/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/pinterest/record/Pinterest.AudienceRule/ingestionSource/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/ingestionSource/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AudienceRule/ingestionSource/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.AuthRespondInvitesBody.invites
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.AuthRespondInvitesBody/invites/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AuthRespondInvitesBody/invites/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.AuthRespondInvitesBody/invites> ] ;
    sh:class pinterest:AuthRespondInvitesBody ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AuthRespondInvitesBody/invites/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AuthRespondInvitesBody/invites/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AuthRespondInvitesBody/invites/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/pinterest/record/Pinterest.AuthRespondInvitesBody/invites/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AuthRespondInvitesBody/invites/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.AuthRespondInvitesBody/invites/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.BaseInviteDataResponse.inviteData
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.BaseInviteDataResponse/inviteData/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BaseInviteDataResponse/inviteData/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BaseInviteDataResponse/inviteData> ] ;
    sh:class pinterest:BaseInviteDataResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BaseInviteDataResponse/inviteData/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BaseInviteDataResponse/inviteData/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BaseInviteDataResponse/inviteData/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/pinterest/record/Pinterest.BaseInviteDataResponse/inviteData/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BaseInviteDataResponse/inviteData/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BaseInviteDataResponse/inviteData/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.BidFloorRequest.bidFloorSpecs
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.BidFloorRequest/bidFloorSpecs/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BidFloorRequest/bidFloorSpecs/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BidFloorRequest/bidFloorSpecs> ] ;
    sh:class pinterest:BidFloorRequest ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BidFloorRequest/bidFloorSpecs/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BidFloorRequest/bidFloorSpecs/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BidFloorRequest/bidFloorSpecs/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/pinterest/record/Pinterest.BidFloorRequest/bidFloorSpecs/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BidFloorRequest/bidFloorSpecs/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BidFloorRequest/bidFloorSpecs/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.BulkDownloadRequest.campaignFilter
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkDownloadRequest/campaignFilter/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkDownloadRequest/campaignFilter/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkDownloadRequest/campaignFilter> ] ;
    sh:class pinterest:BulkDownloadRequest ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkDownloadRequest/campaignFilter/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkDownloadRequest/campaignFilter/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkDownloadRequest/campaignFilter/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/pinterest/record/Pinterest.BulkDownloadRequest/campaignFilter/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkDownloadRequest/campaignFilter/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkDownloadRequest/campaignFilter/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.BulkUpsertRequestUpdate.labels
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkUpsertRequestUpdate/labels/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkUpsertRequestUpdate/labels/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BulkUpsertRequestUpdate/labels> ] ;
    sh:class pinterest:BulkUpsertRequestUpdate ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkUpsertRequestUpdate/labels/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkUpsertRequestUpdate/labels/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkUpsertRequestUpdate/labels/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/pinterest/record/Pinterest.BulkUpsertRequestUpdate/labels/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkUpsertRequestUpdate/labels/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BulkUpsertRequestUpdate/labels/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.BusinessMemberAssetsSummary.adAccounts
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/adAccounts/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/adAccounts/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessMemberAssetsSummary/adAccounts> ] ;
    sh:class pinterest:BusinessMemberAssetsSummary ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/adAccounts/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/adAccounts/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/adAccounts/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/pinterest/record/Pinterest.BusinessMemberAssetsSummary/adAccounts/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/adAccounts/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/adAccounts/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.BusinessMemberAssetsSummary.profiles
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/profiles/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/profiles/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.BusinessMemberAssetsSummary/profiles> ] ;
    sh:class pinterest:BusinessMemberAssetsSummary ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/profiles/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/profiles/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/profiles/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/pinterest/record/Pinterest.BusinessMemberAssetsSummary/profiles/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/profiles/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.BusinessMemberAssetsSummary/profiles/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CatalogsCreativeAssetsAvailableFilterValues.filterValues
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/filterValues/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/filterValues/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/filterValues> ] ;
    sh:class pinterest:CatalogsCreativeAssetsAvailableFilterValues ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/filterValues/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/filterValues/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/filterValues/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/pinterest/record/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/filterValues/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/filterValues/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsCreativeAssetsAvailableFilterValues/filterValues/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CatalogsHotelAvailableFilterValues.filterValues
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsHotelAvailableFilterValues/filterValues/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsHotelAvailableFilterValues/filterValues/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsHotelAvailableFilterValues/filterValues> ] ;
    sh:class pinterest:CatalogsHotelAvailableFilterValues ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsHotelAvailableFilterValues/filterValues/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsHotelAvailableFilterValues/filterValues/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsHotelAvailableFilterValues/filterValues/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/pinterest/record/Pinterest.CatalogsHotelAvailableFilterValues/filterValues/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsHotelAvailableFilterValues/filterValues/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsHotelAvailableFilterValues/filterValues/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CatalogsRetailAvailableFilterValues.filterValues
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsRetailAvailableFilterValues/filterValues/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsRetailAvailableFilterValues/filterValues/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsRetailAvailableFilterValues/filterValues> ] ;
    sh:class pinterest:CatalogsRetailAvailableFilterValues ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsRetailAvailableFilterValues/filterValues/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsRetailAvailableFilterValues/filterValues/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsRetailAvailableFilterValues/filterValues/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/pinterest/record/Pinterest.CatalogsRetailAvailableFilterValues/filterValues/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsRetailAvailableFilterValues/filterValues/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CatalogsRetailAvailableFilterValues/filterValues/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.ConversionApiResponse.events
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionApiResponse/events/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionApiResponse/events/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionApiResponse/events> ] ;
    sh:class pinterest:ConversionApiResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionApiResponse/events/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionApiResponse/events/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionApiResponse/events/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/pinterest/record/Pinterest.ConversionApiResponse/events/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionApiResponse/events/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionApiResponse/events/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.ConversionEvents.data
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionEvents/data/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionEvents/data/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ConversionEvents/data> ] ;
    sh:class pinterest:ConversionEvents ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionEvents/data/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionEvents/data/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionEvents/data/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/pinterest/record/Pinterest.ConversionEvents/data/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionEvents/data/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ConversionEvents/data/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CreateAssetAccessRequestBody.assetRequests
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestBody/assetRequests/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestBody/assetRequests/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetAccessRequestBody/assetRequests> ] ;
    sh:class pinterest:CreateAssetAccessRequestBody ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestBody/assetRequests/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestBody/assetRequests/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestBody/assetRequests/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/pinterest/record/Pinterest.CreateAssetAccessRequestBody/assetRequests/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestBody/assetRequests/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestBody/assetRequests/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CreateAssetAccessRequestResponse.exceptions
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/exceptions/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/exceptions/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetAccessRequestResponse/exceptions> ] ;
    sh:class pinterest:CreateAssetAccessRequestResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/exceptions/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/exceptions/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/exceptions/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/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/exceptions/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/exceptions/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/exceptions/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CreateAssetAccessRequestResponse.invites
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/invites/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/invites/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetAccessRequestResponse/invites> ] ;
    sh:class pinterest:CreateAssetAccessRequestResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/invites/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/invites/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/invites/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/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/invites/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/invites/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetAccessRequestResponse/invites/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CreateAssetInvitesRequestItem.assetIdToPermissions
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions> ] ;
    sh:class pinterest:CreateAssetInvitesRequestItem ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/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/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.CreateAssetInvitesRequestItem.assetIdToPermissions
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateAssetInvitesRequestItem/assetIdToPermissions/value> ;
    sh:datatype xsd:string ;
    sh:in ( "ADMIN" "ANALYST" "FINANCE_MANAGER" "FINANCE_EDIT" "FINANCE_VIEW" "AUDIENCE_MANAGER" "CAMPAIGN_MANAGER" "CATALOGS_MANAGER" "CATALOGS_VIEWER" "PROFILE_PUBLISHER" "CONSUMER_USER" )
  ] .

# Generated Record container shape for Pinterest.CreateInvitesResultsResponseArray.items
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateInvitesResultsResponseArray/items/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateInvitesResultsResponseArray/items/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateInvitesResultsResponseArray/items> ] ;
    sh:class pinterest:CreateInvitesResultsResponseArray ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateInvitesResultsResponseArray/items/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateInvitesResultsResponseArray/items/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateInvitesResultsResponseArray/items/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/pinterest/record/Pinterest.CreateInvitesResultsResponseArray/items/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateInvitesResultsResponseArray/items/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateInvitesResultsResponseArray/items/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CreateMMMReportResponse.data
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateMMMReportResponse/data/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateMMMReportResponse/data/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CreateMMMReportResponse/data> ] ;
    sh:class pinterest:CreateMMMReportResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateMMMReportResponse/data/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateMMMReportResponse/data/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateMMMReportResponse/data/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/pinterest/record/Pinterest.CreateMMMReportResponse/data/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateMMMReportResponse/data/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CreateMMMReportResponse/data/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CustomerList.exceptions
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerList/exceptions/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerList/exceptions/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerList/exceptions> ] ;
    sh:class pinterest:CustomerList ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerList/exceptions/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerList/exceptions/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerList/exceptions/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/pinterest/record/Pinterest.CustomerList/exceptions/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerList/exceptions/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerList/exceptions/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CustomerListUpload.errorCounts
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/errorCounts/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/errorCounts/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpload/errorCounts> ] ;
    sh:class pinterest:CustomerListUpload ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/errorCounts/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/errorCounts/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/errorCounts/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/pinterest/record/Pinterest.CustomerListUpload/errorCounts/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/errorCounts/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/errorCounts/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CustomerListUpload.recordCounts
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/recordCounts/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/recordCounts/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUpload/recordCounts> ] ;
    sh:class pinterest:CustomerListUpload ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/recordCounts/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/recordCounts/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/recordCounts/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/pinterest/record/Pinterest.CustomerListUpload/recordCounts/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/recordCounts/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUpload/recordCounts/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CustomerListUploadResponse.errorCounts
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/errorCounts/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/errorCounts/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadResponse/errorCounts> ] ;
    sh:class pinterest:CustomerListUploadResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/errorCounts/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/errorCounts/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/errorCounts/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/pinterest/record/Pinterest.CustomerListUploadResponse/errorCounts/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/errorCounts/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/errorCounts/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.CustomerListUploadResponse.recordCounts
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/recordCounts/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/recordCounts/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CustomerListUploadResponse/recordCounts> ] ;
    sh:class pinterest:CustomerListUploadResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/recordCounts/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/recordCounts/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/recordCounts/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/pinterest/record/Pinterest.CustomerListUploadResponse/recordCounts/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/recordCounts/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.CustomerListUploadResponse/recordCounts/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.DeleteAssetGroupResponse.exceptions
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteAssetGroupResponse/exceptions/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteAssetGroupResponse/exceptions/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeleteAssetGroupResponse/exceptions> ] ;
    sh:class pinterest:DeleteAssetGroupResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteAssetGroupResponse/exceptions/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteAssetGroupResponse/exceptions/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteAssetGroupResponse/exceptions/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/pinterest/record/Pinterest.DeleteAssetGroupResponse/exceptions/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteAssetGroupResponse/exceptions/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteAssetGroupResponse/exceptions/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.DeleteInvitesResultsResponseArray.items
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteInvitesResultsResponseArray/items/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteInvitesResultsResponseArray/items/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeleteInvitesResultsResponseArray/items> ] ;
    sh:class pinterest:DeleteInvitesResultsResponseArray ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteInvitesResultsResponseArray/items/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteInvitesResultsResponseArray/items/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteInvitesResultsResponseArray/items/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/pinterest/record/Pinterest.DeleteInvitesResultsResponseArray/items/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteInvitesResultsResponseArray/items/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeleteInvitesResultsResponseArray/items/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.DeletePartnerAssetAccessBody.accesses
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeletePartnerAssetAccessBody/accesses/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeletePartnerAssetAccessBody/accesses/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeletePartnerAssetAccessBody/accesses> ] ;
    sh:class pinterest:DeletePartnerAssetAccessBody ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeletePartnerAssetAccessBody/accesses/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeletePartnerAssetAccessBody/accesses/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeletePartnerAssetAccessBody/accesses/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/pinterest/record/Pinterest.DeletePartnerAssetAccessBody/accesses/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeletePartnerAssetAccessBody/accesses/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeletePartnerAssetAccessBody/accesses/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.DeliveryMetricsResponse.items
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeliveryMetricsResponse/items/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeliveryMetricsResponse/items/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.DeliveryMetricsResponse/items> ] ;
    sh:class pinterest:DeliveryMetricsResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeliveryMetricsResponse/items/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeliveryMetricsResponse/items/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeliveryMetricsResponse/items/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/pinterest/record/Pinterest.DeliveryMetricsResponse/items/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeliveryMetricsResponse/items/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.DeliveryMetricsResponse/items/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.GetMMMReportResponse.data
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.GetMMMReportResponse/data/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.GetMMMReportResponse/data/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.GetMMMReportResponse/data> ] ;
    sh:class pinterest:GetMMMReportResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.GetMMMReportResponse/data/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.GetMMMReportResponse/data/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.GetMMMReportResponse/data/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/pinterest/record/Pinterest.GetMMMReportResponse/data/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.GetMMMReportResponse/data/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.GetMMMReportResponse/data/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.IntegrationLogClientRequest.requestHeaders
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/requestHeaders/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/requestHeaders/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientRequest/requestHeaders> ] ;
    sh:class pinterest:IntegrationLogClientRequest ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/requestHeaders/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/requestHeaders/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/requestHeaders/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/pinterest/record/Pinterest.IntegrationLogClientRequest/requestHeaders/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/requestHeaders/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/requestHeaders/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.IntegrationLogClientRequest.responseHeaders
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/responseHeaders/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/responseHeaders/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.IntegrationLogClientRequest/responseHeaders> ] ;
    sh:class pinterest:IntegrationLogClientRequest ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/responseHeaders/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/responseHeaders/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/responseHeaders/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/pinterest/record/Pinterest.IntegrationLogClientRequest/responseHeaders/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/responseHeaders/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.IntegrationLogClientRequest/responseHeaders/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.InviteAssetsSummary.adAccounts
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/adAccounts/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/adAccounts/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteAssetsSummary/adAccounts> ] ;
    sh:class pinterest:InviteAssetsSummary ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/adAccounts/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/adAccounts/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/adAccounts/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/pinterest/record/Pinterest.InviteAssetsSummary/adAccounts/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/adAccounts/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/adAccounts/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.InviteAssetsSummary.profiles
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/profiles/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/profiles/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteAssetsSummary/profiles> ] ;
    sh:class pinterest:InviteAssetsSummary ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/profiles/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/profiles/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/profiles/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/pinterest/record/Pinterest.InviteAssetsSummary/profiles/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/profiles/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteAssetsSummary/profiles/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.InviteBusinessRoleBinding.inviteData
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteBusinessRoleBinding/inviteData/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteBusinessRoleBinding/inviteData/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteBusinessRoleBinding/inviteData> ] ;
    sh:class pinterest:InviteBusinessRoleBinding ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteBusinessRoleBinding/inviteData/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteBusinessRoleBinding/inviteData/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteBusinessRoleBinding/inviteData/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/pinterest/record/Pinterest.InviteBusinessRoleBinding/inviteData/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteBusinessRoleBinding/inviteData/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteBusinessRoleBinding/inviteData/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.InviteResponse.inviteData
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteResponse/inviteData/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteResponse/inviteData/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.InviteResponse/inviteData> ] ;
    sh:class pinterest:InviteResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteResponse/inviteData/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteResponse/inviteData/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteResponse/inviteData/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/pinterest/record/Pinterest.InviteResponse/inviteData/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteResponse/inviteData/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.InviteResponse/inviteData/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.LabelCreateRequest.labels
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelCreateRequest/labels/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelCreateRequest/labels/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LabelCreateRequest/labels> ] ;
    sh:class pinterest:LabelCreateRequest ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelCreateRequest/labels/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelCreateRequest/labels/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelCreateRequest/labels/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/pinterest/record/Pinterest.LabelCreateRequest/labels/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelCreateRequest/labels/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelCreateRequest/labels/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.LabelUpdateRequest.labels
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelUpdateRequest/labels/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelUpdateRequest/labels/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LabelUpdateRequest/labels> ] ;
    sh:class pinterest:LabelUpdateRequest ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelUpdateRequest/labels/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelUpdateRequest/labels/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelUpdateRequest/labels/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/pinterest/record/Pinterest.LabelUpdateRequest/labels/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelUpdateRequest/labels/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LabelUpdateRequest/labels/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.LeadFormArrayResponse.items
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormArrayResponse/items/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormArrayResponse/items/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormArrayResponse/items> ] ;
    sh:class pinterest:LeadFormArrayResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormArrayResponse/items/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormArrayResponse/items/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormArrayResponse/items/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/pinterest/record/Pinterest.LeadFormArrayResponse/items/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormArrayResponse/items/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormArrayResponse/items/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.LeadFormCommon.policyLinks
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormCommon/policyLinks/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormCommon/policyLinks/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormCommon/policyLinks> ] ;
    sh:class pinterest:LeadFormCommon ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormCommon/policyLinks/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormCommon/policyLinks/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormCommon/policyLinks/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/pinterest/record/Pinterest.LeadFormCommon/policyLinks/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormCommon/policyLinks/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormCommon/policyLinks/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.LeadFormResponse.policyLinks
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormResponse/policyLinks/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormResponse/policyLinks/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormResponse/policyLinks> ] ;
    sh:class pinterest:LeadForm ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormResponse/policyLinks/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormResponse/policyLinks/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormResponse/policyLinks/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/pinterest/record/Pinterest.LeadFormResponse/policyLinks/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormResponse/policyLinks/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormResponse/policyLinks/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.LeadFormUpdateRequest.policyLinks
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormUpdateRequest/policyLinks/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormUpdateRequest/policyLinks/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.LeadFormUpdateRequest/policyLinks> ] ;
    sh:class pinterest:LeadFormUpdateRequest ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormUpdateRequest/policyLinks/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormUpdateRequest/policyLinks/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormUpdateRequest/policyLinks/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/pinterest/record/Pinterest.LeadFormUpdateRequest/policyLinks/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormUpdateRequest/policyLinks/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.LeadFormUpdateRequest/policyLinks/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.MembersToDeleteBody.members
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.MembersToDeleteBody/members/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MembersToDeleteBody/members/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MembersToDeleteBody/members> ] ;
    sh:class pinterest:MembersToDeleteBody ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MembersToDeleteBody/members/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MembersToDeleteBody/members/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MembersToDeleteBody/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/pinterest/record/Pinterest.MembersToDeleteBody/members/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MembersToDeleteBody/members/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MembersToDeleteBody/members/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.MetricsResponse.data
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.MetricsResponse/data/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MetricsResponse/data/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.MetricsResponse/data> ] ;
    sh:class pinterest:MetricsResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MetricsResponse/data/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MetricsResponse/data/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MetricsResponse/data/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/pinterest/record/Pinterest.MetricsResponse/data/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MetricsResponse/data/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.MetricsResponse/data/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.OptimizationGoalMetadata.conversionTagV3GoalMetadata
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/conversionTagV3GoalMetadata/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/conversionTagV3GoalMetadata/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OptimizationGoalMetadata/conversionTagV3GoalMetadata> ] ;
    sh:class pinterest:OptimizationGoalMetadata ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/conversionTagV3GoalMetadata/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/conversionTagV3GoalMetadata/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/conversionTagV3GoalMetadata/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/pinterest/record/Pinterest.OptimizationGoalMetadata/conversionTagV3GoalMetadata/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/conversionTagV3GoalMetadata/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/conversionTagV3GoalMetadata/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.OptimizationGoalMetadata.frequencyGoalMetadata
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/frequencyGoalMetadata/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/frequencyGoalMetadata/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OptimizationGoalMetadata/frequencyGoalMetadata> ] ;
    sh:class pinterest:OptimizationGoalMetadata ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/frequencyGoalMetadata/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/frequencyGoalMetadata/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/frequencyGoalMetadata/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/pinterest/record/Pinterest.OptimizationGoalMetadata/frequencyGoalMetadata/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/frequencyGoalMetadata/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/frequencyGoalMetadata/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.OptimizationGoalMetadata.scrollupGoalMetadata
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/scrollupGoalMetadata/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/scrollupGoalMetadata/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.OptimizationGoalMetadata/scrollupGoalMetadata> ] ;
    sh:class pinterest:OptimizationGoalMetadata ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/scrollupGoalMetadata/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/scrollupGoalMetadata/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/scrollupGoalMetadata/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/pinterest/record/Pinterest.OptimizationGoalMetadata/scrollupGoalMetadata/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/scrollupGoalMetadata/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.OptimizationGoalMetadata/scrollupGoalMetadata/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.Paginated.items
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.Paginated/items/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Paginated/items/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Paginated/items> ] ;
    sh:class pinterest:Paginated ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Paginated/items/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Paginated/items/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Paginated/items/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/pinterest/record/Pinterest.Paginated/items/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Paginated/items/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Paginated/items/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.Pin.pinMetrics
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.Pin/pinMetrics/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Pin/pinMetrics/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.Pin/pinMetrics> ] ;
    sh:class pinterest:Pin ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Pin/pinMetrics/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Pin/pinMetrics/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Pin/pinMetrics/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/pinterest/record/Pinterest.Pin/pinMetrics/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Pin/pinMetrics/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.Pin/pinMetrics/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.PinAnalyticsMetricsResponse.dailyMetrics
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/dailyMetrics/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/dailyMetrics/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinAnalyticsMetricsResponse/dailyMetrics> ] ;
    sh:class pinterest:PinAnalytics ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/dailyMetrics/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/dailyMetrics/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/dailyMetrics/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/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/dailyMetrics/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/dailyMetrics/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/dailyMetrics/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.PinAnalyticsMetricsResponse.lifetimeMetrics
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics> ] ;
    sh:class pinterest:PinAnalytics ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/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/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.PinAnalyticsMetricsResponse.lifetimeMetrics
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/lifetimeMetrics/value> ;
    sh:datatype xsd:int ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.PinAnalyticsMetricsResponse.summaryMetrics
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics> ] ;
    sh:class pinterest:PinAnalytics ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/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/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.PinAnalyticsMetricsResponse.summaryMetrics
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PinAnalyticsMetricsResponse/summaryMetrics/value> ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.PriceFilter.PRICE
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.PriceFilter/PRICE/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PriceFilter/PRICE/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.PriceFilter/PRICE> ] ;
    sh:class pinterest:PriceFilter ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PriceFilter/PRICE/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PriceFilter/PRICE/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PriceFilter/PRICE/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/pinterest/record/Pinterest.PriceFilter/PRICE/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PriceFilter/PRICE/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.PriceFilter/PRICE/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.ProductCategoriesDemographic.age
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoriesDemographic/age> ] ;
    sh:class pinterest:ProductCategoriesDemographic ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/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/pinterest/record/Pinterest.ProductCategoriesDemographic/age/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.ProductCategoriesDemographic.age
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoriesDemographic/age/value> ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.ProductCategoryDetails.predictedTimeSeries
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoryDetails/predictedTimeSeries> ] ;
    sh:class pinterest:ProductCategoryDetails ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/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/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.ProductCategoryDetails.predictedTimeSeries
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/predictedTimeSeries/value> ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.ProductCategoryDetails.timeSeries
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.ProductCategoryDetails/timeSeries> ] ;
    sh:class pinterest:ProductCategoryDetails ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/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/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.ProductCategoryDetails.timeSeries
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.ProductCategoryDetails/timeSeries/value> ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.QualityComponents.advertiserExternalId
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/advertiserExternalId> ] ;
    sh:class pinterest:QualityComponents ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/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/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.QualityComponents.advertiserExternalId
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/advertiserExternalId/value> ;
    sh:node pinterest:QualityComponentDetailsShape ;
    sh:class pinterest:QualityComponentDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.QualityComponents.clickIdEpik
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/clickIdEpik> ] ;
    sh:class pinterest:QualityComponents ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/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/pinterest/record/Pinterest.QualityComponents/clickIdEpik/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.QualityComponents.clickIdEpik
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/clickIdEpik/value> ;
    sh:node pinterest:QualityComponentDetailsShape ;
    sh:class pinterest:QualityComponentDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.QualityComponents.externalEventId
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/externalEventId> ] ;
    sh:class pinterest:QualityComponents ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/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/pinterest/record/Pinterest.QualityComponents/externalEventId/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.QualityComponents.externalEventId
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/externalEventId/value> ;
    sh:node pinterest:QualityComponentDetailsShape ;
    sh:class pinterest:QualityComponentDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.QualityComponents.hashedEmail
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/hashedEmail> ] ;
    sh:class pinterest:QualityComponents ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/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/pinterest/record/Pinterest.QualityComponents/hashedEmail/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.QualityComponents.hashedEmail
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedEmail/value> ;
    sh:node pinterest:QualityComponentDetailsShape ;
    sh:class pinterest:QualityComponentDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.QualityComponents.hashedMaid
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/hashedMaid> ] ;
    sh:class pinterest:QualityComponents ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/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/pinterest/record/Pinterest.QualityComponents/hashedMaid/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.QualityComponents.hashedMaid
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/hashedMaid/value> ;
    sh:node pinterest:QualityComponentDetailsShape ;
    sh:class pinterest:QualityComponentDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.QualityComponents.ipAddress
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/ipAddress> ] ;
    sh:class pinterest:QualityComponents ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/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/pinterest/record/Pinterest.QualityComponents/ipAddress/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.QualityComponents.ipAddress
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/ipAddress/value> ;
    sh:node pinterest:QualityComponentDetailsShape ;
    sh:class pinterest:QualityComponentDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.QualityComponents.orderId
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/orderId> ] ;
    sh:class pinterest:QualityComponents ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/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/pinterest/record/Pinterest.QualityComponents/orderId/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.QualityComponents.orderId
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderId/value> ;
    sh:node pinterest:QualityComponentDetailsShape ;
    sh:class pinterest:QualityComponentDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.QualityComponents.orderValue
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/orderValue> ] ;
    sh:class pinterest:QualityComponents ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/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/pinterest/record/Pinterest.QualityComponents/orderValue/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.QualityComponents.orderValue
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/orderValue/value> ;
    sh:node pinterest:QualityComponentDetailsShape ;
    sh:class pinterest:QualityComponentDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.QualityComponents.productId
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/productId> ] ;
    sh:class pinterest:QualityComponents ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/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/pinterest/record/Pinterest.QualityComponents/productId/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.QualityComponents.productId
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/productId/value> ;
    sh:node pinterest:QualityComponentDetailsShape ;
    sh:class pinterest:QualityComponentDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.QualityComponents.sourceUrl
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/sourceUrl> ] ;
    sh:class pinterest:QualityComponents ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/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/pinterest/record/Pinterest.QualityComponents/sourceUrl/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.QualityComponents.sourceUrl
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/sourceUrl/value> ;
    sh:node pinterest:QualityComponentDetailsShape ;
    sh:class pinterest:QualityComponentDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.QualityComponents.userAgent
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.QualityComponents/userAgent> ] ;
    sh:class pinterest:QualityComponents ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/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/pinterest/record/Pinterest.QualityComponents/userAgent/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.QualityComponents.userAgent
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.QualityComponents/userAgent/value> ;
    sh:node pinterest:QualityComponentDetailsShape ;
    sh:class pinterest:QualityComponentDetails ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.RelatedTerms.relatedTermsList
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.RelatedTerms/relatedTermsList/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RelatedTerms/relatedTermsList/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.RelatedTerms/relatedTermsList> ] ;
    sh:class pinterest:RelatedTerms ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RelatedTerms/relatedTermsList/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RelatedTerms/relatedTermsList/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RelatedTerms/relatedTermsList/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/pinterest/record/Pinterest.RelatedTerms/relatedTermsList/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RelatedTerms/relatedTermsList/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RelatedTerms/relatedTermsList/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.RespondToInvitesResponseArray.items
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.RespondToInvitesResponseArray/items/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RespondToInvitesResponseArray/items/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.RespondToInvitesResponseArray/items> ] ;
    sh:class pinterest:RespondToInvitesResponseArray ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RespondToInvitesResponseArray/items/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RespondToInvitesResponseArray/items/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RespondToInvitesResponseArray/items/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/pinterest/record/Pinterest.RespondToInvitesResponseArray/items/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RespondToInvitesResponseArray/items/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.RespondToInvitesResponseArray/items/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.TargetingTemplateAudienceSizing.reachEstimate
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.TargetingTemplateAudienceSizing/reachEstimate/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TargetingTemplateAudienceSizing/reachEstimate/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TargetingTemplateAudienceSizing/reachEstimate> ] ;
    sh:class pinterest:TargetingTemplateAudienceSizing ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TargetingTemplateAudienceSizing/reachEstimate/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TargetingTemplateAudienceSizing/reachEstimate/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TargetingTemplateAudienceSizing/reachEstimate/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/pinterest/record/Pinterest.TargetingTemplateAudienceSizing/reachEstimate/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TargetingTemplateAudienceSizing/reachEstimate/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TargetingTemplateAudienceSizing/reachEstimate/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.TopPinsAnalyticsResponse.dateAvailability
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/dateAvailability/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/dateAvailability/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TopPinsAnalyticsResponse/dateAvailability> ] ;
    sh:class pinterest:TopPinsAnalyticsResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/dateAvailability/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/dateAvailability/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/dateAvailability/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/pinterest/record/Pinterest.TopPinsAnalyticsResponse/dateAvailability/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/dateAvailability/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/dateAvailability/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.TopPinsAnalyticsResponse.pins
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/pins/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/pins/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TopPinsAnalyticsResponse/pins> ] ;
    sh:class pinterest:TopPinsAnalyticsResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/pins/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/pins/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/pins/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/pinterest/record/Pinterest.TopPinsAnalyticsResponse/pins/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/pins/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopPinsAnalyticsResponse/pins/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.TopVideoPinsAnalyticsResponse.dateAvailability
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/dateAvailability/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/dateAvailability/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TopVideoPinsAnalyticsResponse/dateAvailability> ] ;
    sh:class pinterest:TopVideoPinsAnalyticsResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/dateAvailability/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/dateAvailability/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/dateAvailability/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/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/dateAvailability/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/dateAvailability/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/dateAvailability/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.TopVideoPinsAnalyticsResponse.pins
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/pins/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/pins/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TopVideoPinsAnalyticsResponse/pins> ] ;
    sh:class pinterest:TopVideoPinsAnalyticsResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/pins/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/pins/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/pins/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/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/pins/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/pins/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TopVideoPinsAnalyticsResponse/pins/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.TrendingKeywordsResponse.trends
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingKeywordsResponse/trends/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingKeywordsResponse/trends/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingKeywordsResponse/trends> ] ;
    sh:class pinterest:TrendingKeywordsResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingKeywordsResponse/trends/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingKeywordsResponse/trends/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingKeywordsResponse/trends/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/pinterest/record/Pinterest.TrendingKeywordsResponse/trends/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingKeywordsResponse/trends/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingKeywordsResponse/trends/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.TrendingTopic.timeSeries
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.TrendingTopic/timeSeries> ] ;
    sh:class pinterest:TrendingTopic ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/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/pinterest/record/Pinterest.TrendingTopic/timeSeries/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/key> ?key . }"""
  ] .

# Generated Record entry shape for Pinterest.TrendingTopic.timeSeries
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.TrendingTopic/timeSeries/value> ;
    sh:datatype xsd:double ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# Generated Record container shape for Pinterest.UpdateAssetGroupBody.assetGroupsToUpdate
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupBody/assetGroupsToUpdate/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupBody/assetGroupsToUpdate/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateAssetGroupBody/assetGroupsToUpdate> ] ;
    sh:class pinterest:UpdateAssetGroupBody ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupBody/assetGroupsToUpdate/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupBody/assetGroupsToUpdate/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupBody/assetGroupsToUpdate/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/pinterest/record/Pinterest.UpdateAssetGroupBody/assetGroupsToUpdate/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupBody/assetGroupsToUpdate/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupBody/assetGroupsToUpdate/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.UpdateAssetGroupResponse.exceptions
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupResponse/exceptions/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupResponse/exceptions/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateAssetGroupResponse/exceptions> ] ;
    sh:class pinterest:UpdateAssetGroupResponse ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupResponse/exceptions/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupResponse/exceptions/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupResponse/exceptions/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/pinterest/record/Pinterest.UpdateAssetGroupResponse/exceptions/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupResponse/exceptions/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateAssetGroupResponse/exceptions/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.UpdateInvitesResultsResponseArray.items
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateInvitesResultsResponseArray/items/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateInvitesResultsResponseArray/items/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateInvitesResultsResponseArray/items> ] ;
    sh:class pinterest:UpdateInvitesResultsResponseArray ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateInvitesResultsResponseArray/items/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateInvitesResultsResponseArray/items/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateInvitesResultsResponseArray/items/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/pinterest/record/Pinterest.UpdateInvitesResultsResponseArray/items/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateInvitesResultsResponseArray/items/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateInvitesResultsResponseArray/items/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.UpdateMemberAssetAccessBody.accesses
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetAccessBody/accesses/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetAccessBody/accesses/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateMemberAssetAccessBody/accesses> ] ;
    sh:class pinterest:UpdateMemberAssetAccessBody ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetAccessBody/accesses/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetAccessBody/accesses/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetAccessBody/accesses/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/pinterest/record/Pinterest.UpdateMemberAssetAccessBody/accesses/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetAccessBody/accesses/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetAccessBody/accesses/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.UpdateMemberAssetsResultsResponseArray.items
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetsResultsResponseArray/items/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetsResultsResponseArray/items/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdateMemberAssetsResultsResponseArray/items> ] ;
    sh:class pinterest:UpdateMemberAssetsResultsResponseArray ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetsResultsResponseArray/items/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetsResultsResponseArray/items/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetsResultsResponseArray/items/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/pinterest/record/Pinterest.UpdateMemberAssetsResultsResponseArray/items/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetsResultsResponseArray/items/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdateMemberAssetsResultsResponseArray/items/key> ?key . }"""
  ] .

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

# Generated Record container shape for Pinterest.UpdatePartnerAssetAccessBody.accesses
<https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdatePartnerAssetAccessBody/accesses/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdatePartnerAssetAccessBody/accesses/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/pinterest/property/Pinterest.UpdatePartnerAssetAccessBody/accesses> ] ;
    sh:class pinterest:UpdatePartnerAssetAccessBody ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdatePartnerAssetAccessBody/accesses/entry> ;
    sh:node <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdatePartnerAssetAccessBody/accesses/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdatePartnerAssetAccessBody/accesses/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/pinterest/record/Pinterest.UpdatePartnerAssetAccessBody/accesses/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdatePartnerAssetAccessBody/accesses/key> ?key . ?right <https://relay.inferal.com/ontology/pinterest/record/Pinterest.UpdatePartnerAssetAccessBody/accesses/key> ?key . }"""
  ] .

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

# RDF Collection level 1 for Pinterest.CatalogsProductGroupMultipleStringListCriteria.values
<https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleStringListCriteria/values/ListLevel1Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:node <https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleStringListCriteria/values/ListLevel2Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 2 for Pinterest.CatalogsProductGroupMultipleStringListCriteria.values
<https://relay.inferal.com/ontology/pinterest/property/Pinterest.CatalogsProductGroupMultipleStringListCriteria/values/ListLevel2Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:datatype xsd:string
  ] .
