API GraphQL
Types GraphQL Documentation detaillee de tous les types GraphQL du schema etouch
Documentation complete des types definis dans apps/api/src/graphql/schema.graphql (1816 lignes).
Scalaire Description DateTimeDate/heure ISO 8601 JSONObjet JSON arbitraire
Etats du workflow projet :
Valeur Description STUDIO_REVIEWRevue initiale par le studio CLIENT_REVIEWSelection par le client SELECTION_CONFIRMATIONConfirmation de la selection IN_RETOUCHRetouche en cours CLIENT_VALIDATIONValidation finale client DONEProjet termine ARCHIVEDProjet archive
Valeur Description PLATFORMAdministrateurs systeme STUDIOStudios photo CLIENTClients RETOUCHERRetoucheurs
Valeur Description PHOTOPhotographie VIDEOVideo DOCUMENTDocument
Valeur Description UPLOADINGUpload en cours UPLOADEDUpload termine PROCESSINGTraitement en cours READYPret a l'usage DELIVEREDLivre au client ARCHIVEDArchive
Valeur Description PENDINGEn attente APPROVEDApprouve REJECTEDRejete
Valeur Description IN_APPNotification in-app EMAILEmail PUSHPush notification WEBHOOKWebhook
Valeur Description ON_MODELPhotographie sur modele GHOSTMannequin fantome FLATFlat lay ACCESSORIESAccessoires SHOESChaussures JEWELRYBijoux OTHERAutre
Valeur Description CLOTHES_FLATVetements flat CLOTHES_GHOSTVetements ghost CLOTHES_GHOST_COMPLEXGhost complexe CLOTHES_ON_MODELVetements sur modele PIQUEPique SHOES_ACCESSORIESChaussures et accessoires SUNGLASSESLunettes de soleil CLIPPINGDetourage DETAILDetail STACKEDEmpilement JEWELLERYBijouterie EXTRA_FORMAT_VARIANTVariante format extra EXTRA_RECROPPINGRecadrage extra EXTRA_COLOR_CHANGEChangement couleur extra
Valeur DRAFTOPENPAIDVOIDUNCOLLECTIBLE
Enum Valeurs UploadBatchTypeSTANDARD, PRIORITYDashboardTimeRangeLAST_7_DAYS, PREVIOUS_7_DAYS, LAST_30_DAYS, LAST_90_DAYSIntegrationTypeOFFICIAL, EXTERNALIntegrationSettingTypeSWITCH, TEXT, SELECTGlobalSearchResultTypePROJECT, CLIENT, RETOUCHER, ASSET, GUIDELINE, USERImportJobTypePENNYLANE_CUSTOMERSImportJobStatusPENDING, IN_PROGRESS, COMPLETED, FAILED, CANCELLEDFtpSyncDirectionPUSH, PULLFtpSyncFolderTypeRAW, RETOUCHEDFtpSyncStatusPENDING, RUNNING, COMPLETED, FAILEDPriceMatchTypeAUTOMATIC, MANUALOrganizationSourceSYSTEM, PENNYLANELegalDocumentCodeTERMS_OF_USE, PRIVACY_POLICY
Contexte de l'utilisateur connecte.
type Viewer {
user : User
organizations : [ Organization ! ] !
activeOrganization : Organization
permissions : [ String ! ] !
roles : [ String ! ] !
isImpersonated : Boolean !
impersonatedBy : String
}
type Organization {
id : ID !
name : String !
slug : String !
type : OrganizationType !
timezone : String !
locale : String !
logoUrl : String
settings : OrganizationSettings
profile : OrganizationProfile
parentOrganizationId : ID
parent : Organization
children : [ Organization ! ] !
guidelineFiles : [ GuidelineFile ! ] !
retouchCategories : [ RetouchCategory ! ] !
createdAt : DateTime !
}
type OrganizationProfile {
contact : OrganizationContactInfo
address : OrganizationAddress
billingAddress : OrganizationAddress
siren : String
tradeName : String
vatNumber : String
avatarUrl : String
studioStatus : String
clientStatus : String
retoucherStatus : String
tags : [ String ! ]
projectsCount : Int !
totalAssetCount : Int !
storageUsageBytes : String !
validationRate : Float
lastProjectDate : DateTime
downloadAuthorization : String
source : OrganizationSource
}
type Project {
id : ID !
reference : String !
name : String !
workflowState : ProjectWorkflowState !
retouchEnabled : Boolean !
retouchingCategory : RetouchingCategory
studio : Organization !
client : Organization !
guidelineFile : GuidelineFile
guidelines : [ GuidelineFile ! ] !
currentRoundNumber : Int !
members : [ ProjectMember ! ] !
retouchVendors : [ ProjectRetouchVendor ! ] !
assets ( input : PaginationInput ): AssetConnection !
retouchRounds ( input : PaginationInput ): RetouchRoundConnection !
workflowEvents ( input : PaginationInput ): WorkflowEventConnection !
comments ( input : PaginationInput ): CommentConnection !
shootingDate : DateTime !
kickoffDate : DateTime
deadlineDate : DateTime
createdAt : DateTime !
updatedAt : DateTime !
paymentStatus : PaymentStatus
downloadUnlocked : Boolean
billing : ProjectBilling
pricingItems : [ ProjectPricingItem ! ] !
quoteStatus : QuoteStatus
totalAssetCount : Int !
retouchedAssetCount : Int !
archivedAt : DateTime
isPublic : Boolean !
publicToken : String
}
type Asset {
id : ID !
title : String
description : String
status : AssetStatus !
assetType : AssetType !
sku : String
view : String
viewIndex : Int
variation : String
extraFormat : String
originalUrl : String
storageKey : String !
sizeInBytes : String
priority : Int !
isHighEndRetouch : Boolean !
isSelected : Boolean !
clientValidationStatus : ClientValidationStatus !
previewUrl : String
thumbnailUrl : String
retouchPreviewUrl : String
retouchThumbnailUrl : String
format : String
uploader : User !
versions : [ AssetVersion ! ] !
comments : [ Comment ! ] !
retouchVersions ( input : PaginationInput ): RetouchVersionConnection !
metadata : JSON !
tags : [ String ! ] !
uploadedAt : DateTime !
}
type User {
id : ID !
email : String !
displayName : String !
avatarUrl : String
locale : String
timezone : String
lastLoginAt : DateTime
emailVerified : Boolean !
mfaEnabled : Boolean !
createdAt : DateTime !
isActive : Boolean !
roles : [ String ! ] !
organizations : [ UserOrganizationMembership ! ] !
projects : [ UserProjectSummary ! ] !
_count : UserEntityCount !
}
type GuidelineFile {
id : ID !
name : String !
category : GuidelineCategory !
view : String !
filePath : String !
fileName : String !
extension : String !
sizeInBytes : String
referenceImages : [ GuidelineReferenceImage ! ] !
imageSpecifications : JSON
createdAt : DateTime !
updatedAt : DateTime !
organization : Organization !
pricingCategories : [ GuidelinePricingCategory ! ] !
organizationPrices ( organizationId : ID ): [ GuidelineOrganizationPrice ! ] !
}
type Invoice {
id : ID !
stripeInvoiceId : String
stripeInvoicePdf : String
stripeHostedUrl : String
receiptUrl : String
totalCents : Int !
status : InvoiceStatus !
createdAt : DateTime !
dueDate : DateTime
paidAt : DateTime
voidedAt : DateTime
project : Project
}
type ProjectBilling {
currency : String !
pricingModel : String !
clientUnitPrice : Int
retoucherUnitPrice : Int
pricingItems : [ ProjectPricingItem ! ] !
estimatedTotalRevenue : Int
estimatedTotalCost : Int
estimatedMargin : Int
estimatedMarginPercent : Float
}
type Integration {
id : ID !
name : String !
category : String !
active : Boolean !
logo : String
shortDescription : String
description : String
overview : String
images : [ String ! ] !
installed : Boolean !
type : IntegrationType !
developerName : String
website : String
scopes : [ String ! ]
installUrl : String
createdAt : DateTime
status : String
lastUsedAt : DateTime
settings : [ IntegrationSetting ! ]
userSettings : [ IntegrationSetting ! ]
requiredSettingIds : [ String ! ]
requiresSettings : Boolean
installMode : String
}
type Comment {
id : ID !
body : String !
context : JSON
author : User !
createdAt : DateTime !
replies : [ Comment ! ] !
}
type WorkflowEvent {
id : ID !
fromState : ProjectWorkflowState
toState : ProjectWorkflowState !
message : String
metadata : JSON
createdAt : DateTime !
actor : User !
}
type Notification {
id : ID !
type : String !
title : String !
message : String !
payload : JSON
createdAt : DateTime !
channels : [ NotificationDelivery ! ] !
}
type RetouchRound {
id : ID !
roundNumber : Int !
status : String !
startedAt : DateTime
completedAt : DateTime
createdAt : DateTime !
updatedAt : DateTime !
versions ( input : PaginationInput ): RetouchVersionConnection !
}
type RetouchVersion {
id : ID !
filePath : String !
previewUrl : String
thumbnailUrl : String
format : String
baseVariant : String
crop : String
status : String !
feedback : String
createdAt : DateTime !
asset : Asset !
uploadedBy : User !
}
type DashboardOverview {
stats : DashboardStatsSummary !
completionTrend : [ DashboardCompletionPoint ! ] !
recentProjects : [ DashboardProjectSummary ! ] !
topClients : [ DashboardTopClient ! ] !
topRetouchers : [ DashboardTopRetoucher ! ] !
activities : [ DashboardActivity ! ] !
projectStateSummary : [ DashboardProjectStateSummary ! ] !
}
type DownloadEvent {
id : ID !
projectId : ID !
userId : ID !
assetIds : [ String ! ] !
assetCount : Int !
downloadType : String !
createdAt : DateTime !
project : Project !
user : User !
}