Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion conformance/corpus/cases.json
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@
"enum.defined_only"
],
"json": {
"reason": 8
"reason": 10
}
},
{
Expand Down
Binary file modified gen/descriptor.binpb
Binary file not shown.
22 changes: 19 additions & 3 deletions gen/go/ramp/v1/ramp.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions gen/python/wire/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,12 @@ class CatalogRejectionReason(Enum):
'CATALOG_REJECTION_REASON_UNKNOWN_VOCAB_TOKEN'
)
CATALOG_REJECTION_REASON_QUOTA_EXCEEDED = 'CATALOG_REJECTION_REASON_QUOTA_EXCEEDED'
CATALOG_REJECTION_REASON_TERMS_LIMIT_EXCEEDED = (
'CATALOG_REJECTION_REASON_TERMS_LIMIT_EXCEEDED'
)
CATALOG_REJECTION_REASON_URI_UNAVAILABLE = (
'CATALOG_REJECTION_REASON_URI_UNAVAILABLE'
)


class CitationFormat(Enum):
Expand Down
10 changes: 5 additions & 5 deletions gen/ts/wire/schemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ export const C2PAStatusSchema = z.enum(["C2PA_STATUS_TRUSTED","C2PA_STATUS_VALID

export const CatalogContributorSchema = z.object({ "domain": z.string().describe("Canonical domain of the authorized contributor (e.g., \"doubleverify.com\").").default(""), "relationship": z.string().describe("Relationship of this contributor to the provider.\n Examples: \"verifier\" (resource intelligence vendor that attests to resource\n properties), \"exchange\" (an Exchange that enriches catalog entries).").default("") }).strict().describe("CatalogContributor — A third party authorized to push catalog metadata\n (including attestations) on behalf of a provider.");

export const CatalogRejectionSchema = z.object({ "reason": z.enum(["CATALOG_REJECTION_REASON_NOT_CATALOG_CONTRIBUTOR","CATALOG_REJECTION_REASON_TENANT_MISMATCH","CATALOG_REJECTION_REASON_DOMAIN_NOT_VERIFIED","CATALOG_REJECTION_REASON_SIGNATURE_INVALID","CATALOG_REJECTION_REASON_MALFORMED_ENTRY","CATALOG_REJECTION_REASON_UNKNOWN_VOCAB_TOKEN","CATALOG_REJECTION_REASON_QUOTA_EXCEEDED"]).describe("The rejection reason (defined-only, non-zero)"), "rejectedPaths": z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected.").optional() }).catchall(z.union([z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected."), z.never()])).superRefine((value, ctx) => {
export const CatalogRejectionSchema = z.object({ "reason": z.enum(["CATALOG_REJECTION_REASON_NOT_CATALOG_CONTRIBUTOR","CATALOG_REJECTION_REASON_TENANT_MISMATCH","CATALOG_REJECTION_REASON_DOMAIN_NOT_VERIFIED","CATALOG_REJECTION_REASON_SIGNATURE_INVALID","CATALOG_REJECTION_REASON_MALFORMED_ENTRY","CATALOG_REJECTION_REASON_UNKNOWN_VOCAB_TOKEN","CATALOG_REJECTION_REASON_QUOTA_EXCEEDED","CATALOG_REJECTION_REASON_TERMS_LIMIT_EXCEEDED","CATALOG_REJECTION_REASON_URI_UNAVAILABLE"]).describe("The rejection reason (defined-only, non-zero)"), "rejectedPaths": z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected.").optional() }).catchall(z.union([z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected."), z.never()])).superRefine((value, ctx) => {
for (const key in value) {
let evaluated = ["reason", "rejectedPaths"].includes(key)
if (key.match(new RegExp("^(rejected_paths)$"))) {
Expand Down Expand Up @@ -231,7 +231,7 @@ ctx.addIssue({
}
}).describe("CatalogRejection — a CatalogService call could not be applied.");

export const CatalogRejectionReasonSchema = z.enum(["CATALOG_REJECTION_REASON_NOT_CATALOG_CONTRIBUTOR","CATALOG_REJECTION_REASON_TENANT_MISMATCH","CATALOG_REJECTION_REASON_DOMAIN_NOT_VERIFIED","CATALOG_REJECTION_REASON_SIGNATURE_INVALID","CATALOG_REJECTION_REASON_MALFORMED_ENTRY","CATALOG_REJECTION_REASON_UNKNOWN_VOCAB_TOKEN","CATALOG_REJECTION_REASON_QUOTA_EXCEEDED"]);
export const CatalogRejectionReasonSchema = z.enum(["CATALOG_REJECTION_REASON_NOT_CATALOG_CONTRIBUTOR","CATALOG_REJECTION_REASON_TENANT_MISMATCH","CATALOG_REJECTION_REASON_DOMAIN_NOT_VERIFIED","CATALOG_REJECTION_REASON_SIGNATURE_INVALID","CATALOG_REJECTION_REASON_MALFORMED_ENTRY","CATALOG_REJECTION_REASON_UNKNOWN_VOCAB_TOKEN","CATALOG_REJECTION_REASON_QUOTA_EXCEEDED","CATALOG_REJECTION_REASON_TERMS_LIMIT_EXCEEDED","CATALOG_REJECTION_REASON_URI_UNAVAILABLE"]);

export const CitationFormatSchema = z.enum(["CITATION_FORMAT_LINK","CITATION_FORMAT_FOOTNOTE","CITATION_FORMAT_INLINE"]);

Expand Down Expand Up @@ -4599,7 +4599,7 @@ ctx.addIssue({
}
}).describe("DomainVerificationResult — Exchange confirms verification.");

export const ErrorDetailSchema = z.object({ "catalogRejection": z.object({ "reason": z.enum(["CATALOG_REJECTION_REASON_NOT_CATALOG_CONTRIBUTOR","CATALOG_REJECTION_REASON_TENANT_MISMATCH","CATALOG_REJECTION_REASON_DOMAIN_NOT_VERIFIED","CATALOG_REJECTION_REASON_SIGNATURE_INVALID","CATALOG_REJECTION_REASON_MALFORMED_ENTRY","CATALOG_REJECTION_REASON_UNKNOWN_VOCAB_TOKEN","CATALOG_REJECTION_REASON_QUOTA_EXCEEDED"]).describe("The rejection reason (defined-only, non-zero)"), "rejectedPaths": z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected.").optional() }).catchall(z.union([z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected."), z.never()])).superRefine((value, ctx) => {
export const ErrorDetailSchema = z.object({ "catalogRejection": z.object({ "reason": z.enum(["CATALOG_REJECTION_REASON_NOT_CATALOG_CONTRIBUTOR","CATALOG_REJECTION_REASON_TENANT_MISMATCH","CATALOG_REJECTION_REASON_DOMAIN_NOT_VERIFIED","CATALOG_REJECTION_REASON_SIGNATURE_INVALID","CATALOG_REJECTION_REASON_MALFORMED_ENTRY","CATALOG_REJECTION_REASON_UNKNOWN_VOCAB_TOKEN","CATALOG_REJECTION_REASON_QUOTA_EXCEEDED","CATALOG_REJECTION_REASON_TERMS_LIMIT_EXCEEDED","CATALOG_REJECTION_REASON_URI_UNAVAILABLE"]).describe("The rejection reason (defined-only, non-zero)"), "rejectedPaths": z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected.").optional() }).catchall(z.union([z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected."), z.never()])).superRefine((value, ctx) => {
for (const key in value) {
let evaluated = ["reason", "rejectedPaths"].includes(key)
if (key.match(new RegExp("^(rejected_paths)$"))) {
Expand Down Expand Up @@ -4675,7 +4675,7 @@ ctx.addIssue({
}
}
}
}).describe("`reason` oneof — ExecuteTransaction denial").optional(), "usageReportRejection": z.object({ "reason": z.enum(["USAGE_REPORT_REJECTION_REASON_TRANSACTION_NOT_FOUND","USAGE_REPORT_REJECTION_REASON_DUPLICATE","USAGE_REPORT_REJECTION_REASON_WINDOW_EXPIRED","USAGE_REPORT_REJECTION_REASON_MISSING_REQUIRED_FIELDS","USAGE_REPORT_REJECTION_REASON_MALFORMED"]).describe("The rejection reason (defined-only, non-zero)") }).strict().describe("`reason` oneof — ReportUsage filing rejected").optional() }).catchall(z.union([z.object({ "reason": z.enum(["CATALOG_REJECTION_REASON_NOT_CATALOG_CONTRIBUTOR","CATALOG_REJECTION_REASON_TENANT_MISMATCH","CATALOG_REJECTION_REASON_DOMAIN_NOT_VERIFIED","CATALOG_REJECTION_REASON_SIGNATURE_INVALID","CATALOG_REJECTION_REASON_MALFORMED_ENTRY","CATALOG_REJECTION_REASON_UNKNOWN_VOCAB_TOKEN","CATALOG_REJECTION_REASON_QUOTA_EXCEEDED"]).describe("The rejection reason (defined-only, non-zero)"), "rejectedPaths": z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected.").optional() }).catchall(z.union([z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected."), z.never()])).superRefine((value, ctx) => {
}).describe("`reason` oneof — ExecuteTransaction denial").optional(), "usageReportRejection": z.object({ "reason": z.enum(["USAGE_REPORT_REJECTION_REASON_TRANSACTION_NOT_FOUND","USAGE_REPORT_REJECTION_REASON_DUPLICATE","USAGE_REPORT_REJECTION_REASON_WINDOW_EXPIRED","USAGE_REPORT_REJECTION_REASON_MISSING_REQUIRED_FIELDS","USAGE_REPORT_REJECTION_REASON_MALFORMED"]).describe("The rejection reason (defined-only, non-zero)") }).strict().describe("`reason` oneof — ReportUsage filing rejected").optional() }).catchall(z.union([z.object({ "reason": z.enum(["CATALOG_REJECTION_REASON_NOT_CATALOG_CONTRIBUTOR","CATALOG_REJECTION_REASON_TENANT_MISMATCH","CATALOG_REJECTION_REASON_DOMAIN_NOT_VERIFIED","CATALOG_REJECTION_REASON_SIGNATURE_INVALID","CATALOG_REJECTION_REASON_MALFORMED_ENTRY","CATALOG_REJECTION_REASON_UNKNOWN_VOCAB_TOKEN","CATALOG_REJECTION_REASON_QUOTA_EXCEEDED","CATALOG_REJECTION_REASON_TERMS_LIMIT_EXCEEDED","CATALOG_REJECTION_REASON_URI_UNAVAILABLE"]).describe("The rejection reason (defined-only, non-zero)"), "rejectedPaths": z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected.").optional() }).catchall(z.union([z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected."), z.never()])).superRefine((value, ctx) => {
for (const key in value) {
let evaluated = ["reason", "rejectedPaths"].includes(key)
if (key.match(new RegExp("^(rejected_paths)$"))) {
Expand Down Expand Up @@ -4756,7 +4756,7 @@ for (const key in value) {
let evaluated = ["catalogRejection", "disputeFailure", "domain", "domainVerificationFailure", "message", "metadata", "registrationFailure", "retrievalAuthFailure", "transactionDenial", "usageReportRejection"].includes(key)
if (key.match(new RegExp("^(catalog_rejection)$"))) {
evaluated = true
const result = z.object({ "reason": z.enum(["CATALOG_REJECTION_REASON_NOT_CATALOG_CONTRIBUTOR","CATALOG_REJECTION_REASON_TENANT_MISMATCH","CATALOG_REJECTION_REASON_DOMAIN_NOT_VERIFIED","CATALOG_REJECTION_REASON_SIGNATURE_INVALID","CATALOG_REJECTION_REASON_MALFORMED_ENTRY","CATALOG_REJECTION_REASON_UNKNOWN_VOCAB_TOKEN","CATALOG_REJECTION_REASON_QUOTA_EXCEEDED"]).describe("The rejection reason (defined-only, non-zero)"), "rejectedPaths": z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected.").optional() }).catchall(z.union([z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected."), z.never()])).superRefine((value, ctx) => {
const result = z.object({ "reason": z.enum(["CATALOG_REJECTION_REASON_NOT_CATALOG_CONTRIBUTOR","CATALOG_REJECTION_REASON_TENANT_MISMATCH","CATALOG_REJECTION_REASON_DOMAIN_NOT_VERIFIED","CATALOG_REJECTION_REASON_SIGNATURE_INVALID","CATALOG_REJECTION_REASON_MALFORMED_ENTRY","CATALOG_REJECTION_REASON_UNKNOWN_VOCAB_TOKEN","CATALOG_REJECTION_REASON_QUOTA_EXCEEDED","CATALOG_REJECTION_REASON_TERMS_LIMIT_EXCEEDED","CATALOG_REJECTION_REASON_URI_UNAVAILABLE"]).describe("The rejection reason (defined-only, non-zero)"), "rejectedPaths": z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected.").optional() }).catchall(z.union([z.array(z.string()).describe("For partial-batch failures: the entry paths that were rejected."), z.never()])).superRefine((value, ctx) => {
for (const key in value) {
let evaluated = ["reason", "rejectedPaths"].includes(key)
if (key.match(new RegExp("^(rejected_paths)$"))) {
Expand Down
12 changes: 11 additions & 1 deletion proto/ramp/v1/ramp.proto
Original file line number Diff line number Diff line change
Expand Up @@ -3034,7 +3034,17 @@ enum CatalogRejectionReason {
CATALOG_REJECTION_REASON_SIGNATURE_INVALID = 4; // request signature missing or invalid
CATALOG_REJECTION_REASON_MALFORMED_ENTRY = 5; // a resource entry failed schema/validation
CATALOG_REJECTION_REASON_UNKNOWN_VOCAB_TOKEN = 6; // an unregistered vocab token in a restriction/term
CATALOG_REJECTION_REASON_QUOTA_EXCEEDED = 7; // contributor push quota exceeded
CATALOG_REJECTION_REASON_QUOTA_EXCEEDED = 7; // contributor push quota exceeded (per-caller)
CATALOG_REJECTION_REASON_TERMS_LIMIT_EXCEEDED = 8; // a single entry carries more license terms than allowed (per-entry cap)
// The URI cannot be claimed by this caller's entries. Named from the caller's
// own perspective ON PURPOSE: it MUST NOT disclose that another resource/
// contributor already owns the URI. Within one publisher, mutually-untrusting
// contributors share a catalog, so an "owned by another" reason would be a
// confirmed-existence oracle a contributor could use to map a competitor's
// catalog. The conflict is resolvable only by the publisher (who is authorized
// to see full ownership); the human-readable message routes the caller there
// without confirming who, if anyone, holds the URI.
CATALOG_REJECTION_REASON_URI_UNAVAILABLE = 9;
}

// CatalogRejection — a CatalogService call could not be applied.
Expand Down
Loading