{"openapi":"3.1.0","info":{"title":"TattooAPI","version":"2026-07-01-preview","summary":"Governed tattoo-industry data and workflow API.","description":"TattooAPI exposes explicit public, authenticated, owner, operator, and agent projections. Public writes are blocked. Source records and internal database structures are not API contracts.","contact":{"name":"TattooAPI Partner Support","url":"https://partners.tattoo.dev"}},"servers":[{"url":"https://api.tattooapi.com","description":"Canonical production"},{"url":"https://api.tattooapi.com/api/v1","description":"Compatibility base path"}],"externalDocs":{"description":"Tattoo Developers documentation","url":"https://docs.tattoo.dev"},"tags":[{"name":"System","description":"Unversioned service health and discovery."},{"name":"Studios","description":"Governed studio discovery projections."},{"name":"Conventions","description":"Citation-backed tattoo convention dataset projections and planning aids."},{"name":"Artists","description":"Authenticated artist projections."},{"name":"Portfolios","description":"Authenticated creative proof projections."},{"name":"Designs","description":"Authenticated design projections."},{"name":"Search","description":"Authenticated cross-projection search."}],"paths":{"/health":{"get":{"operationId":"getHealth","summary":"Get safe service health","tags":["System"],"security":[],"responses":{"200":{"description":"The service is operational.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"The authoritative runtime is unavailable.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/health/live":{"get":{"operationId":"getLiveness","summary":"Get process liveness","tags":["System"],"security":[],"responses":{"200":{"description":"The API process is live.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/health/ready":{"get":{"operationId":"getReadiness","summary":"Get governed production-readiness posture","tags":["System"],"security":[],"responses":{"200":{"description":"Required production dependencies are ready.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"One or more production dependencies are blocked.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/studios":{"get":{"operationId":"listStudios","summary":"List studio discovery projections","tags":["Studios"],"parameters":[{"name":"api-version","in":"query","required":true,"description":"Date-based TattooAPI contract version.","schema":{"type":"string","enum":["2026-07-01-preview"],"example":"2026-07-01-preview"}},{"name":"page","in":"query","required":false,"description":"One-based result page.","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","required":false,"description":"Maximum projections returned per page.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"security":[],"responses":{"200":{"description":"The governed projection was returned.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/ApiVersionError"},"401":{"$ref":"#/components/responses/AuthenticationRequired"},"403":{"$ref":"#/components/responses/PermissionRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/studios/{studioId}":{"get":{"operationId":"getStudio","summary":"Get one studio discovery projection","tags":["Studios"],"parameters":[{"name":"api-version","in":"query","required":true,"description":"Date-based TattooAPI contract version.","schema":{"type":"string","enum":["2026-07-01-preview"],"example":"2026-07-01-preview"}},{"name":"studioId","in":"path","required":true,"description":"Canonical or supported studio identifier.","schema":{"type":"string","minLength":1}}],"security":[{"PartnerApiKey":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"The governed projection was returned.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/ApiVersionError"},"401":{"$ref":"#/components/responses/AuthenticationRequired"},"403":{"$ref":"#/components/responses/PermissionRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/conventions":{"get":{"operationId":"listTattooConventions","summary":"Find upcoming tattoo convention observations","tags":["Conventions"],"parameters":[{"name":"api-version","in":"query","required":true,"description":"Date-based TattooAPI contract version.","schema":{"type":"string","enum":["2026-07-01-preview"],"example":"2026-07-01-preview"}},{"name":"page","in":"query","required":false,"description":"One-based result page.","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","required":false,"description":"Maximum projections returned per page.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"q","in":"query","required":false,"description":"Search event name, venue, city, or state.","schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"from","in":"query","required":false,"description":"Include events ending on or after this date.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"Include events starting on or before this date.","schema":{"type":"string","format":"date"}},{"name":"state","in":"query","required":false,"description":"Full U.S. state name or two-letter state code.","schema":{"type":"string","minLength":2,"maxLength":64}},{"name":"city","in":"query","required":false,"description":"Case-insensitive city match.","schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"includeProvisional","in":"query","required":false,"description":"Include single-source observations. Explicitly conflicted rows remain blocked.","schema":{"type":"boolean","default":false}}],"security":[],"responses":{"200":{"description":"The governed projection was returned.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConventionListResponse"}}}},"400":{"$ref":"#/components/responses/ApiVersionError"},"401":{"$ref":"#/components/responses/AuthenticationRequired"},"403":{"$ref":"#/components/responses/PermissionRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/conventions/{conventionId}":{"get":{"operationId":"getTattooConvention","summary":"Get one tattoo convention observation","tags":["Conventions"],"parameters":[{"name":"api-version","in":"query","required":true,"description":"Date-based TattooAPI contract version.","schema":{"type":"string","enum":["2026-07-01-preview"],"example":"2026-07-01-preview"}},{"name":"includeProvisional","in":"query","required":false,"description":"Allow a single-source observation to be returned.","schema":{"type":"boolean","default":false}},{"name":"conventionId","in":"path","required":true,"description":"Stable convention dataset-projection identifier.","schema":{"type":"string","minLength":1}}],"security":[],"responses":{"200":{"description":"The governed projection was returned.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConventionDetailResponse"}}}},"400":{"$ref":"#/components/responses/ApiVersionError"},"401":{"$ref":"#/components/responses/AuthenticationRequired"},"403":{"$ref":"#/components/responses/PermissionRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/convention-plans":{"get":{"operationId":"planTattooConventions","summary":"Build a basic convention shortlist from observed events","tags":["Conventions"],"parameters":[{"name":"api-version","in":"query","required":true,"description":"Date-based TattooAPI contract version.","schema":{"type":"string","enum":["2026-07-01-preview"],"example":"2026-07-01-preview"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"city","in":"query","required":false,"schema":{"type":"string","maxLength":120}},{"name":"originState","in":"query","required":false,"schema":{"type":"string","maxLength":64}},{"name":"role","in":"query","required":false,"schema":{"type":"string","enum":["artist","vendor","attendee"],"default":"attendee"}},{"name":"budgetUsd","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"maxResults","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":10,"default":5}},{"name":"includeProvisional","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"security":[],"responses":{"200":{"description":"The governed projection was returned.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConventionPlanResponse"}}}},"400":{"$ref":"#/components/responses/ApiVersionError"},"401":{"$ref":"#/components/responses/AuthenticationRequired"},"403":{"$ref":"#/components/responses/PermissionRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/artists":{"get":{"operationId":"listArtists","summary":"List authenticated artist projections","tags":["Artists"],"parameters":[{"name":"api-version","in":"query","required":true,"description":"Date-based TattooAPI contract version.","schema":{"type":"string","enum":["2026-07-01-preview"],"example":"2026-07-01-preview"}},{"name":"page","in":"query","required":false,"description":"One-based result page.","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","required":false,"description":"Maximum projections returned per page.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"security":[{"PartnerApiKey":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"The governed projection was returned.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/ApiVersionError"},"401":{"$ref":"#/components/responses/AuthenticationRequired"},"403":{"$ref":"#/components/responses/PermissionRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/artists/{artistId}":{"get":{"operationId":"getArtist","summary":"Get one authenticated artist projection","tags":["Artists"],"parameters":[{"name":"api-version","in":"query","required":true,"description":"Date-based TattooAPI contract version.","schema":{"type":"string","enum":["2026-07-01-preview"],"example":"2026-07-01-preview"}},{"name":"artistId","in":"path","required":true,"description":"Canonical or supported artist identifier.","schema":{"type":"string","minLength":1}}],"security":[{"PartnerApiKey":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"The governed projection was returned.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/ApiVersionError"},"401":{"$ref":"#/components/responses/AuthenticationRequired"},"403":{"$ref":"#/components/responses/PermissionRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/portfolios":{"get":{"operationId":"listPortfolios","summary":"List governed portfolio projections","tags":["Portfolios"],"parameters":[{"name":"api-version","in":"query","required":true,"description":"Date-based TattooAPI contract version.","schema":{"type":"string","enum":["2026-07-01-preview"],"example":"2026-07-01-preview"}},{"name":"page","in":"query","required":false,"description":"One-based result page.","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","required":false,"description":"Maximum projections returned per page.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"security":[{"PartnerApiKey":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"The governed projection was returned.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/ApiVersionError"},"401":{"$ref":"#/components/responses/AuthenticationRequired"},"403":{"$ref":"#/components/responses/PermissionRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/portfolios/{portfolioId}":{"get":{"operationId":"getPortfolio","summary":"Get one governed portfolio projection","tags":["Portfolios"],"parameters":[{"name":"api-version","in":"query","required":true,"description":"Date-based TattooAPI contract version.","schema":{"type":"string","enum":["2026-07-01-preview"],"example":"2026-07-01-preview"}},{"name":"portfolioId","in":"path","required":true,"description":"Portfolio projection identifier.","schema":{"type":"string","minLength":1}}],"security":[{"PartnerApiKey":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"The governed projection was returned.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/ApiVersionError"},"401":{"$ref":"#/components/responses/AuthenticationRequired"},"403":{"$ref":"#/components/responses/PermissionRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/designs":{"get":{"operationId":"listDesigns","summary":"List governed design projections","tags":["Designs"],"parameters":[{"name":"api-version","in":"query","required":true,"description":"Date-based TattooAPI contract version.","schema":{"type":"string","enum":["2026-07-01-preview"],"example":"2026-07-01-preview"}},{"name":"page","in":"query","required":false,"description":"One-based result page.","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","required":false,"description":"Maximum projections returned per page.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"security":[{"PartnerApiKey":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"The governed projection was returned.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/ApiVersionError"},"401":{"$ref":"#/components/responses/AuthenticationRequired"},"403":{"$ref":"#/components/responses/PermissionRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/designs/{designId}":{"get":{"operationId":"getDesign","summary":"Get one governed design projection","tags":["Designs"],"parameters":[{"name":"api-version","in":"query","required":true,"description":"Date-based TattooAPI contract version.","schema":{"type":"string","enum":["2026-07-01-preview"],"example":"2026-07-01-preview"}},{"name":"designId","in":"path","required":true,"description":"Design projection identifier.","schema":{"type":"string","minLength":1}}],"security":[{"PartnerApiKey":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"The governed projection was returned.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/ApiVersionError"},"401":{"$ref":"#/components/responses/AuthenticationRequired"},"403":{"$ref":"#/components/responses/PermissionRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/search":{"get":{"operationId":"searchProjections","summary":"Search governed studio, artist, portfolio, and design projections","tags":["Search"],"parameters":[{"name":"api-version","in":"query","required":true,"description":"Date-based TattooAPI contract version.","schema":{"type":"string","enum":["2026-07-01-preview"],"example":"2026-07-01-preview"}},{"name":"page","in":"query","required":false,"description":"One-based result page.","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","required":false,"description":"Maximum projections returned per page.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"q","in":"query","required":false,"description":"Bounded search phrase.","schema":{"type":"string","minLength":1,"maxLength":200}}],"security":[{"PartnerApiKey":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"The governed projection was returned.","headers":{"tattoo-request-id":{"description":"Opaque request identifier for support and trace correlation.","schema":{"type":"string"}},"tattoo-api-version":{"description":"The resolved TattooAPI contract version.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/ApiVersionError"},"401":{"$ref":"#/components/responses/AuthenticationRequired"},"403":{"$ref":"#/components/responses/PermissionRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}}},"components":{"securitySchemes":{"PartnerApiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Partner key created in partners.tattoo.dev and mapped to a TattooAPI actor."},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ConventionProjection":{"type":"object","additionalProperties":false,"required":["id","eventSeriesId","eventName","eventType","startDate","endDate","location","organizer","websiteUrl","sourceReferences","verification","planning"],"properties":{"id":{"type":"string","minLength":1},"eventSeriesId":{"type":"string","minLength":1},"eventName":{"type":"string","minLength":1},"eventType":{"type":"string","enum":["tattoo_convention"]},"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"location":{"type":"object","additionalProperties":false,"required":["city","state","stateCode","countryCode","cityStateLabel","venue"],"properties":{"city":{"type":"string"},"state":{"type":"string"},"stateCode":{"type":["string","null"]},"countryCode":{"type":"string","enum":["US"]},"cityStateLabel":{"type":"string"},"venue":{"type":["string","null"]}}},"organizer":{"type":["string","null"]},"websiteUrl":{"type":["string","null"],"format":"uri"},"sourceReferences":{"type":"array","maxItems":10,"items":{"type":"string","format":"uri"}},"verification":{"type":"object","additionalProperties":false,"required":["status","confidence","lastObservedAt"],"properties":{"status":{"type":"string","enum":["corroborated","single_source"]},"confidence":{"type":"string","enum":["low","medium","high"]},"lastObservedAt":{"type":"string","format":"date-time"}}},"planning":{"type":"object","additionalProperties":false,"required":["applicationStatus","applicationDeadline","boothPricingStatus","ticketingStatus","seminarScheduleStatus","participantRosterStatus"],"properties":{"applicationStatus":{"type":"string","enum":["unknown"]},"applicationDeadline":{"type":["string","null"],"format":"date"},"boothPricingStatus":{"type":"string","enum":["unknown"]},"ticketingStatus":{"type":"string","enum":["unknown"]},"seminarScheduleStatus":{"type":"string","enum":["unknown"]},"participantRosterStatus":{"type":"string","enum":["unknown"]}}}}},"ConventionProjectionMeta":{"type":"object","additionalProperties":false,"required":["schemaVersion","projectionClass","canonicalStatus","generatedAt","sourceProvider","sourceRunId","providerConfidence","totalObservedRecords","defaultReadableRecords","disclaimer"],"properties":{"schemaVersion":{"type":"string"},"projectionClass":{"type":"string","enum":["dataset_projection"]},"canonicalStatus":{"type":"string","enum":["research_observation_not_canonical_truth"]},"generatedAt":{"type":"string","format":"date-time"},"sourceProvider":{"type":"string","enum":["exa_agent"]},"sourceRunId":{"type":"string"},"providerConfidence":{"type":"string"},"totalObservedRecords":{"type":"integer","minimum":0},"defaultReadableRecords":{"type":"integer","minimum":0},"disclaimer":{"type":"string"}}},"ConventionPagination":{"type":"object","additionalProperties":false,"required":["page","limit","total","totalPages","hasNext","hasPrev"],"properties":{"page":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1,"maximum":50},"total":{"type":"integer","minimum":0},"totalPages":{"type":"integer","minimum":0},"hasNext":{"type":"boolean"},"hasPrev":{"type":"boolean"}}},"ConventionListResponse":{"type":"object","additionalProperties":false,"required":["ok","data","pagination","meta"],"properties":{"ok":{"type":"boolean","const":true},"data":{"type":"array","items":{"$ref":"#/components/schemas/ConventionProjection"}},"pagination":{"$ref":"#/components/schemas/ConventionPagination"},"meta":{"$ref":"#/components/schemas/ConventionProjectionMeta"}}},"ConventionDetailResponse":{"type":"object","additionalProperties":false,"required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/ConventionProjection"},"meta":{"$ref":"#/components/schemas/ConventionProjectionMeta"}}},"ConventionPlanResponse":{"type":"object","additionalProperties":false,"required":["ok","data","meta"],"properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","additionalProperties":false,"required":["role","budgetUsd","recommendations","planningReadiness","limitations"],"properties":{"role":{"type":"string","enum":["artist","vendor","attendee"]},"budgetUsd":{"type":["number","null"],"minimum":0},"recommendations":{"type":"array","maxItems":10,"items":{"type":"object","additionalProperties":false,"required":["convention","score","scoreBreakdown","recommendationReasons","missingPlanningFacts"],"properties":{"convention":{"$ref":"#/components/schemas/ConventionProjection"},"score":{"type":"number","minimum":0,"maximum":100},"scoreBreakdown":{"type":"object","additionalProperties":{"type":"number"}},"recommendationReasons":{"type":"array","items":{"type":"string"}},"missingPlanningFacts":{"type":"array","items":{"type":"string"}}}}},"planningReadiness":{"type":"string","enum":["basic_event_shortlist"]},"limitations":{"type":"array","items":{"type":"string"}}}},"meta":{"$ref":"#/components/schemas/ConventionProjectionMeta"}}},"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"target":{"type":"string"},"details":{"type":"array","items":{"type":"object","additionalProperties":true}}},"additionalProperties":true}}}},"responses":{"ApiVersionError":{"description":"The api-version query parameter is missing or unsupported.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"AuthenticationRequired":{"description":"A valid partner API key or bearer token is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"PermissionRequired":{"description":"The authenticated actor lacks the required projection permission.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"The governed projection was not found or cannot be disclosed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"The caller exceeded the current rate limit.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"x-tattoo-governance":{"publicWritesAllowed":false,"rawDatabaseRecordsExposed":false,"projectionContractsRequired":true,"sourcePacksAreEvidenceNotTruth":true}}