ADN Open CIS
Сообщество программистов Autodesk в СНГ

11/02/2016

Интерфейс OData

OData это стандарт, который определяет лучшие практики для создания и использования API данных. Он построен на основных протоколах, таких как HTTP, и общепринятых методиках, таких как REST. Результатом является унифицированный способ реализации полнофункциональных API данных.

AutoCAD I/O API использует OData V4.0.

Чтобы получить метаданные OData, используйте следующий запрос:

GET autocad.io/us-east/v2/$metadata

Пример ответа:

Код - XML: [Выделить]
  1. HTTP/1.1 200 OK
  2. Cache-Control: no-cache
  3. Content-Type: application/xml
  4. Date: Tue, 19 May 2015 18:28:32 GMT
  5. Expires: -1
  6. Pragma: no-cache
  7. Server: Microsoft-IIS/8.5
  8. X-AspNet-Version: 4.0.30319
  9. X-Powered-By: ASP.NET
  10. Content-Length: 10768
  11. Connection: keep-alive
  12.  
  13. <?xml version="1.0" encoding="utf-8"?>
  14. <edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
  15.         <edmx:DataServices>
  16.                 <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="ACES.Models">
  17.                         <EntityType Name="Activity">
  18.                         <Key>
  19.                                 <PropertyRef Name="Id"/>
  20.                         </Key>
  21.                         <Property Name="AppPackages" Type="Collection(Edm.String)"/>
  22.                         <Property Name="HostApplication" Type="Edm.String"/>
  23.                         <Property Name="RequiredEngineVersion" Type="Edm.String" Nullable="false"/>
  24.                         <Property Name="Parameters" Type="ACES.Models.Parameters" Nullable="false"/>
  25.                         <Property Name="Instruction" Type="ACES.Models.Instruction" Nullable="false"/>
  26.                         <Property Name="AllowedChildProcesses" Type="Collection(ACES.Models.AllowedChildProcess)"/>
  27.                         <Property Name="IsPublic" Type="Edm.Boolean" Nullable="false"/>
  28.                         <Property Name="Version" Type="Edm.Int32" Nullable="false"/>
  29.                         <Property Name="Timestamp" Type="Edm.DateTimeOffset" Nullable="false"/>
  30.                         <Property Name="Description" Type="Edm.String"/>
  31.                         <Property Name="Id" Type="Edm.String" Nullable="false"/>
  32.                 </EntityType>
  33.                 <EntityType Name="AppPackage">
  34.                         <Key>
  35.                                 <PropertyRef Name="Id"/>
  36.                         </Key>
  37.                         <Property Name="References" Type="Collection(Edm.String)"/>
  38.                         <Property Name="Resource" Type="Edm.String"/>
  39.                         <Property Name="RequiredEngineVersion" Type="Edm.String"/>
  40.                         <Property Name="IsPublic" Type="Edm.Boolean" Nullable="false"/>
  41.                         <Property Name="IsObjectEnabler" Type="Edm.Boolean" Nullable="false"/>
  42.                         <Property Name="Version" Type="Edm.Int32" Nullable="false"/>
  43.                         <Property Name="Timestamp" Type="Edm.DateTimeOffset" Nullable="false"/>
  44.                         <Property Name="Description" Type="Edm.String"/>
  45.                         <Property Name="Id" Type="Edm.String" Nullable="false"/>
  46.                 </EntityType>
  47.                 <EntityType Name="WorkItem">
  48.                         <Key>
  49.                                 <PropertyRef Name="Id"/>
  50.                         </Key>
  51.                         <Property Name="ActivityId" Type="Edm.String"/>
  52.                         <Property Name="Arguments" Type="ACES.Models.Arguments" Nullable="false"/>
  53.                         <Property Name="Status" Type="ACES.Models.ExecutionStatus"/>
  54.                         <Property Name="StatusDetails" Type="ACES.Models.StatusDetails"/>
  55.                         <Property Name="AvailabilityZone" Type="ACES.Models.DataAffinity"/>
  56.                         <Property Name="TimeQueued" Type="Edm.DateTimeOffset"/>
  57.                         <Property Name="TimeInputTransferStarted" Type="Edm.DateTimeOffset"/>
  58.                         <Property Name="TimeScriptStarted" Type="Edm.DateTimeOffset"/>
  59.                         <Property Name="TimeScriptEnded" Type="Edm.DateTimeOffset"/>
  60.                         <Property Name="TimeOutputTransferEnded" Type="Edm.DateTimeOffset"/>
  61.                         <Property Name="BytesTranferredIn" Type="Edm.Int64"/>
  62.                         <Property Name="BytesTranferredOut" Type="Edm.Int64"/>
  63.                         <Property Name="Timestamp" Type="Edm.DateTimeOffset" Nullable="false"/>
  64.                         <Property Name="Id" Type="Edm.String" Nullable="false"/>
  65.                 </EntityType>
  66.                 <EntityType Name="Engine">
  67.                         <Key>
  68.                                 <PropertyRef Name="Id"/>
  69.                         </Key>
  70.                         <Property Name="Resource" Type="Edm.String"/>
  71.                         <Property Name="IsPublic" Type="Edm.Boolean" Nullable="false"/>
  72.                         <Property Name="Version" Type="Edm.Int32" Nullable="false"/>
  73.                         <Property Name="Timestamp" Type="Edm.DateTimeOffset" Nullable="false"/>
  74.                         <Property Name="Description" Type="Edm.String"/>
  75.                         <Property Name="Id" Type="Edm.String" Nullable="false"/>
  76.                 </EntityType>
  77.                 <EntityType Name="RemoteFile">
  78.                         <Key>
  79.                                 <PropertyRef Name="Resource"/>
  80.                         </Key>
  81.                         <Property Name="UserId" Type="Edm.String"/>
  82.                         <Property Name="Version" Type="Edm.Int32" Nullable="false"/>
  83.                         <Property Name="Resource" Type="Edm.String" Nullable="false"/>
  84.                         <Property Name="LocalFileName" Type="Edm.String" Nullable="false"/>
  85.                         <NavigationProperty Name="RelatedFiles" Type="Collection(ACES.Models.RemoteFile)"/>
  86.                 </EntityType>
  87.                 <ComplexType Name="Parameters">
  88.                         <Property Name="InputParameters" Type="Collection(ACES.Models.Parameter)"/>
  89.                         <Property Name="OutputParameters" Type="Collection(ACES.Models.Parameter)"/>
  90.                 </ComplexType>
  91.                 <ComplexType Name="Arguments">
  92.                         <Property Name="InputArguments" Type="Collection(ACES.Models.Argument)"/>
  93.                         <Property Name="OutputArguments" Type="Collection(ACES.Models.Argument)"/>
  94.                 </ComplexType>
  95.                 <ComplexType Name="Parameter">
  96.                         <Property Name="Name" Type="Edm.String" Nullable="false"/>
  97.                         <Property Name="LocalFileName" Type="Edm.String" Nullable="false"/>
  98.                         <Property Name="Optional" Type="Edm.Boolean"/>
  99.                 </ComplexType>
  100.                 <ComplexType Name="Argument">
  101.                         <Property Name="Resource" Type="Edm.String"/>
  102.                         <Property Name="Name" Type="Edm.String" Nullable="false"/>
  103.                         <Property Name="Headers" Type="Collection(ACES.Models.Header)"/>
  104.                         <Property Name="ResourceKind" Type="ACES.Models.ResourceKind"/>
  105.                         <Property Name="StorageProvider" Type="ACES.Models.StorageProvider"/>
  106.                         <Property Name="HttpVerb" Type="ACES.Models.HttpVerbType"/>
  107.                 </ComplexType>
  108.                 <ComplexType Name="Instruction">
  109.                         <Property Name="CommandLineParameters" Type="Edm.String"/>
  110.                         <Property Name="Script" Type="Edm.String"/>
  111.                 </ComplexType>
  112.                 <ComplexType Name="AllowedChildProcess">
  113.                         <Property Name="Name" Type="Edm.String"/>
  114.                         <Property Name="RelativePath" Type="Edm.String"/>
  115.                 </ComplexType>
  116.                 <ComplexType Name="Header">
  117.                         <Property Name="Name" Type="Edm.String"/>
  118.                         <Property Name="Value" Type="Edm.String"/>
  119.                 </ComplexType>
  120.                 <ComplexType Name="BoundArgument" BaseType="ACES.Models.Argument">
  121.                         <Property Name="LocalFileName" Type="Edm.String"/>
  122.                         <Property Name="Optional" Type="Edm.Boolean"/>
  123.                 </ComplexType>
  124.                 <ComplexType Name="StatusDetails">
  125.                         <Property Name="Report" Type="Edm.String"/>
  126.                 </ComplexType>
  127.                 <EnumType Name="ResourceKind">
  128.                         <Member Name="Simple" Value="0"/>
  129.                         <Member Name="EtransmitPackage" Value="1"/>
  130.                         <Member Name="RemoteFileResource" Value="2"/>
  131.                         <Member Name="ZipPackage" Value="3"/>
  132.                         <Member Name="Embedded" Value="4"/>
  133.                         <Member Name="Variadic" Value="5"/>
  134.                 </EnumType>
  135.                 <EnumType Name="StorageProvider">
  136.                         <Member Name="A360" Value="0"/>
  137.                         <Member Name="Generic" Value="1"/>
  138.                 </EnumType>
  139.                 <EnumType Name="HttpVerbType">
  140.                         <Member Name="GET" Value="0"/>
  141.                         <Member Name="PUT" Value="1"/>
  142.                         <Member Name="POST" Value="2"/>
  143.                         <Member Name="HEAD" Value="3"/>
  144.                 </EnumType>
  145.                 <EnumType Name="ExecutionStatus">
  146.                         <Member Name="Pending" Value="0"/>
  147.                         <Member Name="InProgress" Value="1"/>
  148.                         <Member Name="Succeeded" Value="256"/>
  149.                         <Member Name="FailedEnvironmentSetup" Value="-5"/>
  150.                         <Member Name="FailedUpload" Value="-4"/>
  151.                         <Member Name="FailedMissingOutput" Value="-3"/>
  152.                         <Member Name="FailedExecution" Value="-2"/>
  153.                         <Member Name="FailedDownload" Value="-1"/>
  154.                 </EnumType>
  155.                 <EnumType Name="DataAffinity">
  156.                         <Member Name="AmazonNorthernVirginia" Value="0"/>
  157.                         <Member Name="AzureWestUS" Value="1"/>
  158.                 </EnumType>
  159.         </Schema>
  160.         <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Operations">
  161.                 <Function Name="GetPublisher" IsBound="true">
  162.                         <Parameter Name="bindingParameter" Type="ACES.Models.AppPackage"/>
  163.                         <ReturnType Type="Edm.String" Unicode="false"/>
  164.                 </Function>
  165.                 <Function Name="GetUploadUrl" IsBound="true">
  166.                         <Parameter Name="bindingParameter" Type="Collection(ACES.Models.AppPackage)"/>
  167.                         <ReturnType Type="Edm.String" Unicode="false"/>
  168.                 </Function>
  169.                 <Function Name="GetVersions" IsBound="true">
  170.                         <Parameter Name="bindingParameter" Type="ACES.Models.AppPackage"/>
  171.                         <ReturnType Type="Collection(ACES.Models.AppPackage)"/>
  172.                 </Function>
  173.                 <Action Name="SetVersion" IsBound="true">
  174.                         <Parameter Name="bindingParameter" Type="ACES.Models.AppPackage"/>
  175.                         <Parameter Name="Version" Type="Edm.Int32" Nullable="false"/>
  176.                 </Action>
  177.                 <Action Name="DeleteHistory" IsBound="true">
  178.                         <Parameter Name="bindingParameter" Type="ACES.Models.AppPackage"/>
  179.                 </Action>
  180.                 <Function Name="GetPublisher" IsBound="true">
  181.                         <Parameter Name="bindingParameter" Type="ACES.Models.Activity"/>
  182.                         <ReturnType Type="Edm.String" Unicode="false"/>
  183.                 </Function>
  184.                 <Function Name="GetVersions" IsBound="true">
  185.                         <Parameter Name="bindingParameter" Type="ACES.Models.Activity"/>
  186.                         <ReturnType Type="Collection(ACES.Models.Activity)"/>
  187.                 </Function>
  188.                 <Action Name="SetVersion" IsBound="true">
  189.                         <Parameter Name="bindingParameter" Type="ACES.Models.Activity"/>
  190.                         <Parameter Name="Version" Type="Edm.Int32" Nullable="false"/>
  191.                 </Action>
  192.                 <Action Name="DeleteHistory" IsBound="true">
  193.                         <Parameter Name="bindingParameter" Type="ACES.Models.Activity"/>
  194.                 </Action>
  195.                 <Function Name="GetPublisher" IsBound="true">
  196.                         <Parameter Name="bindingParameter" Type="ACES.Models.Engine"/>
  197.                         <ReturnType Type="Edm.String" Unicode="false"/>
  198.                 </Function>
  199.                 <Function Name="GetUploadUrl" IsBound="true">
  200.                         <Parameter Name="bindingParameter" Type="Collection(ACES.Models.Engine)"/>
  201.                         <ReturnType Type="Edm.String" Unicode="false"/>
  202.                 </Function>
  203.                 <Function Name="GetVersions" IsBound="true">
  204.                         <Parameter Name="bindingParameter" Type="ACES.Models.Engine"/>
  205.                         <ReturnType Type="Collection(ACES.Models.Engine)"/>
  206.                 </Function>
  207.                 <Action Name="SetVersion" IsBound="true">
  208.                         <Parameter Name="bindingParameter" Type="ACES.Models.Engine"/>
  209.                         <Parameter Name="Version" Type="Edm.Int32" Nullable="false"/>
  210.                 </Action>
  211.                 <Action Name="DeleteHistory" IsBound="true">
  212.                         <Parameter Name="bindingParameter" Type="ACES.Models.Engine"/>
  213.                 </Action>
  214.                 <EntityContainer Name="Container">
  215.                         <EntitySet Name="Activities" EntityType="ACES.Models.Activity"/>
  216.                         <EntitySet Name="AppPackages" EntityType="ACES.Models.AppPackage"/>
  217.                         <EntitySet Name="WorkItems" EntityType="ACES.Models.WorkItem"/>
  218.                         <EntitySet Name="Engines" EntityType="ACES.Models.Engine"/>
  219.                 </EntityContainer>
  220.                 </Schema>
  221.         </edmx:DataServices>
  222. </edmx:Edmx>

Детали этих метаданных - это всё классы и функции AutoCAD V2 API. И они могут быть использованы только клиентами OData 4.0. Пожалуйста, проверьте наши примеры на C# и Java на предмет новых способов доступа к V2 API.

Источник: https://developer.autodesk.com/api/autocadio/#odata-interface

Автор перевода: Дмитрий Емельянов

Обсуждение: http://adn-cis.org/forum/index.php?topic=4293

Опубликовано 11.02.2016