Projet

Général

Profil

Hub Rdv ANTS » ants-hub-push-schema.json

Benjamin Dauvergne, 01 avril 2023 18:39

 
1
{
2
    "$id": "https://entrouvert.com/ants-hub-push-schema.json",
3
    "$schema": "https://json-schema.org/draft/2020-12/schema",
4
    "title": "Format du endpoint PUSH pour le HUB ANTS",
5
    "type": "object",
6
    "properties": {
7
        "collectivites": {
8
            "type": "array",
9
            "items": {
10
                "$ref": "#/$defs/collectivite"
11
            }
12
        }
13
    },
14
    "$defs": {
15
        "collectivite": {
16
            "type": "object",
17
            "required": [
18
                "id"
19
            ],
20
            "properties": {
21
                "id": {
22
                    "type": "string",
23
                    "description": "Identifiant de la collectivit\u00e9 \u00e0 la source (chrono)"
24
                },
25
                "nom": {
26
                    "type": "string"
27
                },
28
                "url": {
29
                    "description": "URL g\u00e9n\u00e9rale du portail de la collectivit\u00e9",
30
                    "$ref": "#/$defs/url"
31
                },
32
                "logo_url": {
33
                    "description": "URL du logo de la collectivit\u00e9",
34
                    "$ref": "#/$defs/url"
35
                },
36
                "rdv_url": {
37
                    "$ref": "#/$defs/url",
38
                    "description": "URL g\u00e9n\u00e9rique pour la prise de rendez-vous pour la collectivit\u00e9. Remplace toutes les autres URLs our le URLs pour les lieux si elles sont absentes."
39
                },
40
                "gestion_url": {
41
                    "$ref": "#/$defs/url",
42
                    "description": "URL g\u00e9n\u00e9rique pour la gestion des rendez-vous pour la collectivit\u00e9. Remplace toutes les autres URLs de gestion si elles sont absentes."
43
                },
44
                "annulation_url": {
45
                    "$ref": "#/$defs/url",
46
                    "description": "URL g\u00e9n\u00e9rique pour l'annulation des rendez-vous pour la collectivit\u00e9. Remplace toutes les autres URLs d'annulation si elles sont absentes."
47
                },
48
                "types-rdv": {
49
                    "type": "array",
50
                    "items": {
51
                        "$ref": "#/$defs/type-rdv"
52
                    }
53
                },
54
                "lieux": {
55
                    "type": "array",
56
                    "items": {
57
                        "$ref": "#/$defs/lieu"
58
                    }
59
                }
60
            }
61
        },
62
        "type-rdv": {
63
            "type": "object",
64
            "required": [
65
                "nom"
66
            ],
67
            "properties": {
68
                "nom": {
69
                    "enum": [
70
                        "CNI",
71
                        "PASSPORT",
72
                        "CNI-PASSPORT",
73
                        "RETRIEVAL"
74
                    ]
75
                }
76
            }
77
        },
78
        "lieu": {
79
            "type": "object",
80
            "required": [
81
                "id"
82
            ],
83
            "dependentRequired": {
84
                "latitude": [
85
                    "longitude"
86
                ],
87
                "longitude": [
88
                    "latitude"
89
                ]
90
            },
91
            "properties": {
92
                "id": {
93
                    "type": "string",
94
                    "description": "Identifiant du lieu \u00e0 la source (chrono)"
95
                },
96
                "nom": {
97
                    "type": "string"
98
                },
99
                "numero_rue": {
100
                    "type": "string"
101
                },
102
                "code_postal": {
103
                    "type": "string"
104
                },
105
                "ville": {
106
                    "type": "string"
107
                },
108
                "longitude": {
109
                    "type": "number"
110
                },
111
                "latitude": {
112
                    "type": "number"
113
                },
114
                "url": {
115
                    "description": "URL g\u00e9n\u00e9rale du portail de la collectivit\u00e9 pour ce lieu",
116
                    "$ref": "#/$defs/url"
117
                },
118
                "rdv_url": {
119
                    "$ref": "#/$defs/url",
120
                    "description": "URL g\u00e9n\u00e9rique pour la prise de rendez-vous pour la collectivit\u00e9. Remplace toutes les autres URLs si elles sont absentes"
121
                },
122
                "gestion_url": {
123
                    "$ref": "#/$defs/url",
124
                    "description": "URL g\u00e9n\u00e9rique pour la gestion des rendez-vous pour la collectivit\u00e9. Remplace toutes les autres URLs de gestion si elles sont absentes"
125
                },
126
                "annulation_url": {
127
                    "$ref": "#/$defs/url",
128
                    "description": "URL g\u00e9n\u00e9rique pour l'annulation des rendez-vous pour la collectivit\u00e9. Remplace toutes les autres URLs d'annulation si elles sont absentes"
129
                },
130
                "types-rdv": {
131
                    "type": "array",
132
                    "items": {
133
                        "$ref": "#/$defs/type-rdv"
134
                    }
135
                },
136
                "plage": {
137
                    "type": "array",
138
                    "items": {
139
                        "$ref": "#/$defs/plage"
140
                    }
141
                },
142
                "rdv": {
143
                    "type": "array",
144
                    "items": {
145
                        "$ref": "#/$defs/rdv"
146
                    }
147
                }
148
            }
149
        },
150
        "plage": {
151
            "type": "object",
152
            "required": [
153
                "date",
154
                "heure_debut",
155
                "heure_fin",
156
                "duree"
157
            ],
158
            "description": "Plage de rendez-vous disponibles",
159
            "properties": {
160
                "date": {
161
                    "type": "string",
162
                    "format": "date",
163
                    "description": "Date de la plage, format YYYY-MM-DD"
164
                },
165
                "heure_debut": {
166
                    "type": "string",
167
                    "format": "time",
168
                    "description": "Heure de d\u00e9but de la plage format, HH:MM"
169
                },
170
                "heure_fin": {
171
                    "type": "string",
172
                    "format": "time",
173
                    "description": "Heure de fin de la plage format, HH:MM"
174
                },
175
                "duree": {
176
                    "type": "number",
177
                    "description": "Dur\u00e9e des rendez-vous en minutes enti\u00e8res"
178
                }
179
            }
180
        },
181
        "rdv": {
182
            "type": "object",
183
            "required": [
184
                "id",
185
                "date"
186
            ],
187
            "properties": {
188
                "id": {
189
                    "type": "string",
190
                    "description": "Identifiant de la pr\u00e9-demande ANTS"
191
                },
192
                "date": {
193
                    "type": "string",
194
                    "format": "datetime",
195
                    "description": "Date du rendez-vous format YYYY-MM-DDTHH:MM:SS"
196
                },
197
                "gestion_url": {
198
                    "description": "URL optionnelle de gestion du rendez-vous, si absent l'URL du lieu ou de la collectivit\u00e9 est utilis\u00e9e",
199
                    "$ref": "#/$defs/url"
200
                },
201
                "annulation_url": {
202
                    "description": "URL optionnelle d'annulation du rendez-vous, si absent l'URL du lieu ou de la collectivit\u00e9 est utilis\u00e9e",
203
                    "$ref": "#/$defs/url"
204
                }
205
            }
206
        }
207
    }
208
}