offering-protocol 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. offering_protocol/__init__.py +7 -0
  2. offering_protocol/agent/__init__.py +66 -0
  3. offering_protocol/agent/agent.py +135 -0
  4. offering_protocol/agent/cache.py +51 -0
  5. offering_protocol/agent/capabilities.py +262 -0
  6. offering_protocol/agent/client.py +667 -0
  7. offering_protocol/agent/details.py +227 -0
  8. offering_protocol/agent/schema.py +129 -0
  9. offering_protocol/core/__init__.py +64 -0
  10. offering_protocol/core/models.py +475 -0
  11. offering_protocol/core/references.py +135 -0
  12. offering_protocol/core/schemas/action-relation.schema.json +9 -0
  13. offering_protocol/core/schemas/action-request.schema.json +18 -0
  14. offering_protocol/core/schemas/action.schema.json +56 -0
  15. offering_protocol/core/schemas/attribute-schema-reference.schema.json +6 -0
  16. offering_protocol/core/schemas/authentication-requirement.schema.json +11 -0
  17. offering_protocol/core/schemas/capability-identifier.schema.json +9 -0
  18. offering_protocol/core/schemas/capability-link.schema.json +14 -0
  19. offering_protocol/core/schemas/collection-search-request.schema.json +45 -0
  20. offering_protocol/core/schemas/collection.schema.json +72 -0
  21. offering_protocol/core/schemas/detail-fields.schema.json +16 -0
  22. offering_protocol/core/schemas/enrollment-protocol.schema.json +15 -0
  23. offering_protocol/core/schemas/filter-capability-source.schema.json +41 -0
  24. offering_protocol/core/schemas/filter-definition-page.schema.json +25 -0
  25. offering_protocol/core/schemas/filter-definition.schema.json +63 -0
  26. offering_protocol/core/schemas/filter-expression.schema.json +45 -0
  27. offering_protocol/core/schemas/filter-operator.schema.json +14 -0
  28. offering_protocol/core/schemas/filter-type.schema.json +14 -0
  29. offering_protocol/core/schemas/filter-unit.schema.json +45 -0
  30. offering_protocol/core/schemas/http-action-target.schema.json +36 -0
  31. offering_protocol/core/schemas/invalid-parameter.schema.json +55 -0
  32. offering_protocol/core/schemas/local-resource-identifier-list.schema.json +10 -0
  33. offering_protocol/core/schemas/local-resource-identifier.schema.json +10 -0
  34. offering_protocol/core/schemas/mcp-endpoint.schema.json +29 -0
  35. offering_protocol/core/schemas/offering-search-request.schema.json +68 -0
  36. offering_protocol/core/schemas/offering-search-response.schema.json +20 -0
  37. offering_protocol/core/schemas/offering.schema.json +92 -0
  38. offering_protocol/core/schemas/openapi-action-target.schema.json +20 -0
  39. offering_protocol/core/schemas/operation-descriptor.schema.json +27 -0
  40. offering_protocol/core/schemas/page-envelope.schema.json +25 -0
  41. offering_protocol/core/schemas/page-limit.schema.json +8 -0
  42. offering_protocol/core/schemas/payment-option.schema.json +24 -0
  43. offering_protocol/core/schemas/payment-protocol.schema.json +34 -0
  44. offering_protocol/core/schemas/price-preview.schema.json +133 -0
  45. offering_protocol/core/schemas/problem-code.schema.json +9 -0
  46. offering_protocol/core/schemas/problem-details.schema.json +66 -0
  47. offering_protocol/core/schemas/protocol-version.schema.json +8 -0
  48. offering_protocol/core/schemas/refinement-bucket.schema.json +28 -0
  49. offering_protocol/core/schemas/refinement-group.schema.json +24 -0
  50. offering_protocol/core/schemas/representation.schema.json +11 -0
  51. offering_protocol/core/schemas/resource-identity.schema.json +27 -0
  52. offering_protocol/core/schemas/resource-image.schema.json +40 -0
  53. offering_protocol/core/schemas/resource-reference.schema.json +19 -0
  54. offering_protocol/core/schemas/schema-reference.schema.json +15 -0
  55. offering_protocol/core/schemas/search-capabilities.schema.json +26 -0
  56. offering_protocol/core/schemas/service-branding-image.schema.json +23 -0
  57. offering_protocol/core/schemas/service-branding.schema.json +19 -0
  58. offering_protocol/core/schemas/service-document.schema.json +337 -0
  59. offering_protocol/core/schemas/service-openapi.schema.json +15 -0
  60. offering_protocol/core/schemas/service-origin.schema.json +9 -0
  61. offering_protocol/core/schemas/service-protocols.schema.json +101 -0
  62. offering_protocol/core/schemas/sort-capability-source.schema.json +41 -0
  63. offering_protocol/core/schemas/sort-definition-page.schema.json +25 -0
  64. offering_protocol/core/schemas/sort-definition.schema.json +35 -0
  65. offering_protocol/core/schemas/sort-key.schema.json +28 -0
  66. offering_protocol/core/schemas/top-level-document.schema.json +16 -0
  67. offering_protocol/core/schemas/trust-protocol.schema.json +15 -0
  68. offering_protocol/core/validation.py +390 -0
  69. offering_protocol/directory/__init__.py +51 -0
  70. offering_protocol/directory/client.py +206 -0
  71. offering_protocol/directory/models.py +103 -0
  72. offering_protocol/directory/transport.py +145 -0
  73. offering_protocol/py.typed +1 -0
  74. offering_protocol/service/__init__.py +32 -0
  75. offering_protocol/service/service.py +444 -0
  76. offering_protocol/service/static_catalog.py +258 -0
  77. offering_protocol-0.1.0.dist-info/METADATA +362 -0
  78. offering_protocol-0.1.0.dist-info/RECORD +80 -0
  79. offering_protocol-0.1.0.dist-info/WHEEL +4 -0
  80. offering_protocol-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/authentication-requirement.schema.json",
4
+ "title": "ODP Authentication Requirement",
5
+ "type": "string",
6
+ "enum": [
7
+ "not-required",
8
+ "optional",
9
+ "required"
10
+ ]
11
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/capability-identifier.schema.json",
4
+ "title": "ODP Service-local capability identifier",
5
+ "type": "string",
6
+ "minLength": 1,
7
+ "maxLength": 64,
8
+ "pattern": "^[A-Za-z0-9._~-]+$"
9
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/capability-link.schema.json",
4
+ "title": "ODP linked capability source",
5
+ "type": "object",
6
+ "required": [
7
+ "href"
8
+ ],
9
+ "properties": {
10
+ "href": {
11
+ "$ref": "resource-reference.schema.json"
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/collection-search-request.schema.json",
4
+ "title": "ODP Collection search request",
5
+ "type": "object",
6
+ "required": [
7
+ "odp_version"
8
+ ],
9
+ "anyOf": [
10
+ {
11
+ "required": [
12
+ "query"
13
+ ]
14
+ },
15
+ {
16
+ "required": [
17
+ "parent_id"
18
+ ]
19
+ }
20
+ ],
21
+ "properties": {
22
+ "odp_version": {
23
+ "const": "1.0"
24
+ },
25
+ "query": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "maxLength": 256,
29
+ "pattern": "\\S"
30
+ },
31
+ "parent_id": {
32
+ "oneOf": [
33
+ {
34
+ "type": "null"
35
+ },
36
+ {
37
+ "$ref": "local-resource-identifier.schema.json"
38
+ }
39
+ ]
40
+ },
41
+ "limit": {
42
+ "$ref": "page-limit.schema.json"
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,72 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/collection.schema.json",
4
+ "title": "ODP Full Collection Representation",
5
+ "type": "object",
6
+ "required": [
7
+ "odp_version",
8
+ "id",
9
+ "name"
10
+ ],
11
+ "properties": {
12
+ "auth_expands": {
13
+ "const": true
14
+ },
15
+ "odp_version": {
16
+ "const": "1.0"
17
+ },
18
+ "id": {
19
+ "$ref": "local-resource-identifier.schema.json"
20
+ },
21
+ "name": {
22
+ "type": "string",
23
+ "minLength": 1,
24
+ "maxLength": 128
25
+ },
26
+ "description": {
27
+ "type": "string",
28
+ "minLength": 1,
29
+ "maxLength": 1024
30
+ },
31
+ "images": {
32
+ "type": "array",
33
+ "minItems": 1,
34
+ "maxItems": 16,
35
+ "items": {
36
+ "$ref": "resource-image.schema.json"
37
+ }
38
+ },
39
+ "language": {
40
+ "type": "string",
41
+ "minLength": 2,
42
+ "maxLength": 35
43
+ },
44
+ "localizations": {
45
+ "type": "array",
46
+ "minItems": 1,
47
+ "maxItems": 16,
48
+ "uniqueItems": true,
49
+ "items": {
50
+ "type": "string",
51
+ "minLength": 2,
52
+ "maxLength": 35
53
+ }
54
+ },
55
+ "parent_ids": {
56
+ "allOf": [
57
+ {
58
+ "$ref": "local-resource-identifier-list.schema.json"
59
+ },
60
+ {
61
+ "minItems": 1
62
+ }
63
+ ]
64
+ },
65
+ "web_url": {
66
+ "$ref": "resource-reference.schema.json"
67
+ },
68
+ "search_capabilities": {
69
+ "$ref": "search-capabilities.schema.json"
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/detail-fields.schema.json",
4
+ "title": "ODP detail fields",
5
+ "description": "An exhaustive bounded list of fields present in a Full Representation and omitted from a Terse Representation.",
6
+ "type": "array",
7
+ "minItems": 1,
8
+ "maxItems": 32,
9
+ "uniqueItems": true,
10
+ "items": {
11
+ "type": "string",
12
+ "minLength": 1,
13
+ "maxLength": 256,
14
+ "pattern": "^(?:/(?:[\\x20-\\x2E\\x30-\\x7D]|~[01])*)+$"
15
+ }
16
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/enrollment-protocol.schema.json",
4
+ "title": "ODP Enrollment Protocol Descriptor",
5
+ "type": "object",
6
+ "required": [
7
+ "name"
8
+ ],
9
+ "properties": {
10
+ "name": {
11
+ "const": "aep"
12
+ }
13
+ },
14
+ "additionalProperties": false
15
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/filter-capability-source.schema.json",
4
+ "title": "ODP Filter Definition source",
5
+ "type": "object",
6
+ "oneOf": [
7
+ {
8
+ "required": [
9
+ "inline"
10
+ ],
11
+ "not": {
12
+ "required": [
13
+ "linked"
14
+ ]
15
+ }
16
+ },
17
+ {
18
+ "required": [
19
+ "linked"
20
+ ],
21
+ "not": {
22
+ "required": [
23
+ "inline"
24
+ ]
25
+ }
26
+ }
27
+ ],
28
+ "properties": {
29
+ "inline": {
30
+ "type": "array",
31
+ "minItems": 1,
32
+ "maxItems": 32,
33
+ "items": {
34
+ "$ref": "filter-definition.schema.json"
35
+ }
36
+ },
37
+ "linked": {
38
+ "$ref": "capability-link.schema.json"
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/filter-definition-page.schema.json",
4
+ "title": "ODP Filter Definition page",
5
+ "type": "object",
6
+ "required": [
7
+ "odp_version",
8
+ "items"
9
+ ],
10
+ "properties": {
11
+ "odp_version": {
12
+ "const": "1.0"
13
+ },
14
+ "items": {
15
+ "type": "array",
16
+ "maxItems": 100,
17
+ "items": {
18
+ "$ref": "filter-definition.schema.json"
19
+ }
20
+ },
21
+ "next": {
22
+ "$ref": "resource-reference.schema.json"
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,63 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/filter-definition.schema.json",
4
+ "title": "ODP Filter Definition",
5
+ "type": "object",
6
+ "required": [
7
+ "id",
8
+ "title",
9
+ "description",
10
+ "type",
11
+ "operators"
12
+ ],
13
+ "properties": {
14
+ "id": {
15
+ "$ref": "capability-identifier.schema.json"
16
+ },
17
+ "title": {
18
+ "type": "string",
19
+ "minLength": 1,
20
+ "maxLength": 128
21
+ },
22
+ "description": {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "maxLength": 1024
26
+ },
27
+ "type": {
28
+ "$ref": "filter-type.schema.json"
29
+ },
30
+ "operators": {
31
+ "type": "array",
32
+ "minItems": 1,
33
+ "maxItems": 7,
34
+ "uniqueItems": true,
35
+ "items": {
36
+ "$ref": "filter-operator.schema.json"
37
+ }
38
+ },
39
+ "unit": {
40
+ "$ref": "filter-unit.schema.json"
41
+ },
42
+ "refinable": {
43
+ "const": true
44
+ }
45
+ },
46
+ "if": {
47
+ "required": [
48
+ "refinable"
49
+ ]
50
+ },
51
+ "then": {
52
+ "properties": {
53
+ "operators": {
54
+ "contains": {
55
+ "enum": [
56
+ "eq",
57
+ "in"
58
+ ]
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/filter-expression.schema.json",
4
+ "title": "ODP Filter Expression",
5
+ "type": "object",
6
+ "required": [
7
+ "id",
8
+ "operator",
9
+ "value"
10
+ ],
11
+ "properties": {
12
+ "id": {
13
+ "$ref": "capability-identifier.schema.json"
14
+ },
15
+ "operator": {
16
+ "$ref": "filter-operator.schema.json"
17
+ },
18
+ "value": {
19
+ "oneOf": [
20
+ {
21
+ "type": [
22
+ "string",
23
+ "boolean",
24
+ "integer",
25
+ "number"
26
+ ]
27
+ },
28
+ {
29
+ "type": "array",
30
+ "minItems": 1,
31
+ "maxItems": 100,
32
+ "uniqueItems": true,
33
+ "items": {
34
+ "type": [
35
+ "string",
36
+ "boolean",
37
+ "integer",
38
+ "number"
39
+ ]
40
+ }
41
+ }
42
+ ]
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/filter-operator.schema.json",
4
+ "title": "ODP filter operator",
5
+ "enum": [
6
+ "eq",
7
+ "in",
8
+ "lt",
9
+ "lte",
10
+ "gt",
11
+ "gte",
12
+ "exists"
13
+ ]
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/filter-type.schema.json",
4
+ "title": "ODP filter value type",
5
+ "enum": [
6
+ "string",
7
+ "boolean",
8
+ "integer",
9
+ "number",
10
+ "decimal",
11
+ "date",
12
+ "date-time"
13
+ ]
14
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/filter-unit.schema.json",
4
+ "title": "ODP filter unit",
5
+ "oneOf": [
6
+ {
7
+ "type": "object",
8
+ "required": [
9
+ "system",
10
+ "code"
11
+ ],
12
+ "properties": {
13
+ "system": {
14
+ "const": "ucum"
15
+ },
16
+ "code": {
17
+ "type": "string",
18
+ "minLength": 1,
19
+ "maxLength": 64
20
+ }
21
+ }
22
+ },
23
+ {
24
+ "type": "object",
25
+ "required": [
26
+ "system",
27
+ "code",
28
+ "title"
29
+ ],
30
+ "properties": {
31
+ "system": {
32
+ "const": "service"
33
+ },
34
+ "code": {
35
+ "$ref": "capability-identifier.schema.json"
36
+ },
37
+ "title": {
38
+ "type": "string",
39
+ "minLength": 1,
40
+ "maxLength": 128
41
+ }
42
+ }
43
+ }
44
+ ]
45
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/http-action-target.schema.json",
4
+ "title": "ODP compact HTTP Action target",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "href",
9
+ "method"
10
+ ],
11
+ "properties": {
12
+ "href": {
13
+ "$ref": "resource-reference.schema.json"
14
+ },
15
+ "method": {
16
+ "enum": [
17
+ "GET",
18
+ "POST"
19
+ ]
20
+ },
21
+ "request": {
22
+ "$ref": "action-request.schema.json"
23
+ },
24
+ "response_content_types": {
25
+ "type": "array",
26
+ "minItems": 1,
27
+ "maxItems": 8,
28
+ "uniqueItems": true,
29
+ "items": {
30
+ "type": "string",
31
+ "minLength": 1,
32
+ "maxLength": 255
33
+ }
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/invalid-parameter.schema.json",
4
+ "title": "ODP invalid parameter",
5
+ "type": "object",
6
+ "required": [
7
+ "in",
8
+ "name",
9
+ "reason"
10
+ ],
11
+ "properties": {
12
+ "in": {
13
+ "enum": [
14
+ "query",
15
+ "body",
16
+ "header",
17
+ "path"
18
+ ]
19
+ },
20
+ "name": {
21
+ "type": "string",
22
+ "maxLength": 256
23
+ },
24
+ "reason": {
25
+ "type": "string",
26
+ "minLength": 1,
27
+ "maxLength": 1024
28
+ }
29
+ },
30
+ "allOf": [
31
+ {
32
+ "if": {
33
+ "properties": {
34
+ "in": {
35
+ "const": "body"
36
+ }
37
+ }
38
+ },
39
+ "then": {
40
+ "properties": {
41
+ "name": {
42
+ "pattern": "^(?:|/(?:[^~/]|~[01])*)*$"
43
+ }
44
+ }
45
+ },
46
+ "else": {
47
+ "properties": {
48
+ "name": {
49
+ "minLength": 1
50
+ }
51
+ }
52
+ }
53
+ }
54
+ ]
55
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/local-resource-identifier-list.schema.json",
4
+ "title": "ODP local resource identifier list",
5
+ "type": "array",
6
+ "uniqueItems": true,
7
+ "items": {
8
+ "$ref": "local-resource-identifier.schema.json"
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/local-resource-identifier.schema.json",
4
+ "title": "ODP local resource identifier",
5
+ "description": "A path-safe Service-created identifier scoped by Service origin and resource type.",
6
+ "type": "string",
7
+ "minLength": 1,
8
+ "maxLength": 128,
9
+ "pattern": "^(?!\\.{1,2}$)[A-Za-z0-9._~-]+$"
10
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/mcp-endpoint.schema.json",
4
+ "title": "ODP MCP Endpoint Descriptor",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "type",
9
+ "url"
10
+ ],
11
+ "properties": {
12
+ "description": {
13
+ "type": "string",
14
+ "minLength": 1,
15
+ "maxLength": 1024
16
+ },
17
+ "name": {
18
+ "type": "string",
19
+ "minLength": 1,
20
+ "maxLength": 128
21
+ },
22
+ "type": {
23
+ "const": "streamable-http"
24
+ },
25
+ "url": {
26
+ "$ref": "resource-reference.schema.json"
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/offering-search-request.schema.json",
4
+ "title": "ODP Offering search request",
5
+ "type": "object",
6
+ "required": [
7
+ "odp_version"
8
+ ],
9
+ "anyOf": [
10
+ {
11
+ "required": [
12
+ "query"
13
+ ]
14
+ },
15
+ {
16
+ "required": [
17
+ "filters"
18
+ ]
19
+ }
20
+ ],
21
+ "dependentRequired": {
22
+ "include_descendants": [
23
+ "collection_id"
24
+ ]
25
+ },
26
+ "properties": {
27
+ "odp_version": {
28
+ "const": "1.0"
29
+ },
30
+ "query": {
31
+ "type": "string",
32
+ "minLength": 1,
33
+ "maxLength": 256,
34
+ "pattern": "\\S"
35
+ },
36
+ "filters": {
37
+ "type": "array",
38
+ "minItems": 1,
39
+ "maxItems": 32,
40
+ "uniqueItems": true,
41
+ "items": {
42
+ "$ref": "filter-expression.schema.json"
43
+ }
44
+ },
45
+ "collection_id": {
46
+ "$ref": "local-resource-identifier.schema.json"
47
+ },
48
+ "include_descendants": {
49
+ "type": "boolean",
50
+ "default": false
51
+ },
52
+ "sort": {
53
+ "$ref": "capability-identifier.schema.json"
54
+ },
55
+ "refinements": {
56
+ "type": "array",
57
+ "minItems": 1,
58
+ "maxItems": 16,
59
+ "uniqueItems": true,
60
+ "items": {
61
+ "$ref": "capability-identifier.schema.json"
62
+ }
63
+ },
64
+ "limit": {
65
+ "$ref": "page-limit.schema.json"
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://offeringprotocol.org/schemas/offering-search-response.schema.json",
4
+ "title": "ODP Offering search response",
5
+ "allOf": [
6
+ {
7
+ "$ref": "page-envelope.schema.json"
8
+ }
9
+ ],
10
+ "properties": {
11
+ "refinements": {
12
+ "type": "array",
13
+ "minItems": 1,
14
+ "maxItems": 16,
15
+ "items": {
16
+ "$ref": "refinement-group.schema.json"
17
+ }
18
+ }
19
+ }
20
+ }