Initial Digitribe ONIX setup
Some checks failed
Terraform Deploy to GCP / Terraform Plan Only (push) Has been cancelled

This commit is contained in:
Eric
2026-04-13 23:39:49 -04:00
parent 168f8284dc
commit 118d4c61a4
96 changed files with 6368 additions and 7 deletions

View File

@@ -1,6 +1,7 @@
FROM golang:1.24-bullseye AS builder FROM golang:1.25 AS builder
WORKDIR /workspace/app WORKDIR /workspace/app
ENV GOTOOLCHAIN=auto
COPY cmd/adapter ./cmd/adapter COPY cmd/adapter ./cmd/adapter
COPY core/ ./core COPY core/ ./core
COPY pkg/ ./pkg COPY pkg/ ./pkg
@@ -10,16 +11,11 @@ RUN go mod download
RUN go build -o server cmd/adapter/main.go RUN go build -o server cmd/adapter/main.go
# Create a minimal runtime image
FROM cgr.dev/chainguard/wolfi-base FROM cgr.dev/chainguard/wolfi-base
# ✅ Alpine is removed; using minimal Debian
WORKDIR /app WORKDIR /app
# Copy only the built binary and plugin
COPY --from=builder /workspace/app/server . COPY --from=builder /workspace/app/server .
# Expose port 8080
EXPOSE 8080 EXPOSE 8080
# Run the Go server with the config flag from environment variable.
CMD ["sh", "-c", "./server --config=${CONFIG_FILE}"] CMD ["sh", "-c", "./server --config=${CONFIG_FILE}"]

BIN
__MACOSX/._schemas Executable file

Binary file not shown.

Binary file not shown.

BIN
__MACOSX/schemas/._core Executable file

Binary file not shown.

BIN
__MACOSX/schemas/._ondc_trv10 Executable file

Binary file not shown.

BIN
__MACOSX/schemas/core/._v1.1.0 Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,96 @@
appName: "digitribe-onix"
log:
level: debug
destinations:
- type: stdout
contextKeys:
- transaction_id
- message_id
- subscriber_id
- module_id
http:
port: 8081
timeout:
read: 30
write: 30
idle: 30
pluginManager:
root: ./plugins
modules:
- name: bapTxnReceiver
path: /bap/receiver/
handler:
type: std
role: bap
httpClientConfig:
maxIdleConns: 1000
maxIdleConnsPerHost: 200
idleConnTimeout: 300s
responseHeaderTimeout: 5s
plugins:
registry:
id: registry
config:
url: http://registry:3030/subscribers
retry_max: 3
retry_wait_min: 100ms
retry_wait_max: 500ms
keyManager:
id: simplekeymanager
config:
networkParticipant: digitribe-network
keyId: digitribe-key
signingPrivateKey: uc5WYG/eke0PVGyQ9JNVLpwQL0K9JIZfHfqUHdLBTaY=
signingPublicKey: UX1EDpL4YHOnfkuhrtS+Bz18qwidrX+oJxButD8xaCE=
encrPrivateKey: uc5WYG/eke0PVGyQ9JNVLpwQL0K9JIZfHfqUHdLBTaY=
encrPublicKey: UX1EDpL4YHOnfkuhrtS+Bz18qwidrX+oJxButD8xaCE
router:
id: router
config:
routingConfig: ./config/local-simple-routing.yaml
schemaValidator:
id: schemavalidator
config:
schemaDir: ./schemas
signValidator:
id: signvalidator
steps:
- addRoute
- validateSchema
- name: bapTxnCaller
path: /bap/caller/
handler:
type: std
role: bap
httpClientConfig:
maxIdleConns: 1000
maxIdleConnsPerHost: 200
idleConnTimeout: 300s
responseHeaderTimeout: 5s
plugins:
registry:
id: registry
config:
url: http://registry:3030/subscribers
retry_max: 3
retry_wait_min: 100ms
retry_wait_max: 500ms
keyManager:
id: simplekeymanager
config:
networkParticipant: digitribe-network
keyId: digitribe-key
signingPrivateKey: uc5WYG/eke0PVGyQ9JNVLpwQL0K9JIZfHfqUHdLBTaY=
signingPublicKey: UX1EDpL4YHOnfkuhrtS+Bz18qwidrX+oJxButD8xaCE=
encrPrivateKey: uc5WYG/eke0PVGyQ9JNVLpwQL0K9JIZfHfqUHdLBTaY=
encrPublicKey: UX1EDpL4YHOnfkuhrtS+Bz18qwidrX+oJxButD8xaCE
router:
id: router
config:
routingConfig: ./config/local-simple-routing-BAPCaller.yaml
signer:
id: signer
steps:
- addRoute
- sign

37
docker-compose.yml Normal file
View File

@@ -0,0 +1,37 @@
services:
redis:
image: redis:7-alpine
container_name: onix-redis
restart: unless-stopped
networks:
- onix-network
onix:
image: onix-adapter:latest
container_name: onix-adapter
restart: unless-stopped
environment:
- CONFIG_FILE=/app/config/local-dev.yaml
volumes:
- ./config:/app/config
- ./schemas:/app/schemas
- ./plugins:/app/plugins
networks:
- onix-network
- traefik-public
depends_on:
- redis
labels:
- "traefik.enable=true"
- "traefik.http.routers.onix.rule=Host(`onix.digitribe.fr`)"
- "traefik.http.routers.onix.entrypoints=web"
- "traefik.http.routers.onix.entrypoints=websecure"
- "traefik.http.routers.onix.tls=true"
- "traefik.http.routers.onix.tls.certresolver=letsencrypt"
- "traefik.http.services.onix.loadbalancer.server.port=8081"
networks:
onix-network:
driver: bridge
traefik-public:
external: true

4
go.mod
View File

@@ -1,6 +1,6 @@
module github.com/beckn-one/beckn-onix module github.com/beckn-one/beckn-onix
go 1.24.6 go 1.25.0
require ( require (
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 github.com/santhosh-tekuri/jsonschema/v6 v6.0.1
@@ -80,6 +80,7 @@ require (
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/yashtewari/glob-intersection v0.2.0 // indirect github.com/yashtewari/glob-intersection v0.2.0 // indirect
github.com/yuin/gopher-lua v1.1.1 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 // indirect
go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect
@@ -98,6 +99,7 @@ require (
) )
require ( require (
github.com/alicebob/miniredis/v2 v2.37.0
github.com/getkin/kin-openapi v0.133.0 github.com/getkin/kin-openapi v0.133.0
github.com/google/uuid v1.6.0 github.com/google/uuid v1.6.0
github.com/hashicorp/go-retryablehttp v0.7.7 github.com/hashicorp/go-retryablehttp v0.7.7

4
go.sum
View File

@@ -2,6 +2,8 @@ github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794 h1:xlwdaKcTN
github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794/go.mod h1:7e+I0LQFUI9AXWxOfsQROs9xPhoJtbsyWcjJqDd4KPY= github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794/go.mod h1:7e+I0LQFUI9AXWxOfsQROs9xPhoJtbsyWcjJqDd4KPY=
github.com/agnivade/levenshtein v1.2.1 h1:EHBY3UOn1gwdy/VbFwgo4cxecRznFk7fKWN1KOX7eoM= github.com/agnivade/levenshtein v1.2.1 h1:EHBY3UOn1gwdy/VbFwgo4cxecRznFk7fKWN1KOX7eoM=
github.com/agnivade/levenshtein v1.2.1/go.mod h1:QVVI16kDrtSuwcpd0p1+xMC6Z/VfhtCyDIjcwga4/DU= github.com/agnivade/levenshtein v1.2.1/go.mod h1:QVVI16kDrtSuwcpd0p1+xMC6Z/VfhtCyDIjcwga4/DU=
github.com/alicebob/miniredis/v2 v2.37.0 h1:RheObYW32G1aiJIj81XVt78ZHJpHonHLHW7OLIshq68=
github.com/alicebob/miniredis/v2 v2.37.0/go.mod h1:TcL7YfarKPGDAthEtl5NBeHZfeUQj6OXMm/+iu5cLMM=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q=
@@ -230,6 +232,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/yashtewari/glob-intersection v0.2.0 h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg= github.com/yashtewari/glob-intersection v0.2.0 h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg=
github.com/yashtewari/glob-intersection v0.2.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= github.com/yashtewari/glob-intersection v0.2.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok=
github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M=
github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
github.com/zenazn/pkcs7pad v0.0.0-20170308005700-253a5b1f0e03 h1:m1h+vudopHsI67FPT9MOncyndWhTcdUoBtI1R1uajGY= github.com/zenazn/pkcs7pad v0.0.0-20170308005700-253a5b1f0e03 h1:m1h+vudopHsI67FPT9MOncyndWhTcdUoBtI1R1uajGY=
github.com/zenazn/pkcs7pad v0.0.0-20170308005700-253a5b1f0e03/go.mod h1:8sheVFH84v3PCyFY/O02mIgSQY9I6wMYPWsq7mDnEZY= github.com/zenazn/pkcs7pad v0.0.0-20170308005700-253a5b1f0e03/go.mod h1:8sheVFH84v3PCyFY/O02mIgSQY9I6wMYPWsq7mDnEZY=
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=

BIN
schemas/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,32 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "cancel",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"cancel"
]
}
},
"required": [
"action"
]
}
]
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,43 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "confirm",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"confirm"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"order": {
"$ref": "definitions.json#/$defs/Order"
}
},
"required": [
"order"
]
}
},
"required": [
"message",
"context"
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,43 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "init",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"init"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"order": {
"$ref": "./definitions.json#/$defs/Order"
}
},
"required": [
"order"
]
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,46 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_cancel",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"on_cancel"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"order": {
"$ref": "./definitions.json#/$defs/Order"
}
},
"required": [
"order"
]
},
"error": {
"$ref": "./definitions.json#/$defs/Error"
}
},
"required": [
"context",
"message"
]
}

View File

@@ -0,0 +1,46 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_confirm",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"on_confirm"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"order": {
"$ref": "./definitions.json#/$defs/Order"
}
},
"required": [
"order"
]
},
"error": {
"$ref": "./definitions.json#/$defs/Error"
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,46 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_init",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"on_init"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"order": {
"$ref": "./definitions.json#/$defs/Order"
}
},
"required": [
"order"
]
},
"error": {
"$ref": "./definitions.json#/$defs/Error"
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,47 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_rating",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"on_rating"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"properties": {
"feedback_form": {
"description": "A feedback form to allow the user to provide additional information on the rating provided",
"allOf": [
{
"$ref": "./definitions.json#/$defs/XInput"
}
]
}
}
},
"error": {
"$ref": "./definitions.json#/$defs/Error"
}
},
"required": [
"context",
"message"
]
}

View File

@@ -0,0 +1,46 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_search",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"on_search"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"catalog": {
"$ref": "./definitions.json#/$defs/Catalog"
}
},
"required": [
"catalog"
]
},
"error": {
"$ref": "./definitions.json#/$defs/Error"
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,43 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_select",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"on_select"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"order": {
"$ref": "./definitions.json#/$defs/Order"
}
}
},
"error": {
"$ref": "./definitions.json#/$defs/Error"
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,46 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_status",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"on_status"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"order": {
"$ref": "./definitions.json#/$defs/Order"
}
},
"required": [
"order"
]
},
"error": {
"$ref": "./definitions.json#/$defs/Error"
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,42 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_support",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"on_support"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"properties": {
"support": {
"$ref": "./definitions.json#/$defs/Support"
}
}
},
"error": {
"$ref": "./definitions.json#/$defs/Error"
}
},
"required": [
"context",
"message"
]
}

View File

@@ -0,0 +1,46 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_track",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"on_track"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"tracking": {
"$ref": "./definitions.json#/$defs/Tracking"
}
},
"required": [
"tracking"
]
},
"error": {
"$ref": "./definitions.json#/$defs/Error"
}
},
"required": [
"context",
"message"
]
}

View File

@@ -0,0 +1,46 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_update",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"on_update"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"order": {
"$ref": "./definitions.json#/$defs/Order"
}
},
"required": [
"order"
]
},
"error": {
"$ref": "./definitions.json#/$defs/Error"
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,42 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "rating",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"rating"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"properties": {
"ratings": {
"type": "array",
"items": {
"$ref": "./definitions.json#/$defs/Rating"
}
}
}
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,7 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "Response",
"type": "object",
"properties": {},
"required": []
}

View File

@@ -0,0 +1,26 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "search",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
}
]
},
"message": {
"properties": {
"intent": {
"$ref": "./definitions.json#/$defs/Intent"
}
},
"type": "object"
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,43 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "select",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"select"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"order": {
"$ref": "./definitions.json#/$defs/Order"
}
},
"required": [
"order"
]
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,43 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "status",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"status"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"ref_id": {
"$ref": "./definitions.json#/$defs/Order"
},
"order_id": {
"$ref": "./definitions.json#/$defs/Order"
}
}
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,39 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "support",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"support"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"properties": {
"support": {
"$ref": "./definitions.json#/$defs/Support"
}
}
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,47 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "track",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"track"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"order_id": {
"$ref": "./definitions.json#/$defs/Order"
},
"callback_url": {
"type": "string",
"format": "uri"
}
},
"required": [
"order_id"
]
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,53 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "update",
"type": "object",
"properties": {
"context": {
"allOf": [
{
"$ref": "./definitions.json#/$defs/Context"
},
{
"type": "object",
"properties": {
"action": {
"enum": [
"update"
]
}
},
"required": [
"action"
]
}
]
},
"message": {
"type": "object",
"additionalProperties": false,
"properties": {
"update_target": {
"description": "Comma separated values of order objects being updated. For example: ```\"update_target\":\"item,billing,fulfillment\"```",
"type": "string"
},
"order": {
"description": "Updated order object",
"allOf": [
{
"$ref": "./definitions.json#/$defs/Order"
}
]
}
},
"required": [
"update_target",
"order"
]
}
},
"required": [
"message",
"context"
]
}

View File

@@ -0,0 +1,40 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "cancel",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/cancel.json#"
},
{
"$ref": "init.json#/allOf/2"
},
{
"properties": {
"message": {
"type": "object",
"properties": {
"order_id": {
"type": "string"
},
"descriptor": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": ["SOFT_CANCEL", "CONFIRM_CANCEL"]
}
},
"required": ["code"]
},
"cancellation_reason_id": {
"type": "string",
"pattern": "^[0-9]+$"
}
},
"required": ["order_id", "descriptor", "cancellation_reason_id"]
}
}
}
]
}

View File

@@ -0,0 +1,463 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "confirm",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/confirm.json#"
},
{
"$ref": "./init.json#/allOf/1"
},
{
"$ref": "./init.json#/allOf/2"
},
{
"allOf": [
{
"$ref": "./on_select.json#/allOf/5"
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"fulfillments": {
"type": "array",
"items": {
"allOf": [
{
"properties": {
"customer": {
"properties": {
"contact": {
"properties": {
"phone": {
"type": "string",
"pattern": "^\\+?[1-9]\\d{1,14}$"
}
},
"required": [
"phone"
]
},
"person": {
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
]
}
},
"required": [
"contact",
"person"
]
}
},
"required": [
"customer"
]
}
]
}
}
}
}
}
}
}
}
]
},
{
"allOf": [
{
"$ref": "./init.json#/allOf/7"
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"payments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"amount": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,2})?$"
}
}
},
"type": {
"type": "string",
"enum": [
"PRE-ORDER",
"ON-FULFILLMENT",
"POST-FULFILLMENT"
]
},
"status": {
"type": "string",
"enum": [
"PAID",
"NOT-PAID"
]
},
"collected_by": {
"type": "string",
"enum": [
"BAP",
"BPP"
]
},
"tags": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"uniqueItems": true,
"items": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": [
"SETTLEMENT_TERMS",
"BUYER_FINDER_FEES"
]
}
},
"allOf": [
{
"if": {
"properties": {
"descriptor": {
"properties": {
"code": {
"const": "SETTLEMENT_TERMS"
}
}
}
}
},
"then": {
"properties": {
"list": {
"allOf": [
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "STATIC_TERMS"
}
}
},
"value": {
"type": "string",
"format": "uri"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_BASIS"
}
}
},
"value": {
"type": "string",
"enum": [
"DELIVERY"
]
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_WINDOW"
}
}
},
"value": {
"type": "string"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "DELAY_INTEREST"
}
}
},
"value": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,2})?$"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_TYPE"
}
}
},
"value": {
"type": "string",
"enum": [
"upi",
"neft",
"rtgs",
"UPI",
"NEFT",
"RTGS"
]
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_AMOUNT"
}
}
},
"value": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,2})?$"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "MANDATORY_ARBITRATION"
}
}
},
"value": {
"type": "string",
"enum": [
"true",
"false"
]
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "COURT_JURISDICTION"
}
}
},
"value": {
"type": "string"
}
}
}
}
]
}
}
}
},
{
"if": {
"properties": {
"descriptor": {
"properties": {
"code": {
"const": "BUYER_FINDER_FEES"
}
}
}
}
},
"then": {
"properties": {
"list": {
"type": "array",
"items": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"enum": [
"BUYER_FINDER_FEES_PERCENTAGE"
]
}
}
},
"value": {
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
}
}
}
}
}
}
}
]
}
},
"required": [
"descriptor"
]
}
}
},
"required": [
"type",
"status",
"collected_by",
"tags"
]
}
}
}
}
}
}
}
}
]
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"payments": {
"type": "array",
"items": {
"properties": {
"type": {
"type": "string"
},
"params": {
"type": "object",
"properties": {
"transaction_id": {
"type": "string"
}
}
}
},
"required": [
"type"
],
"allOf": [
{
"if": {
"properties": {
"type": {
"const": "PRE-ORDER"
}
}
},
"then": {
"properties": {
"params": {
"required": [
"transaction_id"
]
}
}
}
}
]
}
}
},
"required": [
"payments"
]
}
}
}
}
},
{
"properties": {
"message": {
"properties": {
"order": {
"not": {
"required": [
"id"
]
}
}
}
}
}
}
]
}

View File

@@ -0,0 +1,550 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "init",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/init.json#"
},
{
"properties": {
"context": {
"type": "object",
"allOf": [
{
"$ref": "./search.json#/properties/context/allOf/0"
},
{
"required": [
"bpp_id",
"bpp_uri"
]
}
]
}
}
},
{
"properties": {
"message": {
"properties": {
"order": {
"type": "object",
"properties": {
"provider": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
]
}
}
},
"required": [
"provider",
"items"
]
}
}
}
}
},
{
"$ref": "./confirm.json#/allOf/4"
},
{
"$ref": "./on_select.json#/allOf/7"
},
{
"properties": {
"message": {
"properties": {
"order": {
"required": [
"fulfillments"
]
}
}
}
}
},
{
"properties": {
"message": {
"type": "object",
"properties": {
"order": {
"type": "object",
"properties": {
"payments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"params": {
"type": "object",
"properties": {
"amount": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,2})?$"
}
}
},
"type": {
"type": "string",
"enum": [
"PRE-ORDER",
"ON-FULFILLMENT",
"POST-FULFILLMENT"
]
},
"status": {
"type": "string",
"enum": [
"PAID",
"NOT-PAID"
]
},
"collected_by": {
"type": "string",
"enum": [
"BAP",
"BPP"
]
},
"tags": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"uniqueItems": true,
"items": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": [
"SETTLEMENT_TERMS",
"BUYER_FINDER_FEES"
]
}
}
}
},
"required": [
"descriptor"
]
}
}
},
"required": [
"type",
"status",
"collected_by",
"tags"
],
"allOf": [
{
"if": {
"allOf": [
{
"properties": {
"collected_by": {
"const": "BAP"
}
}
},
{
"properties": {
"type": {
"const": "PRE-ORDER"
}
}
}
]
},
"then": {
"properties": {
"tags": {
"items": {
"if": {
"properties": {
"descriptor": {
"properties": {
"code": {
"const": "SETTLEMENT_TERMS"
}
}
}
}
},
"then": {
"properties": {
"list": {
"allOf": [
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "STATIC_TERMS"
}
}
},
"value": {
"type": "string",
"format": "uri"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_BASIS"
}
}
},
"value": {
"type": "string",
"enum": [
"DELIVERY"
]
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_WINDOW"
}
}
},
"value": {
"type": "string"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "DELAY_INTEREST"
}
}
},
"value": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,2})?$"
}
}
}
}
]
}
}
}
}
}
}
}
},
{
"if": {
"allOf": [
{
"properties": {
"collected_by": {
"const": "BPP"
}
}
},
{
"properties": {
"type": {
"const": "PRE-ORDER"
}
}
}
]
},
"then": {
"properties": {
"tags": {
"items": {
"if": {
"properties": {
"descriptor": {
"properties": {
"code": {
"const": "SETTLEMENT_TERMS"
}
}
}
}
},
"then": {
"properties": {
"list": {
"allOf": [
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "STATIC_TERMS"
}
}
},
"value": {
"type": "string",
"format": "uri"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_BASIS"
}
}
},
"value": {
"type": "string",
"enum": [
"DELIVERY"
]
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_WINDOW"
}
}
},
"value": {
"type": "string"
}
}
}
}
]
}
}
}
}
}
}
}
},
{
"if": {
"allOf": [
{
"properties": {
"collected_by": {
"const": "BPP"
}
}
},
{
"properties": {
"type": {
"const": "ON-FULFILLMENT"
}
}
}
]
},
"then": {
"properties": {
"tags": {
"items": {
"if": {
"properties": {
"descriptor": {
"properties": {
"code": {
"const": "SETTLEMENT_TERMS"
}
}
}
}
},
"then": {
"properties": {
"list": {
"allOf": [
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "STATIC_TERMS"
}
}
},
"value": {
"type": "string",
"format": "uri"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_BASIS"
}
}
},
"value": {
"type": "string",
"enum": [
"DELIVERY"
]
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_WINDOW"
}
}
},
"value": {
"type": "string"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "DELAY_INTEREST"
}
}
},
"value": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,2})?$"
}
}
}
}
]
}
}
}
}
}
}
}
}
]
}
}
}
}
}
}
}
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"billing": {
"required": [
"name"
]
}
},
"required": [
"billing"
]
}
}
}
}
}
]
}

View File

@@ -0,0 +1,13 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_cancel",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/on_cancel.json#"
},
{
"$ref": "./init.json#/allOf/1"
}
]
}

View File

@@ -0,0 +1,314 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_confirm",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/on_confirm.json#"
},
{
"$ref": "./init.json#/allOf/1"
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"provider": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": ["id"]
}
},
"required": ["provider"]
}
}
}
}
},
{
"$ref": "./confirm.json#/allOf/5"
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"items": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"fulfillment_ids": {
"minItems": 1
},
"location_ids": {
"minItems": 1
}
},
"required": ["fulfillment_ids", "location_ids"]
}
}
}
}
}
}
}
},
{
"$ref": "./confirm.json#/allOf/4/allOf/1"
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"fulfillments": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["DELIVERY"]
}
},
"required": ["type"]
}
}
}
}
}
}
}
},
{
"allOf": [
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"quote": {
"type": "object",
"properties": {
"price": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"value": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,2})?$"
}
},
"required": ["currency", "value"]
},
"breakup": {
"type": "array",
"items": {
"type": "object",
"properties": {
"price": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"value": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,2})?$"
}
},
"required": ["currency", "value"]
},
"title": {
"type": "string",
"enum": [
"BASE_FARE",
"DISTANCE_FARE",
"TAX",
"DISCOUNT",
"WAITING_CHARGE"
]
}
},
"required": ["price", "title"]
}
}
},
"required": ["price", "breakup"]
}
},
"required": ["quote"]
}
}
}
}
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"quote": {
"properties": {
"breakup": {
"allOf": [
{
"contains": {
"type": "object",
"properties": {
"title": {
"const": "BASE_FARE"
},
"price": {
"type": "object",
"properties": {
"value": {
"type": "string"
}
},
"required": ["value"]
}
},
"required": ["title", "price"]
}
},
{
"contains": {
"type": "object",
"properties": {
"title": {
"const": "DISTANCE_FARE"
},
"price": {
"type": "object",
"properties": {
"value": {
"type": "string"
}
},
"required": ["value"]
}
},
"required": ["title", "price"]
}
}
]
}
}
}
}
}
}
}
}
}
]
},
{
"$ref": "./confirm.json#/allOf/6"
},
{
"allOf": [
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"cancellation_terms": {
"type": "array",
"items": {
"type": "object",
"properties": {
"fulfillment_state": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": [
"RIDE_ASSIGNED",
"RIDE_ENROUTE_PICKUP",
"RIDE_ARRIVED_PICKUP",
"RIDE_STARTED"
]
}
},
"required": ["code"]
}
},
"required": ["descriptor"]
},
"cancellation_fee": {
"oneOf": [
{
"type": "object",
"properties": {
"percentage": {
"type": "string",
"pattern": "^(100(\\.0{1,2})?|([0-9]{1,2})(\\.\\d{1,2})?)$"
}
},
"required": ["percentage"]
},
{
"type": "object",
"properties": {
"amount": {
"type": "object",
"properties": {
"value": {
"type": "string",
"pattern": "^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)$"
},
"currency": {
"type": "string"
}
},
"required": ["currency", "value"]
}
},
"required": ["amount"]
}
]
}
},
"required": ["fulfillment_state", "cancellation_fee"]
}
}
},
"required": ["cancellation_terms"]
}
}
}
}
},
{
"properties": {
"message": {
"type": "object"
}
},
"required": ["message"]
}
]
}
]
}

View File

@@ -0,0 +1,317 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_init",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/on_init.json#"
},
{
"$ref": "./init.json#/allOf/1"
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"provider": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": ["id"]
}
},
"required": ["provider"]
}
}
}
}
},
{
"$ref": "./confirm.json#/allOf/5"
},
{
"$ref": "./on_select.json#/allOf/6"
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"items": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"fulfillment_ids": {
"minItems": 1
},
"location_ids": {
"minItems": 1
}
},
"required": ["fulfillment_ids", "location_ids"]
}
}
}
}
}
}
}
},
{
"$ref": "./confirm.json#/allOf/4/allOf/1"
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"fulfillments": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["DELIVERY"]
}
},
"required": ["type"]
}
}
}
}
}
}
}
},
{
"allOf": [
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"quote": {
"type": "object",
"properties": {
"price": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"value": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,2})?$"
}
},
"required": ["currency", "value"]
},
"breakup": {
"type": "array",
"items": {
"type": "object",
"properties": {
"price": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"value": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,2})?$"
}
},
"required": ["currency", "value"]
},
"title": {
"type": "string",
"enum": [
"BASE_FARE",
"DISTANCE_FARE",
"TAX",
"DISCOUNT",
"WAITING_CHARGE"
]
}
},
"required": ["price", "title"]
}
}
},
"required": ["price", "breakup"]
}
},
"required": ["quote"]
}
}
}
}
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"quote": {
"properties": {
"breakup": {
"allOf": [
{
"contains": {
"type": "object",
"properties": {
"title": {
"const": "BASE_FARE"
},
"price": {
"type": "object",
"properties": {
"value": {
"type": "string"
}
},
"required": ["value"]
}
},
"required": ["title", "price"]
}
},
{
"contains": {
"type": "object",
"properties": {
"title": {
"const": "DISTANCE_FARE"
},
"price": {
"type": "object",
"properties": {
"value": {
"type": "string"
}
},
"required": ["value"]
}
},
"required": ["title", "price"]
}
}
]
}
}
}
}
}
}
}
}
}
]
},
{
"$ref": "./confirm.json#/allOf/6"
},
{
"allOf": [
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"cancellation_terms": {
"type": "array",
"items": {
"type": "object",
"properties": {
"fulfillment_state": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": [
"RIDE_ASSIGNED",
"RIDE_ENROUTE_PICKUP",
"RIDE_ARRIVED_PICKUP",
"RIDE_STARTED"
]
}
},
"required": ["code"]
}
},
"required": ["descriptor"]
},
"cancellation_fee": {
"oneOf": [
{
"type": "object",
"properties": {
"percentage": {
"type": "string",
"pattern": "^(100(\\.0{1,2})?|([0-9]{1,2})(\\.\\d{1,2})?)$"
}
},
"required": ["percentage"]
},
{
"type": "object",
"properties": {
"amount": {
"type": "object",
"properties": {
"value": {
"type": "string",
"pattern": "^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)$"
},
"currency": {
"type": "string"
}
},
"required": ["currency", "value"]
}
},
"required": ["amount"]
}
]
}
},
"required": ["fulfillment_state", "cancellation_fee"]
}
}
},
"required": ["cancellation_terms"]
}
}
}
}
},
{
"properties": {
"message": {
"type": "object"
}
},
"required": ["message"]
}
]
}
]
}

View File

@@ -0,0 +1,13 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_rating",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/on_rating.json#"
},
{
"$ref": "./init.json#/allOf/1"
}
]
}

View File

@@ -0,0 +1,644 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_search",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/on_search.json#"
},
{
"$ref": "./init.json#/allOf/1"
},
{
"properties": {
"message": {
"type": "object",
"properties": {
"catalog": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"images": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
}
},
"required": [
"name"
]
},
"providers": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"descriptor": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"images": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
}
},
"required": [
"name"
]
},
"fulfillments": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"vehicle": {
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"AUTO_RICKSHAW",
"CAB"
]
}
},
"required": [
"category"
]
},
"type": {
"type": "string",
"enum": [
"DELIVERY"
]
}
},
"required": [
"id",
"vehicle",
"type"
]
}
},
"items": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"code": {
"type": "string",
"enum": [
"RIDE"
]
}
},
"required": [
"code"
]
},
"price": {
"type": "object",
"properties": {
"value": {
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
}
},
"required": [
"value",
"currency"
]
},
"fulfillment_ids": {
"type": "array",
"minItems": 1
},
"payment_ids": {
"type": "array",
"minItems": 1
}
},
"required": [
"id",
"descriptor",
"price",
"fulfillment_ids"
]
}
}
},
"required": [
"id",
"items",
"fulfillments"
]
}
}
},
"required": [
"providers"
]
}
},
"required": [
"catalog"
]
}
}
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"payments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"collected_by": {
"type": "string",
"enum": [
"BAP",
"BPP"
]
},
"tags": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"uniqueItems": true,
"items": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": [
"SETTLEMENT_TERMS",
"BUYER_FINDER_FEES"
]
}
}
}
},
"required": [
"descriptor"
]
}
}
},
"required": [
"collected_by",
"tags"
],
"allOf": [
{
"if": {
"allOf": [
{
"properties": {
"collected_by": {
"const": "BAP"
}
}
}
]
},
"then": {
"properties": {
"tags": {
"items": {
"if": {
"properties": {
"descriptor": {
"properties": {
"code": {
"const": "SETTLEMENT_TERMS"
}
}
}
}
},
"then": {
"properties": {
"list": {
"allOf": [
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "STATIC_TERMS"
}
}
},
"value": {
"type": "string",
"format": "uri"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_TYPE"
}
}
},
"value": {
"type": "string",
"enum": [
"upi",
"neft",
"rtgs",
"UPI",
"NEFT",
"RTGS"
]
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "DELAY_INTEREST"
}
}
},
"value": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,2})?$"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "MANDATORY_ARBITRATION"
}
}
},
"value": {
"type": "string",
"enum": [
"true",
"false"
]
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "COURT_JURISDICTION"
}
}
},
"value": {
"type": "string"
}
}
}
}
]
}
}
}
}
}
}
}
},
{
"if": {
"allOf": [
{
"properties": {
"collected_by": {
"const": "BPP"
}
}
}
]
},
"then": {
"properties": {
"tags": {
"items": {
"if": {
"properties": {
"descriptor": {
"properties": {
"code": {
"const": "SETTLEMENT_TERMS"
}
}
}
}
},
"then": {
"properties": {
"list": {
"allOf": [
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "STATIC_TERMS"
}
}
},
"value": {
"type": "string",
"format": "uri"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_TYPE"
}
}
},
"value": {
"type": "string",
"enum": [
"upi",
"neft",
"rtgs",
"UPI",
"NEFT",
"RTGS"
]
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "DELAY_INTEREST"
}
}
},
"value": {
"type": "string",
"pattern": "^\\d+(\\.\\d{1,2})?$"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "MANDATORY_ARBITRATION"
}
}
},
"value": {
"type": "string",
"enum": [
"true",
"false"
]
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "COURT_JURISDICTION"
}
}
},
"value": {
"type": "string"
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_BASIS"
}
}
},
"value": {
"type": "string",
"enum": [
"DELIVERY"
]
}
}
}
},
{
"contains": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"const": "SETTLEMENT_WINDOW"
}
}
},
"value": {
"type": "string"
}
}
}
}
]
}
}
}
}
}
}
}
}
]
}
}
},
"required": [
"payments"
]
}
}
}
}
},
{
"properties": {
"message": {
"properties": {
"catalog": {
"properties": {
"providers": {
"items": {
"properties": {
"fulfillments": {
"items": {
"properties": {
"stops": {
"allOf": [
{
"contains": {
"type": "object",
"properties": {
"location": {
"type": "object",
"properties": {
"gps": {
"type": "string"
}
},
"required": [
"gps"
]
},
"type": {
"const": "START"
}
},
"required": [
"location",
"type"
]
}
},
{
"contains": {
"type": "object",
"properties": {
"location": {
"type": "object",
"properties": {
"gps": {
"type": "string"
}
},
"required": [
"gps"
]
},
"type": {
"const": "END"
}
},
"required": [
"location",
"type"
]
}
}
]
}
},
"required": [
"stops"
]
}
}
}
}
}
}
}
}
}
}
}
]
}

View File

@@ -0,0 +1,227 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_select",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/on_select.json#"
},
{
"$ref": "./init.json#/allOf/1"
},
{
"$ref": "./on_init.json#/allOf/2"
},
{
"$ref": "./on_init.json#/allOf/5"
},
{
"allOf": [
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"fulfillments": {
"type": "array",
"minItems": 1,
"items": {
"required": ["id"]
}
}
},
"required": ["fulfillments"]
}
}
}
}
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"fulfillments": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"state": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": [
"RIDE_ASSIGNED",
"RIDE_ENROUTE_PICKUP",
"RIDE_ARRIVED_PICKUP",
"RIDE_STARTED",
"RIDE_ENDED",
"RIDE_CANCELLED"
]
}
},
"required": ["code"]
}
}
}
}
}
}
}
}
}
}
}
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"fulfillments": {
"type": "array",
"minItems": 1,
"items": {
"properties": {
"stops": {
"items": {
"properties": {
"authorization": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["OTP"]
},
"token": {
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?$"
}
},
"required": ["type", "token"]
}
}
}
}
}
}
}
}
}
}
}
}
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"fulfillments": {
"items": {
"properties": {
"stops": {
"type": "array",
"minItems": 2,
"items": {
"type": "object",
"properties": {
"location": {
"type": "object",
"properties": {
"gps": { "type": "string" }
},
"required": ["gps"]
},
"type": {
"enum": ["START", "END"]
}
},
"required": ["location", "type"]
}
}
},
"required": ["stops"]
}
}
}
}
}
}
}
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"fulfillments": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"vehicle": {
"properties": {
"category": {
"type": "string",
"enum": ["AUTO_RICKSHAW", "CAB"]
}
},
"required": ["category"]
}
},
"required": ["vehicle"]
}
}
},
"required": ["fulfillments"]
}
}
}
}
}
]
},
{
"$ref": "./on_init.json#/allOf/7"
},
{
"properties": {
"message": {
"properties": {
"order": {
"properties": {
"fulfillments": {
"type": "array",
"items": {
"allOf": [
{
"not": {
"required": ["agent"]
}
}
]
}
}
}
}
}
}
}
},
{
"$ref": "./on_init.json#/allOf/8"
}
]
}

View File

@@ -0,0 +1,13 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_status",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/on_status.json#"
},
{
"$ref": "./init.json#/allOf/1"
}
]
}

View File

@@ -0,0 +1,13 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_support",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/on_support.json#"
},
{
"$ref": "./init.json#/allOf/1"
}
]
}

View File

@@ -0,0 +1,13 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_track",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/on_track.json#"
},
{
"$ref": "./init.json#/allOf/1"
}
]
}

View File

@@ -0,0 +1,13 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "on_update",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/on_update.json#"
},
{
"$ref": "./init.json#/allOf/1"
}
]
}

View File

@@ -0,0 +1,13 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "rating",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/rating.json#"
},
{
"$ref": "./init.json#/allOf/1"
}
]
}

View File

@@ -0,0 +1,146 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "search",
"allOf": [
{ "$ref": "../../core/v1.1.0/search.json#" }
],
"type": "object",
"properties": {
"context": {
"type": "object",
"allOf": [
{
"properties": {
"action": {
"type": "string"
},
"location": {
"type": "object",
"properties": {
"city": {
"type": "object",
"properties": {
"code": { "type": "string" }
},
"required": ["code"]
},
"country": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": ["IND"]
}
},
"required": ["code"]
}
},
"required": ["city", "country"]
},
"bap_id": {
"type": "string"
},
"bpp_id": {
"type": "string"
},
"ttl": {
"type": "string",
"format": "duration"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
},
"required": [
"location",
"domain",
"action",
"message_id",
"transaction_id",
"timestamp",
"bap_id",
"bap_uri",
"ttl"
]
}
]
},
"message": {
"type": "object",
"properties": {
"intent": {
"allOf": [
{
"type": "object",
"properties": {
"payment": {
"type": "object",
"properties": {
"collected_by": {
"type": "string",
"enum": ["BPP", "BAP"]
},
"tags": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"uniqueItems": true,
"items": {
"type": "object",
"properties": {
"descriptor": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": ["SETTLEMENT_TERMS", "BUYER_FINDER_FEES"]
}
}
}
},
"required": ["descriptor"]
}
}
},
"required": ["collected_by"]
},
"fulfillment": {
"type": "object",
"properties": {
"stops": {
"type": "array",
"items": {
"type": "object",
"properties": {
"location": {
"type": "object",
"properties": {
"gps": { "type": "string" }
},
"required": ["gps"]
},
"type": {
"type": "string",
"enum": ["START", "END"]
}
},
"required": ["location", "type"]
},
"minItems": 2
}
},
"required": ["stops"]
}
},
"required": ["payment", "fulfillment"]
}
]
}
},
"required": ["intent"]
}
},
"required": ["context", "message"]
}

View File

@@ -0,0 +1,16 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "select",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/select.json#"
},
{
"$ref": "./init.json#/allOf/1"
},
{
"$ref": "./init.json#/allOf/2"
}
]
}

View File

@@ -0,0 +1,26 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "status",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/status.json#"
},
{
"$ref": "./init.json#/allOf/1"
},
{
"properties": {
"message": {
"type": "object",
"properties": {
"order_id": {
"type": "string"
}
},
"required": ["order_id"]
}
}
}
]
}

View File

@@ -0,0 +1,13 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "support",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/support.json#"
},
{
"$ref": "./init.json#/allOf/1"
}
]
}

View File

@@ -0,0 +1,13 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "track",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/track.json#"
},
{
"$ref": "./init.json#/allOf/1"
}
]
}

View File

@@ -0,0 +1,35 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "update",
"type": "object",
"allOf": [
{
"$ref": "../../core/v1.1.0/update.json#"
},
{
"$ref": "./init.json#/allOf/1"
},
{
"properties": {
"message": {
"type": "object",
"properties": {
"order": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": ["id"]
},
"update_target": {
"type": "string",
"pattern": "^[^,]+(,[^,]+)*$"
}
}
}
}
}
]
}